API란?
API (API, Application Programming Interface)
API는 “Application Programming Interface”의 준말이며 풀이 하자면, 둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층을 의미한다.
예를 들어 A라는 컴퓨터가 요청을 하고 B라는 컴퓨터가 응답을 한다고 했을 때!!!
이때 어떻게 통신을 할것인지? 어떤 데이터를 주고 받을 것인지? 등에 대한 방법 (HTTP, HTTPS 프로토콜을 사용할지, GET, POST 등의 방식인지 등...)이 정의된 중계 계층인 것이다.
즉, "어떠한 방식으로 정보를 요청해야 하는지, 그리고 그러한 요청을 보냈을 때 어떠한 형식으로 무슨 데이터를 전달받을 수 있는지"에 대해 정리한 일종의 규격이라고 볼 수 있다.
예시로 우리가 네이버 웹툰을 이용한다고 했을 때 우리는 네이버 웹툰 서버가 어떻게 구성되었는지, DB가 어떤 구조로 되어 있는지 알지 못한다. 그러나 아래와 같은 API를 사용하여 구현된 인터페이스를 통해 웹툰 서비스를 이용할 수 있다.
API란 용어는?
API는 과거부터 발전되어온 용어로 라이브러리 및 프레임워크를 설명하는 명세서, 웹의 WEB API, WEB Socket API등을 가리키지만 현재를 기준으로 API라고 할 때 보통 WEB API를 기준으로 설명한다.
API의 장점?
1) API 제공자는 서비스의 중요한 부분을 드러내지 않아도 된다.
DB 설계 구조나 테이블 정보, 서버의 상수 값 등을 드러내지 않고 허용된 부분만 보여줄 수 있다.
2) API는 애플리케이션과 기기가 원활하게 통신할 수 있도록 한다.
여기서 애플리케이션이란 우리가 흔히 알고 있는 스마트폰 어플이나 프로그램을 말한다. API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할한다. 위의 네이버 웹툰과 같은 예시가 API를 통해 웹이라는 애플리케이션과 서버라는 기기가 데이터를 주고 받아 만들어진 결과물이라고 할 수 있다.
즉, API는 모든 접속을 표준화하기 때문에 기계/ 운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있다. 쉽게 말해, API는 범용 플러그처럼 작동한다고 볼 수 있다.
3) 개발 및 관리의 효율성
API를 사용하면, 실제로 서비스가 어떻게 구현되었는지는 몰라도 그 서비스를 그대로 가져다 사용할 수 있다.
즉, 매번 새로운 개발을 할 필요 없이 이미 만들어 놓은 기능을 그대로 "블록"처럼 가져다 쓸 수 있게 된다.
덕분에 개발 시간이 줄어들고 개발에 필요한 비용도 아낄 수 있다. 또한 API 문서만 보면 누구나 쉽게 이해할 수 있어, 협업에 용이하고 유지보수도 수월하다.
예를 들어 자사의 애플리케이션에 새롭게 추가할 기능 중 하나가, "지도" 위에 맛집을 표시하는 것이라면, "지도"를 직접 개발하는 것보다 구글이나 네이버가 제공하는 지도 API를 불러오면 된다.
요즘 기업에서 Hot한 IT 아키텍처인"마이크로 서비스 아키텍처(MSA) 또한 API를 기반으로 한다. 애플리케이션 내 다양한 기능들을 작게 나눠 독립적으로 구성한 다음, 이들을 API 형태로 연결하여 상호 통신하게 하는 구조이다.
API 종류?
1) private API
private API는 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행한다. 따라서 제 3자에게 노출되지 않는다.
2) public API
public API는 개방형 API로, 모두에게 공개된다. 누구나 제한 없이 API를 사용할 수 있는 게 특징이다.
3) partner API
partner API는 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있다. 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용된다.
번외 ) REST API란?
API를 구현하는 방식 중 가장 대표적인 방식이 바로 REST (Representational State Transfer) 방식이다. "REST 한 방식", "REST 원칙을 따르는 API"라 하여, RESTful API 혹은 REST API로 불린다.
용어 해석을 통해 이해하자면 다음과 같다.
일단 "Represent"가 "표현하다"는 뜻인 점을 염두에 두면, "요청 자체만으로 내가 뭘 원하는지 알게 하자 (= 요청 자체로 나를 "표현"하자!)"는 사상으로 등장했다고 보면 될 것 같다. 클라이언트와 서버는 고유한 url(링크)을 통해 요청과 응답을 주고받게 되는데, 이 url만 보면 어떤 요청인지 바로 추론할 수 있다.
자세한 개념을 설명하려면 너무 길어질 것 같아, 이 방식이 웹의 장점을 가장 잘 살릴 수 있는 가장 간결하고 효율적인 구현 방식이라는 점만 짚고 넘어가자.
참고)
https://aws.amazon.com/ko/what-is/api/