본문 바로가기

Web Development/CommonSense

[WEB] API & Library & Framework

공부를 한지 두달가량 흘러가고 있고,

공부하면서 수없이 많이 들어보았던 것 같은데 아직도 듣기만 하면 헷깔리는..

API, Library, Framework ... 뭔가요 대체 ㅋㅋ

하나하나 배우면 알겠는데 이렇게 묶어놓으니 또 모르겠단 말이죠?

그래서 한꺼번에 정리하려고합니다 ! 아주 간단하게 !

 

API란?

- Application Programming Interface의 약자죠!? 사전적으로 정의내려보면 다음과 같습니다.

"응용 프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스"

(From. 위키백과)

 

어렵죠? 뭔 말인지 모르겠어요 ㅎㅎ

또 다른 곳에서는 이런식으로 정의하고 있어요.

- "API는 코드와 코드가 소통하기 위해 만들어진 것." (Nomad Coder)

 

작은 예시로,

우리가 TV 전원버튼을 눌러요~ 그럼 그냥 TV가 켜지잖아요? 왜 그럴까요?

원래 그런걸까요? 내부적으로는 뭔가 동작하는 메커니즘에 따라서 잘 짜여져 있는 무언가가,

버튼 하나로 사용자가 이용하기 편리하게 구현해 놓은 것이죠.

이런것을 우리는 API라고 합니다.

 

잘 구현해놓은 각각의 기능들 이라고 볼 수 있겠네요?!

 

제 블로그를 이용하시는 분들은 대부분 암호화폐에 관심이 있으실 것 같아서 가져왔습니다.

tradingview라는 사이트를 이용하면, 쉽게 대부분의 차트에 접근할 수 있습니다.

그런데 우리가 이 차트를 직접 구현할 수 있을까요? 언젠간 ~ 할 수는 있겠지만 상당히 오래걸리겠죠?

 

그래서 TradingView의 차트제공 API를 이용하면, 쉽게 내 사이트에 차트를 적용시켜 보여줄 수 있는 것이죠.

Trading View API

위 API를 이용하면, 아래 차트를 받아올 수 있습니다. 뿐만아니라, 다른 서비스도 살펴볼까요? 

다음은 네이버 지도 API 입니다. 네이버지도 직접 만들 수 있나요? 아마 몇년 걸리면 할 수야 있겠죠?..?

네이버 지도 API

이외에도 채팅, 검색, 결제 등 다양한 API들이 존재합니다.

이렇게 API는 무언가 잘 구현되어진 것 들을 이용해 내 프로그램에 적용시켜 시간을 세이브시켜주는 도구 정도로 이해하면 좋을까요? ㅎㅎ..

 

 

Libarary & Framework

라이브러리는 다음과 같이 정의됩니다.

"응용 프로그램 개발을 위해 필요한 기능 혹은 함수 등을 모아 놓은 소프트웨어"

그리고 라이브러리의 가장 큰 특징을 뽑자면,

'독립성', '능동적' 이라는 점입니다.

대표적으로는 CSS & Javascript를 쉽게 구현하게 도와주는 Jquery, Bootstrap 등이 있습니다.

 

그리고 프레임워크는 무엇일까요?

"응용 프로그램 개발을 효과적으로 하기 위해 제공된 소프트웨어 환경"

이렇게 정의되고 있습니다.

큰 특징은 라이브러리와 반대로,

'종속적', '수동적' 이라는 점입니다.

대표적으로는 자바의 Spring , 파이썬의 Django 그리고 Nodejs의 Express 등이 여기에 해당됩니다.

 

API VS Library VS Framework

- API는 뭔가 잘 완성된 코드가 있는데, 그걸 떼오고 싶을 때 활용하는 공공의 툴이라고나 할까요?ㅎㅎ

 

- 라이브러리는 내가 필요할 때 혹은, 내가 원할 때 이용할 수 있는 도서관의 책 같은 느낌입니다. 따라서, 이해하고 활용하는데 있어서 쉽게 접근할 수 있습니다.

 

- 반대로 프레임워크는 사용을 시작했으면 해당 프레임워크의 모든 규칙에 따라서 잘 따라 만들어야 하는 것으로 또다른 언어와 비슷한 느낌이에요. 이해하고 익숙해지는데 상당히 오랜시간이 걸리게 됩니다.

 

'Web Development > CommonSense' 카테고리의 다른 글

[AL&DS] 버블정렬  (0) 2022.11.06
[AL&DS] 선형검색, 이진검색  (0) 2022.11.06
[Network] IP & 공유기 (Router) & NAT  (0) 2020.07.25
[8장] 정보보안  (0) 2020.07.13
[7장] 네트워크와 인터넷  (0) 2020.07.12