반응형
gRPC는 Google에서 개발한 RPC로 다음과 같은 특징을 가지고 있다.
- Protocol Buffers: gRPC는 JSON, XML과 다르게 Protocol buffer를 데이터 형식으로 사용한다. 태그로 이루어져 있어서 많은 크기를 차지하는 XML, 문자열 형태로 되어있는 JSON 이 아닌 더 작은 크기로 데이터를 직렬화하는 Protobuf로 데이터를 전달한다.
- HTTP/2: 양방향 스트리밍, 흐름 제어, 헤더 압축 등과 같은 다양한 기능을 지원하는 HTTP/2 프로토콜을 사용한다.
- Bi-Directional Streaming: gRPC는 양방향 스트리밍을 지원하여 채팅, 화상 회의와 같은 실시간 데이터 전송이 필요한 곳에도 사용 가능하다.
- Cross-Language Support: C++, Java, Python 등을 비롯한 다양한 언어를 이용하여 gRPC를 사용 할 수 있다.
프로토콜 버퍼는 API의 명세로 볼 수 있다.
Greeter라는 서비스에서 SayHello라는 API를 제공할 때 다음과 같이 작성하면 된다.
greeter.proto
// The greeter service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
서비스 내부에 rpc의 형태로 "rpc [API 명] [요청 파라미터] returns [응답 파라미터] {}"를 명시하고 파라미터에 해당하는 것을 message의 형태로 명시하면 된다.
이렇게 만들어진 proto 파일을 컴파일러를 이용해 각자의 언어에 맞게 컴파일하여 이용하면 된다.
반응형