gRPC는 Google에서 개발한 RPC(Remote Procedure Call)시스템입니다. 전송을 위해 TCP/IP 프로토콜과 HTTP 2.0 프로토콜을 사용하고 IDL(Interface Definition language)로 protocol buffer를 사용합니다.
◆ 지원 언어 : C++, Java, Python, Ruby, Node.js, C#, Go, PHP, Objective-C 등등
- caller/callee
개발자가 비지니스 로직을 생성하고 정의된 IDL로 작성하여 stub 을 호출
- Stub
Stub compiler 가 IDL 파일을 읽어 원하는 language 로 생성하고 파라미터를 마샬링/언마샬링 처리하여 RPC 프로토콜로 전달
마샬링 (한 객체의 메모리에서 표현방식을 저장 또는 전송에 적합한 다른 데이터 형식으로 변환하는 과정)
http/2에서는 한 connection으로 동시에 여러 개 메시지를 주고 받으며, header를 압축하여 중복 제거 후 전달하기에 version1에 비해 훨씬 효율적
gRPC에서 IDL로 정의하면 높은 성능을 보장하는 서비스와 메세지에 대한 소스코드를 각 언어에 맞게 자동 생성된다. 따라서 언어에 구애받지 않고 의사소통이 원활해 진다.
.proto파일을 정의해 각 프로그래밍 언어별 코드를 생성할 수 있다.
(https://tech.buzzvil.com/handbook/grpc/)
(https://devjin-blog.com/golang-grpc-server-1/)