API?
API는 우리가 프로그래밍을 하다보면 수도 없이 접하는 개념 중 하나이다.
당장, 웹 서비스 개발에서만 봐도 구글 API, 카카오 API 등 다양한 API들이 존재하고 이름에서 알 수 있듯이 다양한 플랫폼에서 API를 제공해준다.
나도 이 개념을 상당히 많이 접해보고 사용했는데 이 포스트에서는 이 API라는 것에 대해서 정리해보려고 한다.
사람들이 API를 쉽게 설명하려고 예시를 들 때 "가게"를 자주 언급한다.
가게의 서비스 과정을 보면 API의 개념을 쉽게 이해할 수 있을 것이다.
우리는 흔히 밥을 먹으러 어떤 가게에 찾아가면 메뉴판에서 메뉴를 고른 뒤 음식을 주문한다.
그렇다면, 우리는 점원에게 (혹은 키오스를 통해) 주문을 하고 주문은 접수되어 요리사에게 전달된다.
요리사는 주문된 요리를 만들고 만들어진 요리는 점원에게 전달되어 손님에게 제공한다.
이 과정은 API의 동작과정을 그대로 보여주고있다.
이를 살짝 바꿔 API로 바라보자.
한 프로그램이 다른 프로그램의 데이터가 필요하여 이를 요청하였다.
반대편 프로그램은 요청된 데이터를 요청한 프로그램에게 제공한다.
그 과정 속에서 API는 서로 상호작용하는 것을 도와주는 매개체 역할을 한다.
그렇다면 API에 대해서 자세히 알아보자.
API란
API란 Application Programming Interface의 약자이다.
위키백과에서는 API를 다음과 같이 정의한다.
응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
여기서 말하는 인터페이스는 사이에서 상호 간의 소통을 위해 만들어진 매개체나 프로토콜(규약)을 의미한다.
우리가 흔히 들어본 유저 인터페이스는 사용자와 시스템간에서 사용되는 인터페이스라면 API는 프로그램과 프로그램간에서 사용되는 인터페이스이다.
쉽게 정리하자면, 한 응용 프로그램에서 반대편에서 제공하는 데이터, 기능을 활용하기 위해 만들어놓은 규약이라는 것이다.
그래서 우리는 이 규약만 따른다면 반대편 응용 프로그램에서 해당 데이터와 기능을 어떻게 구현했고 어떻게 이루어졌는지 알 필요없이 사용할 수 있다.
그렇다면 왜 우리는 API를 사용하는 것일까?
API를 사용함에 따라 오는 장점에 대해 알아보자.
API 장점
우리가 API를 활용함으로써 얻을 수 있는 장점에 대해서 간단히 알아보자.
- 개발 비용과 시간 단축
- 다른 응용 프로그램에서 제공하는 데이터, 기능을 가져다쓰는데 있어 원리나 방식을 모르더라도 쉽게 가져와 사용할 수 있기 때문에 엄청난 이점이라고 할 수 있다.
- 변경으로 인한 파급력 감소
- API는 위에서 언급했다싶이 하나의 프로토콜이자 규약이므로 내부에서 시스템이 변경되더라도 해당 규약에 맞게 데이터나 기능을 제공한다면 클라이언트 입장에서는 변경으로 인한 어떠한 파급도 받지 않을 것이다.
- 협업의 증진
- 개발자들이 애플리케이션 코드를 작성하는 방법을 하나의 규약으로 표준화함으로써 간결하고 빠르게 처리할 수 있다.
- 비지니스 기회 창출 및 비지니스 확대
- 누구나 API를 활용하여 새로운 애플리케이션을 구축할 수 있기 때문에 애플리케이션의 생태계가 확장되고 이는 곧 비지니스 기회의 창출이자 비지니스의 확대라고 볼 수 있다.
API 종류
API는 공개 범위에 따라 3가지로 나뉜다.
- Private API
- API를 내부에서만 사용할 수 있다.
- API 통제 권한이 기업에 존재한다.
- Partner API
- API를 특정 비지니스 파트너와 공유한다.
- API의 품질 저하 우려 없이 부가 수익 창출이 가능하다.
- Public API(Open API)
- API가 모두에게 제공된다.
- 제 3자가 혁신적인 애플리케이션의 개발이 가능하다.
참고문헌
https://ko.wikipedia.org/wiki/API
https://dev-dain.tistory.com/50
https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces
'Study' 카테고리의 다른 글
프로세스(Process), 스레드(Thread) (0) | 2021.11.22 |
---|---|
OAuth 2.0, JWT (0) | 2021.11.14 |
REST, REST API (0) | 2021.10.19 |
함수형 프로그래밍 (0) | 2021.10.17 |
TDD, BDD, DDD (1) | 2021.10.01 |