개발을 하거나, 개발관련 강의를 듣거나 혹은 그냥 인터넷을 보다가도 API와 SDK는 자주 등장하게 된다. 들었던 내용과 쓰던 상황을 토대로 API는 이런거구나, SDK는 이런거구나 유추하며 써왔었기에 그 개념들을 한번 천천히 정리해 보려고 한다.
우리가 수의사 클리닉을 위한 모바일 앱을 만든다고 생각해보자. 이 앱은 접수원이 애완 동물이 클리닉에 들어올 때 사진을 찍을 수 있도록 하고, 앱은 시각적 인식 서비스와 통신한다(이 과정은 클라우드에서 실행된다).
<그림>
그리고 이 서비스가 동물의 이름과 파일을 반환하는 방식이다.
우리는 이과정을 어떻게 구현할수 있을까?
모바일 앱과 이 클라우드 기반 서비스간에 어떻게 통신할 수 있는 것일까?
이 과정을 도와주는 것이 바로 API 그리고 SDK이다.
API(Application Programming Interface)는 주로 통신에 관한 것이다. 즉, 나와는 다른 앱 또는 서비스와 통신 하기위한 정의 및 프로토콜의 집합체이다. 따라서 위의 예제에서 나의 앱과 클라우드상의 시각적 인식 서비스를 연결하는 다리가 바로 API인 것이다.
Communication
서비스간 통신을 도와준다.
Abstraction
복잡한 논리들을 모두 추상화함으로써 필요한 데이터에 대한 접근을 걱정할 필요가 없다. 프로세스를 단순화 시켜준다.
Standard
API를 정의하는 방법 등에 대한 것들이 업계 표준이 되어 있다. 또한 SOAP, GraphQL, REST 등과 같이 널리 사용되는 형식이 있다.
Request (위 예제를 기반으로)