Learning
토픽 114 / 147·네트워크 응용 및 고급 프로토콜

gRPC (gRPC Remote Procedure Call)

gRPC (gRPC Remote Procedure Call)

Google이 개발한 고성능 오픈소스 RPC 프레임워크로, HTTP/2 기반 전송, Protocol Buffers(Protobuf) 직렬화를 사용하여 낮은 지연 시간과 높은 처리량을 제공하며 마이크로서비스 간 통신에 널리 활용

목적: 고성능 서비스 간 통신, 마이크로서비스 연결, 다중 언어 지원, 효율적 직렬화

특징: HTTP/2, Protobuf, 양방향 스트리밍, 다중 언어, 코드 생성, 강타입

구성요소

  • Protobuf (Protocol Buffers): IDL(Interface Definition Language), 이진 직렬화, .proto 파일
  • HTTP/2: 다중화, 헤더 압축, 양방향 스트리밍, 서버 푸시
  • Stub/Client: 자동 생성 클라이언트 코드, RPC 호출
  • Service: 서버 측 구현, RPC 메서드 정의
  • Channel: 서버 연결, 로드밸런싱, 연결 풀링

통신 패턴

  • Unary RPC: 단일 요청-응답, 일반 함수 호출처럼 사용
  • Server Streaming: 클라이언트 1요청 → 서버 다중 응답 스트림
  • Client Streaming: 클라이언트 다중 요청 스트림 → 서버 1응답
  • Bidirectional Streaming: 양방향 독립 스트림, 실시간 통신

장점: 고성능(JSON 대비 10배), 강타입(컴파일 검증), 양방향 스트리밍, 다중 언어, 코드 생성

단점: 브라우저 제한(gRPC-Web 필요), 디버깅 어려움(이진), 학습 곡선, Protobuf 필수

적용사례: 마이크로서비스(K8s), 모바일 백엔드, 실시간 통신, Netflix, Google 내부

기술요소: Protobuf, HTTP/2, Streaming, Stub, Channel, Interceptor, Deadline

비교: gRPC(HTTP/2/Protobuf/고성능) vs REST(HTTP/1.1/JSON/범용) vs GraphQL(쿼리/유연)

연관: HTTP/2, Protobuf, 마이크로서비스, Service Mesh, REST API, 직렬화