gRPC는 구글에서 개발한 고성능 RPC 프레임워크이다.
Java, C ++, Python, Java Lite, Ruby, JavaScript, Objective-C 및 C#에서 사용 가능하다.
RPC(Remote Procedure Call)는 별도의 원격 제어를 위한 코딩없이 다른 주소공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스간 통신기술이다.
gRPC를 이용하면 원격에 있는 애플리케이션의 메서드를 로컬 메서드인 것처럼 직접 호출할 수 있기 때문에 분산 애플리케이션과 서비스를 보다 쉽게 만들 수 있다.
서버는 정의한 서비스 규격에 따라 인터페이스를 구현하고 gRPC 서버를 실행하여 클라이언트 호출을 처리한다.
클라이언트 측에는 서버와 동일한 방법을 제공하는 stub이 이다.
stub
은 RPC의 핵심 개념으로 parameter 객체를 Message로 marshalling/unmarshalling하는 레이어이다.
서버와 클라이언트는 서로 다른 주소공간을 사용하기 때문에 함수 호출에 사용된 매개변수를 꼭 변환해야 한다.
그러지 않으면 메모리 매개변수에 대한 포인터가 다른 데이터를 가리키게 된다.
gRPC는 IDL(Interface Definition Language)로 protocol buffer를 사용한다.
protocol buffer는 직렬화 데이터 구조이다.
어떤 언어나 플랫폼에서 통신 프로토콜이나 데이터 저장을 사용할 때 구조화된 데이터를 전환하게 해주는 방법이다.
직렬화의 종류로 JSON과 XML이 있다.
https://velog.io/@dojun527/gRPC%EB%9E%80
https://grpc.io/docs/
https://thenewstack.io/grpc-lean-mean-communication-protocol-microservices/