GRPC란 무엇인이며 어떻게 동작하는가?
GRPC란 google에서 제공하는 rpc 프로토콜 프레임워크이다.
이를 통해 간편하게 클라이언트와 서버 간에 rpc 통신을 할 수 있게 해준다.
grpc의 간략한 동작 순서는 다음과 같다.
- 서버에서 grpc server가 listen을 하고 있다.
- 클라이언트에서 gRPC stub을 통해 서비스에 접근한다.
- 서버에서 gRPC stub 명령을 받아 수행 후 클라이언트에 반환해 준다.
gRPC를 통해 간편하게 server를 만들어 listen을 수행하고, 이를 호출하는 client 프로그램을 만들어 RPC 통신을 한다.
RPC 통신이란?
Remote Procedure Call 의 약어로 다른 컴퓨터에 있는 특정 method를 마치 자신의 컴퓨터에 있는 것처럼 호출하는 것으로 분산 어플리케이션과 서비스를 만드는데 중요한 역할을 한다.
grpc에서는 데이터 전송을 위한 marshal를 위해 protocall buffer를 사용한다.
protocall buffer란?
protocall buffer란 어떤 언어와 플랫폼에서도 사용가능하고 확장성이 좋으며, 통신 프로토콜이나 데이터 저장등에 사용하기 위해 정형화된 데이터를 serializing 할 수 있는 좋은 방법이다.
protocall buffer 에서는 serialize 하고자 하는 구조체가 .proto 파일에 메세지의 형태로써 정의되어야 한다.
이러한 .proto file은 protoc 컴파일러를 통하여 접근 가능한 객체로 변환되고, 각 언어에 맞는 protoc가 존재한다.
.proto 파일의 예1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}