용어 정리
● API (Application Programming Interface)
어플리케이션을 만들기 위한 하위 함수의 정의(subroutine definition), 프로토콜, 도구들의 집합이다.
● SDK (System Development Kit)
소프트웨어 개발 도구 모음
SDK에는 API, 라이브러리, 문서를 포함하여 프로그램을 개발하는데 필요한 보조 프로그램들이 포함되어있다.
● Framework
Software library의 모음이며, 어플리케이션의 틀과 구조를 결정하고 개발자의 코드를 제어한다.
● Software Library
반복적인 코드 작성을 줄이기 위해 자주 사용되는, 재사용이 필요한 기능들을 구현하여 모아둔 것이다.
API 란?
API는 일반적으로 다양한 요소들 간의 명확한 통신 방법들의 집합이다.
좋은 API는 마치 모든 빌딩 블록들을 제공하여 프로그래머가 쌓기만 해서 프로그램을 쉽게 만들수 있게 해주는 역할을 한다.
API는 웹, 운영체제, DB, 컴퓨터하드웨어, library 를 위해 존재하기도 한다.
[출처 : https://en.wikipedia.org/wiki/Application_programming_interface]
● API의 릴리즈 정책
- private : 회사 내부에서만 사용가능한 API
- partner : 특정 혹은 지정된 회사에서만 사용할 수 있는 API
- public : 모든사람들이 사용할 수 있는 openAPI
● API 프로토콜의 종류
- SOAP (Simple Object Access Protocol)
· HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜
· SOA (Service Oriented Architecture) 를 따르는 웹 서비스 디자인 표준
- REST (Representational State Transfer)
· 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식
· 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스
· ROA (Resource Oriented Architecture) 를 따르는 웹 서비스 디자인 표준
[참고 : https://ko.wikipedia.org/wiki/REST, https://mygumi.tistory.com/55,
http://blog.naver.com/PostView.nhn?blogId=islove8587&logNo=220431962636]
● API 아키텍처의 종류
- SOA (Service-Oriented Architecture)
- 마이크로서비스 아키텍처
API vs Library
Library가 어떤 기능에 대한 구현체라면, API는 "예상되어지는 행동"이다.
Library는 자주 사용하는 비슷한 기능들을 구현하여 묶어놓은 것이고
API는 해당 library 혹은 여러 library의 묶음에 대해 해당 기능을 호출하여 사용할 수 있는 방법(interface)을 말한다.
Framework vs Library
Framework 는 흔히들 Library의 집합이라고 하지만 꼭 그런것만은 아니다.
Framework의 가장 큰 특징은 사용자의 코드를 호출하는 주체라는 것이다.
Library, API 의 경우 사용자의 코드가 이를 호출하지만,
Framework 의 경우 사용자의 코드를 호출하게 된다.
[그림 출처 : https://www.youtube.com/watch?v=D_MO9vIRBcA]
예를 들자면, Spring Framework 를 사용하여 Web Application (쉬운말로 웹페이지)을 만들때
사용자는 Framework에 포함된 혹은 외부에서 가져온 Library를 이용하여 코드를 작성하고
Framework는 사용자가 작성한 코드(컨트롤러, 서블릿핸들러, html 등)를 호출하여 Web Application을 동작시킨다.
또한, 사용자는 Library를 이용하여 자유롭게 코드를 작성할 수 있지만
Framework 아래에서는 Framework가 실행할 수 있게 정해진 규친대로 코드를 작성해야 한다.
출처
https://en.wikipedia.org/wiki/Application_programming_interface
https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces
https://www.youtube.com/watch?v=D_MO9vIRBcA
'IT' 카테고리의 다른 글
RFC(Request for Comments) 란? (0) | 2019.03.07 |
---|