バージョンアップ情報
gRPC-Gateway情報
gRPC-Gatewayとは
gRPC-Gatewayは、protoc(Google プロトコルバッファコンパイラ)のプラグインでgRPCサービスをHTTP/JSON APIとして公開することを可能とします。
gRPC は 多くのプログラミング言語で API クライアントとサーバースタブを生成し、高速で使いやすく、帯域幅効率に優れています。
ただし、下位互換性の維持、gRPC で十分にサポートされていない言語やクライアントのサポートなどの理由から従来の HTTP/JSONによるRESTful API も提供したい場合があります。そう言った場合にgRPC-Gatewayを利用すれば、gRPCの高性能な機能を利用してHTTP/JSONを使うブラウザやモバイルアプリケーションなどのクライアントとの互換性を持たせることが可能です。
主な特徴
gRPC-Gateway は protobuf サービス定義を読み取り、RESTful HTTP API で受け取ったHTTP/JSONのリクエストを gRPC に変換するgoogle.api.httpサービス定義の注釈に従ったリバースプロキシサーバーを生成します。ユーザーは gRPC-Gatewayを使うことによってgRPC で作成したAPIをgRPCと HTTP/JSONの両方で同時に提供できるようになります。
メリット・デメリット
メリット・必要性
gRPC-Gatewayを使うメリットはgRPC に対応していない言語やクライアントに対して従来のHTTP/JSONによるRESTインターフェイスを提供できることです。
HTTP/JSONはHTTPメソッドを使用している為にシンプルで多くのクライアントでサポートされている為に互換性に優れています。
デメリット・注意点・課題
gRPC-Gatewayは、HTTP/JSONのリクエストをgRPCに変換するため変換のオーバーヘッドが生じます。
特に大量のリクエストを処理する場合には変換処理による性能の劣化が発生する可能性を考慮する必要があります。
また、gRPC はHTTP/JSONに比べて非常に高速にデータの送受信が可能で、双方向のストリーミングによる通信が可能なため、その特性を生かしたgRPCによる通信をHTTP/JSONでは同程度で提供することは難しいです。
動作環境
gRPC-Gatewayは、gRPCフレームワークを使って書かれたサーバーに対してHTTP/JSONリクエストを受け取るリバースプロキシサーバを生成します。gRPC フレームワークは以下の言語をサポートしています。
- C# / .NET
- C++
- Dart
- Go
- Java
- Kotlin
- Node
- Objective-C
- PHP
- Python
- Ruby
gRPC-Gatewayのライセンス
gRPC-Gateway はBSD3条項ライセンスで提供されているオープンソースのソフトウェアです。 BSD3条項ライセンスでは著作権およびライセンス条文の表示を条件にコードの自由な改変・頒布・再配布が認められています。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
サポート対象
Kubernetes
クーバネティス。Dockerをはじめとするコンテナ化されたアプリケーションの展開、スケーリング、管理を行うオープンソースのプラットフォームです。
-
Go
Goは2009年にGoogle社からオープンソースとして発表されたプログラム言語です。