본문 바로가기

Study

API

API?

API는 우리가 프로그래밍을 하다보면 수도 없이 접하는 개념 중 하나이다.

당장, 웹 서비스 개발에서만 봐도 구글 API, 카카오 API 등 다양한 API들이 존재하고 이름에서 알 수 있듯이 다양한 플랫폼에서 API를 제공해준다.

나도 이 개념을 상당히 많이 접해보고 사용했는데 이 포스트에서는 이 API라는 것에 대해서 정리해보려고 한다.

사람들이 API를 쉽게 설명하려고 예시를 들 때 "가게"를 자주 언급한다.

가게의 서비스 과정을 보면 API의 개념을 쉽게 이해할 수 있을 것이다.

우리는 흔히 밥을 먹으러 어떤 가게에 찾아가면 메뉴판에서 메뉴를 고른 뒤 음식을 주문한다.

그렇다면, 우리는 점원에게 (혹은 키오스를 통해) 주문을 하고 주문은 접수되어 요리사에게 전달된다.

요리사는 주문된 요리를 만들고 만들어진 요리는 점원에게 전달되어 손님에게 제공한다.

이 과정은 API의 동작과정을 그대로 보여주고있다.


이를 살짝 바꿔 API로 바라보자.

한 프로그램이 다른 프로그램의 데이터가 필요하여 이를 요청하였다.

반대편 프로그램은 요청된 데이터를 요청한 프로그램에게 제공한다.

그 과정 속에서 API는 서로 상호작용하는 것을 도와주는 매개체 역할을 한다.

그렇다면 API에 대해서 자세히 알아보자.

API란

APIApplication 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