gRPC
- 원격 프로시저 호출(RPC) 기반 API 아키텍처 및 시스템
- RPC 구현 및 최적화
- 데이터 전송에 Protocol buffer, HTTP/2 사용
gRPC vs RPC
- gRPC는 RPC와 유사한 구조 사용
- 외부 함수를 자신의 함수처럼 호출 가능
- 클라이언트, 서버가 stub을 공유(→ protocol buffer 코드)
- gRPC는 RPC와 달리 HTTP/2 기반, protocol buffer를 기본 데이터 포맷으로 사용
- gRPC는 RPC를 확장, 추상화한 프로토콜
gRPC vs REST API
gRPC와 REST의 차이점은 무엇인가요?
공통점
- 데이터 교환 매커니즘
- 클라이언트-서버 구조
- 데이터 형식, 통신 방식, 요청 및 응답 메시지 구조 등을 미리 결정한 후 해당 규칙에 따라 통신
- HTTP 기반 통신
- 다양한 프로그래밍 언어를 사용해 구현 가능
- 비동기 통신 및 Stateless 설계 지원
차이점
- 통신 모델
- REST는 단방향 연결(단일 요청 - 응답)
- gRPC는 단방향(일대일), 서버 스트리밍(일대다), 클라이언트 스트리밍(다대일), 양방향 스트리밍(다대다) 모두 가능
- API 호출
- REST는 엔티티 지향, 클라이언트가 리소스 자체를 직접 호출(서버 리소스 URL + HTTP 메소드)
- gRPC는 서비스 지향, 클라이언트가 서버의 함수를 호출
- 데이터 교환 형식
- REST는 일반적으로 JSON 사용, 다른 포맷도 사용 가능
- gRPC는 일반적으로 Protocol Buffer 사용, JSON 등 다른 포맷도 사용 가능
- 클라이언트-서버 커플링
- REST는 느슨한 결합으로, 클라이언트와 서버가 상대의 구현에 대해 알지 않아도 됨
- gRPC는 긴밀한 결합, 클라이언트와 서버에서 동일한 proto 파일에 액세스할 수 있어야 함