gRPC

gRPC(gRPC Remote Procedure Calls)는 구글(Google)에서 개발하여 오픈소스로 공개한 고성능 원격 프로시저 호출(RPC) 프레임워크이다. 분산 컴퓨팅 환경과 마이크로서비스 아키텍처(MSA)에서 서로 다른 환경과 언어로 작성된 애플리케이션 간의 통신을 지연 시간 없이 효율적으로 처리하기 위해 설계되었다.

주요 핵심 개념 gRPC 아키텍처는 다음과 같은 핵심 기술을 기반으로 작동한다.

  1. Protocol Buffers (Protobuf) gRPC의 기본 인터페이스 정의 언어(IDL)이자 데이터 직렬화 포맷이다. 서비스 인터페이스와 페이로드 메시지 구조를 .proto 파일에 정의한다. JSON이나 XML과 같은 텍스트 기반 포맷과 달리, 데이터를 이진(Binary) 형태로 직렬화하므로 메시지 크기가 작고 전송 및 구문 분석 속도가 빠르다.

  2. HTTP/2 기반 전송 계층 gRPC는 네트워크 통신을 위해 HTTP/2 프로토콜을 사용한다. 이를 통해 헤더 압축, 단일 TCP 연결 내에서의 다중화(Multiplexing), 서버 푸시(Server Push) 등의 기능을 활용하여 네트워크 자원 사용을 최적화한다.

  3. 스트리밍(Streaming) 지원 HTTP/2의 특성을 활용하여 단일 요청-응답(Unary) 통신뿐만 아니라, 클라이언트 스트리밍, 서버 스트리밍, 그리고 양방향(Bidirectional) 스트리밍을 기본적으로 지원한다.

  4. 자동 코드 생성 (Stub Generation) 작성된 .proto 파일을 프로토콜 버퍼 컴파일러(protoc)로 컴파일하면, C++, Java, Python, Go 등 다양한 프로그래밍 언어에 맞는 클라이언트용 스텁(Stub)과 서버용 인터페이스 코드가 자동으로 생성된다.

gRPC와 REST API 비교

분산 시스템 통신에서 자주 사용되는 REST API와 gRPC의 기술적 특성 차이는 다음과 같다.

비교 항목 (Criteria)gRPCREST API
기본 프로토콜 (Protocol)HTTP/2 전용주로 HTTP/1.1 (최근 HTTP/2 도입 증가)
데이터 포맷 (Payload Format)Protocol Buffers (이진 포맷)JSON, XML 등 (텍스트 포맷)
설계 모델 (Design Model)RPC (함수 및 동작 중심)자원 기반 (URI와 HTTP 메서드 중심)
스트리밍 (Streaming)단방향 및 양방향 스트리밍 완벽 지원제한적 (주로 단일 요청-응답 모델)
브라우저 지원 (Browser Support)브라우저에서 직접 호출 불가 (gRPC-Web 프록시 필요)브라우저 네이티브 지원
성능 (Performance)직렬화/역직렬화 속도가 빠르고 네트워크 대역폭 소비가 적음텍스트 기반 파싱으로 인해 상대적으로 리소스 소모가 큼

출처 (Sources)

  • Cloud Native Computing Foundation (CNCF) / gRPC Official Documentation: “Introduction to gRPC” (grpc.io)
  • Google Cloud Blog: “gRPC vs. REST: Understanding gRPC, OpenAPI and REST and when to use them”
  • O’Reilly Media: “gRPC: Up and Running” (Kasun Indrasiri, Danesh Kuruppu)

Entities