토픽 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, 직렬화