API(Application Programming Interface) 란?
- API는 어플리케이션 프로그래밍 인터페이스의 약자로, 간단히 말하면 두 가지 서로 다른 프로그램들간 소통이 가능하도록 하는 역할을 수행한다.
- 어플리케이션(application)이란 고유한 기능을 가진 소프트웨어를 의미한다.
- 인터페이스(interface)는 두 어플리케이션 간의 서비스적인 계약을 의미하며, 이 계약은 요청과 응답을 통해 서로 다른 두 어플리케이션이 통신하는 방법을 정의한다.
- API는 위의 계약을 통해 내부, 외부, 혹은 제 3자의 공급업자와 효과적으로 상호작용 하여 특정 가치를 창출하도록 한다.
API 아키텍처
1. API 게이트웨이(API Gateway)
- API 게이트웨이는 보안, 캐싱 및 *오스트레이션을 다루는 것으로, API의 내부 메커니즘으로 들어가는 진입로를 의미한다.
- 로드 밸런싱과 마이크로 서비스 파티션을 관리하는 역할을 수행한다.
- 웹, 모바일 등 다양한 장치에서 오는 트래픽을 필터링한다.
*오케스트레이션(Orchestration): 여러 개의 컴퓨터 시스템, 애플리케이션 및/또는 서비스를 조율하고 관리하는 것
*로드 밸런싱(Load balancing): 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법
*마이크로서비스(Microservice, Microservice Architecture또는 마이크로 서비스 아키텍처):는 단일 애플리케이션이 다수의 느슨하게 결합되고 독립적으로 배치 가능한 더 작은 구성요소 또는 서비스로 구성되는 클라우드 네이티브 아키텍처 접근 방식
2. API 포탈(API Portal)
- API 공급자와 소비자간의 다리 역할을 수행한다.
- API 포탈은 API 분석, API 문서, API 마케팅, 웹/앱 어플리케이션과의 호환성, API의 노출 방법 등을 다룬다.
3. API 작동 방식
(1) SOAP API (Simple Object Access Protocol)
- 단순 객체 접근 프로토콜의 약자
- *XML을 사용하여 클라이언트와 서버과 통신
- 과거에 많이 사용한 API로, 유연성이 떨어짐
*XML(Extensible Markup Language): 데이터를 정의하는 규칙을 제공하는 마크업 언어로, 다른 프로그래밍 언어와 달리 XML은 자체적으로 컴퓨팅 작업을 수행할 수 없으며, 대신 구조적 데이터 관리를 위해 모든 프로그래밍 언어 또는 소프트웨어를 구현할 수 있음
(2) RPC API (Remote Procedure Calls)
- 원격 프로시저 호출의 약자
- 클라이언트가 서버에서 기능을 수행한 다음 다시 서버가 응답을 클라이언트에게 보내는 방식
(3) 웹소켓 API (Websocket API)
- *JSON을 통해 데이터를 전송하는 현대적인 API 방식
- 양방향 통신이 가능하다는 것이 핵심
*JSON(JavaScript Object Notation): Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷, 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용
(4) REST API (Representational State Transfer)
- 대표 상태 전송의 약자
- 현재 가장 많이 쓰이고 있는 형식으로, 클라이언트가 서버 데이터에 접근할 수 있도록 GET, PUT, DELETE 등과 같은 일련의 함수를 정의
- 클라이언트와 서버는 데이터 전송을 위해 HTTP 프로토콜을 사용
4. API 엔드포인트 (API End-point)
- API 엔드포인트는 API 통신 시스템에서 최종 접점을 의미
URL 예시: https://maps.googleapis.com/maps/api/place/textsearch/output?parameters
- 베이스 URL(Base URL): 진입점을 나타내는 부분
https://maps.googleapis.com/maps/api/place/textsearch/output?parameters
- 엔드포인트
https://maps.googleapis.com/maps/api/place/textsearch/output?parameters
- 아웃풋: 어떤 방식으로 아웃풋 데이터를 받을지에 대한 부분으로, 일반적으로 JSON이나 XML 형식을 지님
https://maps.googleapis.com/maps/api/place/textsearch/output?parameters
- 파라미터: 전송 데이터(payload)에서 필요로 하는 것이 무엇인지 나타내는 부분
https://maps.googleapis.com/maps/api/place/textsearch/output?parameters
API의 유형
1. 사적 API(Priavte API)
- 조직 내부(in-house)에서 주로 사용되는 API이며, 때때로 제3자의 시스템과 통신하기도 함
2. 공적 API(Public API)
- 오픈 소스로 공개되어 있는 API
3. 파트너 API(Partner API)
- B2B 관계상 특정 작업이나 목적을 위해 만들어진 API로, 권한을 부여받은 사용자들만이 접근 가능함
Source
Reference