카테고리 없음

gRPC 알아보기

Hwisaek 2023. 2. 1. 00:04
반응형

gRPC는 Google에서 개발한 RPC로 다음과 같은 특징을 가지고 있다.

 

  1. Protocol Buffers: gRPC는 JSON, XML과 다르게 Protocol buffer를 데이터 형식으로 사용한다. 태그로 이루어져 있어서 많은 크기를 차지하는 XML, 문자열 형태로 되어있는 JSON 이 아닌 더 작은 크기로 데이터를 직렬화하는 Protobuf로 데이터를 전달한다.
  2. HTTP/2: 양방향 스트리밍, 흐름 제어, 헤더 압축 등과 같은 다양한 기능을 지원하는 HTTP/2 프로토콜을 사용한다.
  3. Bi-Directional Streaming: gRPC는 양방향 스트리밍을 지원하여 채팅, 화상 회의와 같은 실시간 데이터 전송이 필요한 곳에도 사용 가능하다.
  4. 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 파일을 컴파일러를 이용해 각자의 언어에 맞게 컴파일하여 이용하면 된다.

반응형