728x90
GRPC 란?
Google Remote Procedure Call
구글에서 개발한 어느 환경에서 실행할 수 있는 최신 오픈 소스 고성능 RPC 프레임워크이다.
장점
유지 보수하기가 쉽다. (Protocol Buffers를 사용하여 자동으로 소스가 생성된다.)
다양한 언어와 플랫폼을 지원한다. (공식적으로 지원하는 언어는 https://www.grpc.io/docs/languages/ 참고.)
Http/2 기반으로 양방향 스트리밍 가능하다.
단점
protobuf http/2 에 대한 러닝 커브가 있다.
기존 rest api 와 다르게 메시지가 바이너리로 전달되기 때문에 테스트가 쉽지 않다.
메시지 구조 등이 많이 변할 경우, 놓치는 부분이 생길 수 있으므로 CI 등을 도입하여 안정성을 확보할 필요가 있다.
(개발 프로세스 복잡도가 증가할 수 있음.)
Lifecycle
총 4가지 방식이 있음.
Client-Side에서는 Marshaling(마샬링)을 수행
Server-Side에서는 Unmarshaling(언마샬링)을 수행
https://grpc.io/docs/what-is-grpc/core-concepts
Unary RPC
- 클라이언트에서 서버로 단일 요청, 서버는 단일 응답 하는 형태
rpc test(testRequest) returns (testResponse);
Server Streaming RPC
- 클라이언트에서 서버로 단일 요청, 서버는 연속적인 스트림 응답하는 형태
- 클라이언트는 완료처리가 될 때까지 스트림 데이터를 수신함.
rpc test(testRequest) returns (stream testResponse);
Client Streaming RPC
- 클라이언트에서 서버로 연속적인 스트림 요청, 서버는 단일 응답하는 형태
- 서버는 완료처리 될때까지 스트림 데이터를 수신함.
- 수신 도중 스트림을 취소하여 클라이언트의 메시지를 조기에 중단할 수 있음.
rpc test(stream testRequest) returns (testResponse);
Bidirectional Streaming RPC
- 클라이언트, 서버 모두 독립적으로 동작하는 스트림을 이용하여 서로가 서로에게 완료처리가 될 때까지 연속적인 스트림을 전달.
rpc test(stream testRequest) returns (stream testResponse);
클라이언트 Stub
Asynchronous Stub
- 모든 방식의 RPC 사용 가능
- 비동기적으로 작동하는 Stub이다.
Blocking Stub
- Unary RPC, Server Streaming RPC 만 사용가능
- 동기적으로 작동하는 Stub이다.
Future Stub
- Streaming 호출을 지원하지 않음.
- Unary RPC 만 사용 가능
외부 Rest API를 제공할 경우
https://github.com/grpc-ecosystem/grpc-gateway
grpc-gateway를 사용하면 제공 가능.
추후 grpc 를 이용하면서 추가할 내용 있으면 추가할 예정입니다.!
'GRPC' 카테고리의 다른 글
ProtoBuf 란 ? (0) | 2022.05.05 |
---|---|
HTTP2 란 ? (0) | 2022.05.03 |
RPC 란? (0) | 2022.05.01 |