API란
Application Programming Interface (API)는
서로 다른 S/W Application이 source code 수준에서 통신할 수 있도록 하는 Protocol 및 definition으로 구성된 Interface임.
- 즉, API는 여러 S/W Application들이 서로 원활하게 상호 작용할 수 있도록 도와주는 souce code 수준의 inteferace임.
- API는 일반적으로 서로 다른 S/W Application들이 어떻게 통신할 수 있는지를 지정하는 규칙, 즉 Protocol을 정의하고 있으며, 이는 교환 가능한 Data type 및 통신이 이루어지기 위해 충족되어야하는 기타 조건이나 요구사항을 정의하는 것을 포함함.
API는 protocol을 가르키지, 해당 protocol의 구현물을 가르키진 않음.
API의 구현물이 바로 Library라고 할 수 있으며 특정 library를 공부한다는 애기는 해당 library가 구현한 API를 이해하는 것이라고 볼 수 있음.
2023.01.18 - [Programming] - [Programming] Library vs. Framework
API는 오늘날 S/W 개발의 필수 요소로서,
개발자는 API를 통해 서로 다른 소프트웨어 구성 요소, 서비스 및 도구를 결합하여 보다 복잡한 Application을 쉽게 구현할 수 있음.
- 동시에 API는 Application의 각 구성 요소들 내부 세부 구현 방식에 상관없이 Application 기능을 구축할 수 있게 해줌으로서
개발 프로세스를 단순화시켜준다.
(마치 Application 개발자가 해당 시스템의 HW에 대한 이해 없이 OS와 상호작용하는 방법(e.g. system call)만 알고 있으면 되는 것과 유사함) - API를 사용하면 개발자는 쉽게 다른 소프트웨어 구성 요소 및 서비스를 Application에 통합할 수 있으며 이는 개발 시간과 비용을 절약할 수 있음.
Remote API: RESTful API
컴퓨터가 개발된 초기에는 대부분
하나의 장비 내(local host)에 동작하는 소프트웨어 컴포넌트들만이 상호작용을 했고 때문에
API는 OS 구성요소와 application 구성요소 간에 정의되는 것이 일반적이었음.
하지만 최근에는,
Web API라고도 불리는 RESTful API의 사용이 증가하고 있음.
웹 기반 API를 구축하는 데 사용되는 RESTful API는 간단하고 확장 가능하며 사용하기 쉽도록 설계되어,
이를 만들기 위한 다양한 library와 framework가 경쟁적으로 등장하고 있는 추세임.
API의 이점
다음은 API의 이점을 요약한 것임
- API는 개발자가 "다른 소프트웨어 구성 요소 및 서비스"를 "개발하는 Application"에 쉽게 통합할 수 있도록 도와줌.
- API는 개발자가 프로그램 구성 요소가 서로 상호 작용하는 방법에만 집중하게 해줌으로서,
각각의 세부 구현 정보에 대한 고려를 최소화하면서 Application의 핵심 기능을 구축할 수 있도록 해줌.
이를 통해 API는 개발자가 더 유연하고 확장 가능하며 적응성이 있는 복잡한 Application을 더 빠르고 쉽게 구축할 수 있게 함.
Application Binary Interface (ABI)
반면, Application Binary Interface (ABI)는
특정 아키텍처에서 두 개 이상의 소프트웨어 간의 low level binary interface를 정의함.
ABI가 정의하고 있는 것들은 크게 다음과 같음.
- Application의 내부 구성요소들이 자체적으로 상호 작용하는 방법,
- Application이 Kenrel과 상호 작용하는 방법, 그리고
- Application이 Library와 상호 작용하는 방법
API가 sorce code level에서 정의되는 것과 달리 ABI는 binary간의 interface임.
http://ds31x.blogspot.com/2017/03/application-binary-interface-abi.html?q=API
'Programming' 카테고리의 다른 글
[Python] Python Interactive Shell (or Python Interactive Prompt) (0) | 2023.06.09 |
---|---|
[Python] Python Script File 실행해보기 (0) | 2023.06.09 |
[Python] range and enumerate (0) | 2023.06.07 |
[Python] Iterable and Iterator, plus Generator (1) | 2023.06.07 |
[Python] List Comprehension (0) | 2023.06.06 |