gRPC 개요

gRPC는 Google이 개발한 고성능 오픈소스 범용 RPC 프레임워크입니다. gRPC에서 클라이언트 애플리케이션은 다른 머신의 서버 애플리케이션에 있는 메소드를 로컬 객체처럼 직접 호출할 수 있으므로 분산 애플리케이션 및 서비스를 더 쉽게 만들 수 있습니다.

gRPC를 사용하여 얻을 수 있는 주요 장점 중 하나는 문서입니다. 서비스 구성 및 API 인터페이스 정의 파일을 사용하여 API용 참조 문서를 생성할 수 있습니다.

API 관리

gRPC용 API 게이트웨이에서는 API 게이트웨이의 API 관리 기능을 사용하여 모니터링, 호스팅, 추적, 인증 등을 Cloud Run의 gRPC 서비스에 추가할 수 있습니다. 또한 특수 매핑 규칙을 지정하면 API 게이트웨이가 HTTP를 통해 RESTful JSON을 gRPC 요청으로 변환합니다. 즉, API 게이트웨이에서 관리하는 gRPC 서버를 배포하고 gRPC 또는 JSON/HTTP 클라이언트를 사용하여 해당 API를 호출할 수 있으므로 다른 시스템과의 통합이 훨씬 더 유연하고 간편해집니다.

gRPC를 지원하는 모든 언어로 API 게이트웨이용 gRPC 서비스를 만들 수 있습니다. 서비스 및 클라이언트를 만들기 위한 빠른 시작과 가이드를 비롯하여 gRPC에 대한 자세한 내용은 gRPC 사이트에서 확인할 수 있습니다.

서비스 정의 및 구성

gRPC는 서비스를 정의하고 매개변수 및 반환 유형을 사용하여 원격으로 호출 가능한 메서드를 지정한다는 개념을 기반으로 합니다. 기본적으로 gRPC는 서비스 인터페이스와 페이로드 메시지의 구조를 설명하는 인터페이스 정의 언어(IDL)로 프로토콜 버퍼를 사용합니다.

// The greeting 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;
}

API 게이트웨이에 gRPC를 사용하려면 서비스 정의와 함께 서비스 구성을 제공해야 합니다. 이를 통해 인증, 서비스에 포함되는 API, HTTP 요청에서 gRPC 메서드로의 매핑, 특수한 API 게이트웨이 설정을 비롯한 서비스의 런타임 동작이 구성됩니다.

트랜스코딩

API 게이트웨이는 클라이언트가 HTTP/JSON를 사용해서 API 게이트웨이를 통해 gRPC 서비스와 통신할 수 있도록 Cloud Run에서 gRPC 서비스에 대한 프로토콜 변환 기능을 제공합니다.

가장 일반적인 사용 사례는 브라우저 클라이언트가 gRPC 클라이언트 라이브러리의 특별한 지원 없이 gRPC 서버와 통신할 수 있도록 하는 것입니다. API 게이트웨이는 서비스 구성의 일부로 HTTP 요청을 gRPC 메서드에 매핑하기 위한 메커니즘을 제공합니다.

보다 자세한 내용은 gRPC로 HTTP/JSON 트랜스코딩을 참조하세요.

제한사항

다음 gRPC 기능은 아직 API 게이트웨이에서 지원되지 않습니다.

  • 페이로드 압축
  • 프로토콜 버퍼를 제외한 다른 모든 IDL

API 게이트웨이는 현재까지 Cloud Run gRPC 서비스만 지원합니다.

다음 단계

  • 샘플 살펴보기. getting-started-grpc 샘플은 GitHub에서 다음 언어로 제공됩니다.
  • Bookstore 샘플은 다음 언어로 제공됩니다.