第8章. gRPCエコシステム
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章では、コア gRPC 実装の一部ではないが、 実際のユースケースで gRPC アプリケーションを構築し、 実行する上で非常に有用なプロジェクトをいくつか 紹介する。これらのプロジェクトは、gRPC エコシス テムの親プロジェクトの一部であり、gRPC ア プリケーションを実行するために必須となる技術 はない。あるプロジェクトが提供する同様の要件がある場合は、それらの技術を調査・評価すること。
gRPCゲートウェイから話を始めよう。
gRPCゲートウェイ
gRPCゲートウェイプラグインは、プロトコルバッファコンパイラがgRPCサービス定義を読み取り、リバースプロキシサーバを生成し、RESTful JSON APIをgRPCに変換することを可能にする。これは、gRPCとHTTPクライアント・アプリケーションの両方からgRPCサービスを呼び出すことをサポートするために、特にGoのために書かれている。図8-1は、gRPCとRESTfulの両方の方法でgRPCサービスを呼び出す機能を提供する様子を示している。
図に示すように、ProductInfo サービス・コントラクトがあり、このコントラクトを使用してProductInfoService という gRPC サービスを構築する。先に、このgRPCサービスと通信するためのgRPCクライアントを構築した。このリバースプロキシは、gRPCサービスの各リモート・メソッドのRESTful APIを公開し、RESTクライアントからのHTTPリクエストを受け付ける。HTTPリクエストを受信すると、リクエストをgRPCメッセージに変換し、バックエンド・サービスのリモート・メソッドを呼び出す。バックエンドサーバからのレスポンスメッセージは、再びHTTPレスポンスに変換され、クライアントに返信される。
図8-1 gRPCゲートウェイ
サービス定義のリバースプロキシ・サービスを生成するには、まず、サービス定義を更新して、gRPCメソッドをHTTPリソースにマッピングする必要がある。作成したのと同じProductInfo サービス定義を入手して、マッピングエントリを追加してみよう。例8-1は更新されたプロトコルバッファ定義を示す。