gRPC란?
구글에서 개발한 RPC 시스템. 기본 개념은 RPC와 동일하지만 HTTP/2 기반으로 양방향 스트리밍 지원. HTTP/2를 사용함으로써 메세지의 압축률과 성능이 좋음.
HTTP와 비교
Feature | gRPC | HTTP APIs with JSON |
---|---|---|
Contract | Required (.proto) | Optional (OpenAPI) |
Protocol | HTTP/2 | HTTP |
Payload | Protobuf (small, binary) | JSON (large, human readable) |
Prescriptiveness | Strict specification | Loose. Any HTTP is valid. |
Streaming | Client, server, bi-directional | Client, server |
Browser support | No (requires grpc-web) | Yes |
Security | Transport (TLS) | Transport (TLS) |
Clientcode-generation | Yes | OpenAPI + third-party tooling |
gRPC의 장점
1. 다양한 언어와 플랫폼 지원
ProtoBuf의 IDL을 활용한 서비스 정의 한개로 다양한 언어와 플랫폼에서 동작. 공식지원하는 언어 및 플랫폼 목록
2. HTTP/2 기반
- 양방향 스트리밍.
- 높은 메시지 압축률과 성능.
3. MSA(microservice architecture)에 적합
- gRPC를 활용하면 비지니스 로직에 집중하여 빠른 서비스 개발이 가능.
- MSA의 다양한 기술 스택의 공존으로 인한 중복 발생의 단점 보완 및 수많은 서비스간의 API 호출로 인한 성능저하 개선.
- ProtoBuf에 의한 높은 메시지 압축률은 시스템 전체의 네트워크 트래픽을 획기적으로 줄여줌.