[gRPC] gRPC 프로토콜 버퍼란?

  • gRPC 시작에서 운영까지 - OREILLY

  • 오늘은 gRPC에서 필수 요소인 프로토콜 버퍼에 대해서 알아보도록 하겠습니다.

  • 구조화된 데이터를 직렬화할 수 있는 오픈소스 소프트웨어 입니다.
  • 2008년 구글에 의해 공개 되었습니다.
  • 보통 데이터 저장이나 통신용 프로그램에 주로 사용되며, 프로토버프(protobuf)라고도 불립니다.

  • gRPC는 프로토콜 버퍼를 IDL로 사용해 서비스 인터페이스를 정의합니다.
  • 이 프로토콜 버퍼는 언어에 구애받지 않고 플랫폼 중립적이며 확장 가능한 메커니즘으로 구조화된 데이터를 직렬화하고자 사용됩니다.

// ProductInfo.proto
syntax = "proto3";   ------1
package ecommerce;   ------2

service ProductInfo{ --------3
  rpc addProduct(Product) returns (ProductID); -------4
  rpc getProduct(ProductID) returns (Product); -------5
}

message Product { --------6
  string id = 1; --------7
  string name = 2;
  string description = 3;
}

message ProductID{ --------8
  string value = 1;
}
  • 위의 프로토콜 버퍼의 각 번호별 정의는 다음과 같습니다.
    1. 서비스 정의는 사용하는 프로토콜 버퍼의 버전(proto3) 지정으로 시작합니다. (default = proto2)
    2. 패키지 이름은 프로토콜 메시지 타입 사이의 이름 충돌을 방지하고자 사용하며, 코드 생성에도 사용합니다.
    3. gRPC 서비스의 서비스 인터페이스를 정의합니다.
    4. 제품 정보를 추가하고 제품 ID를 응답으로 반환하는 원격 메서드입니다.
    5. 제품 ID를 기반으로 제품 정보를 가져오는 원격 메서드입니다.
    6. Product 정보의 메시지 형식/타입을 정의합니다.
    7. 메시지 바이너리 형식에서 필드를 식별하는 데 사용하는 고유 필드 번호로, 제품 ID에 대한 필드 입니다.
    8. 제품 식별 번호용 사용자 정의 타입 입니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY