API의 종류

Heechan Kang·2024년 1월 4일
post-thumbnail

REST (REpresentational State Transfer)

  • 2000년 Roy Fielding의 박사학위 논문에서 소개된 아키텍처 스타일.
  • HTTP를 기반으로 함.
  • Server-side의 데이터를 Client-side에서 쉽게 사용하는 것을 목표로 함.
  • JSON, XML등의 형식으로 데이터를 주고 받음.
  • 아래의 6가지 조건을 준수함
    • 통일된 인터페이스
    • 무상태성
    • 캐싱 지원
    • 클라이언트-서버 아키텍처
    • 계층화 시스템
    • 클라이언트 측에서 실행될 수 있는 코드 제공
  • 장점
    1. GET, POST, PUT, DELETE등의 HTTP 메소드를 사용하여 실행되므로 다방면에 효율적으로 활용될 수 있음.
    2. 클라이언트와 서버를 완전히 분리하여 서로간의 의존성을 줄이고 확장성을 가질 수 있게 함.
    3. 캐싱이 용이하여 Public API 구현에 효과적임.
    4. JSON, XML 등 다양한 데이터 형식을 지원하므로 다양한 애플리케이션에서 사용하기 용이함.
  • 단점
    1. 때때로 비대한 메타데이터(헤더, 기타 사용자가 정의한 추가정보 등)로 인해 지연시간이 증가하고 대역폭을 낭비할 수 있음.
    2. 언더, 오버페칭 문제
      • 언더페칭(과소수집): 사용자가 필요한 정보보다 적은 정보를 받는 것. 이로인해 추가적인 요청이 필요하게 됨.
      • 오버페칭(과다수집): 사용자가 필요한 정보보다 많은 정보를 받는 것. 이로인해 불필요한 데이터를 받게 되고 대역폭이 낭비됨.
    3. 구조에 대한 명확한 규약이 없어서, 개발자 간에 많은 협조와 조정이 필요하고 이로인한 비용이 발생할 수 있음.

SOAP (Simple Object Access Protocol)

  • XML 기반의 메시지 교환 프로토콜.
  • 1990년대에 개발된, 상대적으로 오래 된 프로토콜.
  • 장점
    1. 언어와 플랫폼에 완전히 독립적임.
    2. 오류 처리 기능이 내장되어있음.
      • REST에서도 상태코드 등을 통해 오류 처리를 할 수 있지만, SOAP에서는 오류 처리를 위한 별도의 표준화된 형식이 존재함.
    3. 보안이 용이하여 은행, 금융 등에서 사용하기 용이함.
      • REST와 다르게, WS-Security 등의 표준을 통해 보안을 제공함.
  • 단점
    1. 표준화되어 다양한 플랫폼에서 접근성이 용이하지만, 매우 형식적이고 장황해 질 수 있음.
    2. XML을 사용하므로, JSON에 비해 무겁고 처리 속도가 느림.
    3. 상대적으로 사용자가 줄어들고 있음.

GraphQL

  • REST의 언더페칭, 오버페칭 문제를 해결하기 위해 페이스북에서 개발한 쿼리 언어.
  • 2015년에 공개됨.
  • 장점
    • API 사용자가 필요한 정보만을 요청할 수 있음.
  • 단점
    • 하나의 요청에 중첩된 데이터를 요청할 수 있으므로, 서버에 부하가 걸릴 수 있음.
    • REST와 달리, HTTP 메소드를 사용하지 않으므로, 캐싱이 어려움.

gRPC (google Remote Procedure Call)

  • g는 2015년에 구글에서 개발한 버전에 해당함.
  • 다른 곳에 있는, 다른 문맥에서 실행되는 코드를 호출하는 기술.
  • 사용자가 원격지에 있는 프로시저를 선택해서, 매개변수를 직렬화 해 전달하면, 원격지에서는 해당 프로시저를 실행하고 결과를 직렬화 해 전달함.
  • 장점
    1. HTTP/2를 기반으로 하므로, 다른 프로토콜에 비해 빠른 속도를 보여줌.
    2. 낮은 지연시간과 직렬화를 통한 빠른 데이터 전송 속도를 보여줌.
    3. Protocol Buffer를 사용하므로, 데이터를 효율적으로 압축할 수 있음.
    4. 다양한 언어를 지원하므로, 다양한 환경에서 사용하기 용이함.
  • 단점
    1. HTTP/2를 기반으로 하므로, HTTP/2를 지원하지 않는 환경에서는 사용할 수 없음.
    2. 바이너리 데이터를 사용하므로, 디버깅이 어려움.

WebSockets

  • TCP 기반의 양방향 통신 프로토콜.
  • HTTP와 달리, 클라이언트와 서버가 연결되어 양방향으로 데이터를 주고 받을 수 있음.
  • 낮은 오버헤드를 가짐.
  • 장점
    1. 실시간 양방향 통신이 가능함.
    2. 서버가 클라이언트의 요청을 기다리지 않고, 클라이언트가 서버에게 데이터를 전송할 수 있음.
  • 단점
    1. HTTP와 달리, 연결을 유지해야 하므로, 서버에 부하가 걸릴 수 있음.

출처: Postman blog - A guide to the different types of APIs

profile
안녕하세요!

0개의 댓글