본문 바로가기
Dev Notes/BE

[Network] API와 gRPC vs REST

by yooonlp 2023. 5. 21.

API란

  • 응용 프로그래밍 인터페이스(Application Programming Interface)
  • 클라이언트의 요청을 시스템으로 보내고 시스템의 응답을 받는 다양한 종류의 인터페이스 
  • 서비스의 통신을 돕는 중재자
  • REST, SOAP, GraphQL, gRPC 등의 아키텍처 스타일로 설계

* 마이크로 서비스 아키텍처(Micro Service Architecture)란?

  • 전체 프로그램이 하나로 묶여있는 monolithic 아키텍쳐와 달리, 단일 프로그램을 각 컴포넌트 별도로 나누어 그것들의 조합으로 구축하는 방법. 
  • 각 컴포넌트는 API를 이용하여 타 서비스와 통신하며, 독립적 개발, 배포, 운영 가능
  • API Gateway를 통해 API 서버 앞 단에서 모든 API 서버들의 Endpoint를 묶어줌

 

REST (REspresentational State Transfer)

  • 사용자가 json, xml 통신을 통해 백엔드 정보에 액세스할 수 있는 클라이언트-서버 아키텍쳐
  • http 프로토콜을 사용하여 서비스에 연결하며, URI로 리소스를 선택하고 특정 작업을 선택하기 위해 GET, PUT, POST 와 같은 http 요청 메서드를 사용한다.  
  • 요청과 응답은 동작과 관련된 데이터를 포함하고, 헤더는 메타데이터를 제공해준다.

예를 들어, ID 11의 프로덕트에 대한 요청을 보내고, API가 json 포맷으로 응답하도록 한다.

GET /products/11 HTTP/1.1
Accept: application/json

다음과 같은 응답을 받을 수 있다.

HTTP/1.1 200 OK
Content-Type: application/json

{ id: 11, name: "Red Apple", sku: "reapp", price: { amount: 100, currencyCode: "KRW"  }  }

 

gRPC (google Remote Procedure Call)

  • google에서 개발한 오픈소스 RPC (RPC: 원격 컴퓨터나 프로세스에 존재하는 함수를 호출하는 데 사용하는 프로토콜)
  • 일련의 함수를 외부 클라이언트에 노출시킴으로서 서비스 간 통신을 단순화, 관리하는 오픈 소스 프로토콜
  • HTTP/2에 구축되며, 양방향 스트리밍과 TLS와 같은 기능을 활용
  • 구조화된 데이터의 serialization을 위한 매커니즘으로 protocal buffer를 사용 (REST의 json 사용과 유사) 

 

REST vs gRPC

  • REST에서는 일반적으로 JSON, XML 메세지 형식을 사용하지만, gRPC에서는 Protocal buffers를 사용한다.
  • REST에서는 메세지 페이로드가 크지만, gRPC는 작다.
  • REST는 text parsing을 하기 때문에 복잡도가 높지만, gRPC는 바이너리 구조를 사용하기 때문에 복잡도가 낮다.

 

개괄적인 내용만을 정리해보았으나, 각 아키텍처의 자세한 설명과 네트워크 용어 정리가 추후 포스팅에서 필요할 듯 하다.

 

 

참고 자료