gRPC는 Google이 개발한 고성능 오픈소스 범용 RPC 프레임워크입니다. gRPC에서 클라이언트 애플리케이션은 다른 머신의 서버 애플리케이션에 있는 메소드를 로컬 객체처럼 직접 호출할 수 있으므로 분산 애플리케이션 및 서비스를 더 쉽게 만들 수 있습니다.
gRPC를 사용하여 얻을 수 있는 주요 장점 중 하나는 문서입니다. 서비스 구성 및 API 인터페이스 정의 파일을 사용하여 API용 참조 문서를 생성할 수 있습니다. 자세한 내용은 개발자 포털 개요를 참조하세요.
API 관리
Endpoints는 Extensible Service Proxy(ESP) 또는 Extensible Service Proxy V2(ESPv2)와 함께 작동하여 API 관리 기능을 제공합니다.
gRPC용 Endpoints에서는 Endpoints의 API 관리 기능을 사용하여 API 콘솔, 모니터링, 호스팅, 추적, 인증 등을 gRPC 서비스에 추가할 수 있습니다. 또한 특수 매핑 규칙을 지정하면 ESP와 ESPv2가 HTTP의 RESTful JSON을 gRPC 요청으로 변환합니다. 즉, Endpoints에서 관리하는 gRPC 서버를 배포하고 gRPC 또는 JSON/HTTP 클라이언트를 사용하여 해당 API를 호출할 수 있으므로 다른 시스템과의 통합이 훨씬 더 유연하고 간편해집니다.
gRPC를 지원하는 모든 언어로 Endpoints용 gRPC 서비스를 만들 수 있습니다. 서비스 및 클라이언트를 만들기 위한 빠른 시작과 가이드를 비롯하여 gRPC에 대한 자세한 내용은 gRPC 사이트에서 확인할 수 있습니다.
지원되는 컴퓨팅 플랫폼
ESP와 ESPv2는 오픈소스 프로젝트이며 다음과 같은 방법으로 제공됩니다.
- Google Container Registry의 컨테이너.
- 현재 ESP Docker 이미지는 ESP 출시 노트를 참조하세요.
- 현재 ESPv2 Docker 이미지는 ESPv2 출시 노트를 참조하세요.
- GitHub의 소스 코드.
- ESP 구축에 대한 자세한 내용은 ESP README를 참조하세요.
- ESPv2 빌드에 대한 자세한 내용은 ESPv2 리드미를 참조하세요.
다음에서 ESP 컨테이너를 실행할 수 있습니다.
- Docker를 사용하는 Compute Engine
- Kubernetes(Google Kubernetes Engine 포함)
- Linux 또는 macOS 컴퓨터 또는 다른 클라우드 제공업체
다음에서 ESPv2 컨테이너를 실행할 수 있습니다.
- Cloud Run
- Knative serving
- GKE
- Compute Engine
- Kubernetes
자세한 내용은 Cloud Endpoints 정보를 참조하세요.
GCP 컴퓨팅 플랫폼에 API 및 ESP를 배포하는 방법에 대한 자세한 내용은 API 백엔드 배포를 참조하세요.
서비스 정의 및 구성
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;
}
Endpoints에서 gRPC를 사용하려면 서비스 구성과 서비스 정의를 제공해야 합니다. 이를 통해 인증, 서비스에 포함되는 API, HTTP 요청에서 gRPC 메소드로의 매핑, 특수한 Cloud Endpoints 설정을 비롯한 서비스의 런타임 동작이 구성됩니다.
트랜스코딩
Endpoints는 gRPC 서비스를 위한 프로토콜 변환 기능을 제공하여 클라이언트에서 HTTP/JSON을 사용하여 ESP 또는 ESPv2를 통해 gRPC 서비스와 통신할 수 있도록 합니다.
가장 일반적인 사용 사례는 브라우저 클라이언트가 gRPC 클라이언트 라이브러리의 특별한 지원 없이 gRPC 서버와 통신할 수 있도록 하는 것입니다. Endpoints는 서비스 구성의 일부로 HTTP 요청을 gRPC 메소드에 매핑하기 위한 메커니즘을 제공합니다.
보다 자세한 내용은 gRPC로 HTTP/JSON 트랜스코딩을 참조하세요.
제한사항
다음 gRPC 기능은 아직 Endpoints에서 지원되지 않습니다.
- 페이로드 압축
- 프로토콜 버퍼를 제외한 다른 모든 IDL
또한 Endpoints는 GKE, Compute Engine, Cloud Run(베타)용 gRPC 서비스만 지원합니다. Endpoints는 App Engine 환경에 gRPC 서비스를 지원하지 않습니다.
다음 단계
- 가이드 중 하나에 따라 원하는 환경에서 Cloud Endpoints와 함께 gRPC 서비스를 준비 및 실행합니다.
- Cloud Endpoints용 gRPC 서비스를 구성하는 방법에 대해 알아보기
- 샘플 살펴보기. getting-started-grpc 샘플은 GitHub에서 다음 언어로 제공됩니다.
- Bookstore 샘플은 다음 언어로 제공됩니다.