API란?
API는 Application Programming Interface의 줄임말로 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 매커니즘이다.
API의 맥락에서 Application은 고유한 기능을 가진 모든 소프트웨어를 나타낸다.
Interface는 두 애플리케이션 간의 서비스 계약이다. 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다.
API의 작동
일반적으로 클라이언트(Client)와 서버(Server) 측면에서 설명된다. 요청을 보내는 애플리케이션을 클라이언트, 요청에 응답하는 애플리케이션을 서버라고 한다.
ex) 날씨 앱
핸드폰의 날씨 앱을 이용하여 날씨를 확인하는 경우, 기상청의 소프트웨어 시스템에 일일 기상 정보가 들어있고, 핸드폰의 날씨 앱은 API를 통해 이 시스템과 통신하여 핸드폰에 매일 최선 정보를 업데이트한다.
이 과정에서 핸드폰 -> 클라이언트, 기상청 소프트웨어 -> 서버가 되는 것이다.
API의 생성 시기와 생성 이유에 따라 네 가지 방식으로 작동한다.
1. SOAP API (Simple Object Access Protocol)
보안, 메세지 전송에 있어서 많은 표준들이 정해져있다.
클라이언트와 서버가 오로지 XML로 메세지를 교환한다.
보안, 트랜젝션, ACID(원자성, 일관성, 고립성, 지속성)을 준수해야 하는 보다 종합적인 기능이 필요할 때 적합한 방식
2. RPC API (Remote Procedure Call)
클라이언트는 서버에서 원격 함수(메서드 또는 프로시저)를 직접적으로 호출한다.
일반적으로 서버에서 작업 결과가 필요한 원격 함수를 호출하는 데 사용된다.복잡한 계산이 필요하거나 프로세스를 클라이언트에 숨긴 채 서버에서 원격 프로시저를 트리거하려는 경우에 사용할 수 있다.
3. Websocket API
Json 객체를 사용하여 데이터를 전송한다. 클라이언트와 서버간의 양뱡향 통신을 지원한다. 서버에 연결된 클라이언트에 콜백 메세지를 전송할 수 있다.
양방향 통신이 가능한 점을 활용해 실시간 스트리밍, 채팅, 게임과 같이 즉각적으로 정보를 주고받아야 할 경우 많이 사용된다.
4. REST API (Representational State Tranfer)
오늘날 웹에서 가장 많이 사용되고 유연한 API.
클라이언트가 서버에 요청을 데이터로 전송한다. 서버가 이 클라이언트의 입력을 사용하여 내부 함수를 실행하고 결과값을 클라이언트에 반환한다.
서버 데이터에 엑세스하는 데 사용할 수 있는 Get, Post, Put, Delete 등의 함수가 존재한다.
일반적으로 서버의 데이터 객체에 대한 생성, 읽기, 업데이트 및 삭제(CRUD) 작업을 수행하는 데 사용된다. 따라서 REST API는 서버 데이터와 데이터 구조를 균일하게 노출해야 하는 경우에 적합히디.
출처 : 아마존
이미지 출처 : SOAP 아키텍처,RPC 아키텍처, Websocket 아키텍처, REST 아키텍처