gRPC

gRPC
開発者グーグル
初回リリース2016年8月 (2016-08)
安定版リリース
1.72.1 [ 1 ] / 2025年6月2日 (2025-06-02)
リポジトリ
書かれたAndroid Java、C#C++DartGoJava、Kotlin/JVM、Node.js、Objective-C、PHPPythonRuby
タイプリモートプロシージャコールフレームワーク
ライセンスApacheライセンス2.0
Webサイトgrpc .io

gRPC ( gRPC Remote Procedure Calls [ 2 ]の略)は、クロスプラットフォームの高性能リモートプロシージャコール(RPC)フレームワークです。gRPCは当初Googleによって開発されましたが、オープンソースであり、多くの組織で使用されています。ユースケースは、マイクロサービスからコンピューティングの「ラストマイル」(モバイル、ウェブ、モノのインターネット)まで多岐にわたります。gRPCは、トランスポートにHTTP/2 、インターフェース記述言語プロトコルバッファを使用し、認証、双方向ストリーミングとフロー制御、ブロッキングまたはノンブロッキングバインディング、キャンセルとタイムアウトなどの機能を提供します。多くの言語でクロスプラットフォームのクライアントとサーバーのバインディングを生成します。最も一般的な使用シナリオは、マイクロサービススタイルのアーキテクチャでサービスを接続したり、モバイルデバイスクライアントをバックエンドサービスに接続したりすることです。[ 3 ]

gRPCはHTTPトレーラーを使用するため、ブラウザでgRPCクライアントを実装することは不可能であり、代わりにプロキシが必要になります。[ 4 ]

歴史

Googleは2001年頃から、データセンター内およびデータセンター間で稼働する多数のマイクロサービスを接続するために、Stubbyと呼ばれる汎用RPCインフラストラクチャを開発しました。[ 5 ] 2015年3月、GoogleはStubbyの次期バージョンを開発し、オープンソース化することを決定しました。その結果生まれたのがgRPCです。

認証

gRPC は、トランスポート層セキュリティ(TLS)とトークンベースの認証をサポートしています。Google サービスへの接続には TLS を使用する必要があります。認証情報には、チャネル認証情報と通話認証情報の 2 種類があります。

トークンベースの認証のために、gRPCはサーバーインターセプター[ 6 ]とクライアントインターセプター[ 7 ]を提供します。

エンコーディング

gRPCはプロトコルバッファを使用してデータをエンコードします。プロトコルバッファはシリアル化形式とインターフェース定義言語を提供します。[ 8 ]

テスト

gRPC実装のテストに使用されるソフトウェアツールには、Postman、ezy、[ 9 ] Insomnia、Step CIなどがあります。[ 10 ]

採択

gRPCは多くの組織で使用されており、Uber[ 11 ] SquareNetflixIBMCoreOSDockerCockroachDBArista NetworksCiscoJuniper Networks[ 12 ] Spotify[ 13 ] Zalando[ 14 ] Dropbox[ 15 ]、そして元の開発者であるGoogleも含まれています。

オープンソースプロジェクトu-bmcは、インテリジェントプラットフォーム管理インターフェース(IPMI)の代わりにgRPCを使用しています。 [ 16 ] 2019年1月8日、Dropboxは、サービス指向アーキテクチャ(SOA)の中核となるRPCフレームワーク「Courier」の次期バージョンをgRPCベースに移行すると発表しました。これは主に、既存のカスタムRPCフレームワークとの整合性が高いためです。[ 17 ]

代替案

参照

参考文献

  1. ^ 「gRPC リリース」 . GitHub . 2025年2月15日閲覧。
  2. ^ 「FAQ」 . gRPC .
  3. ^ 「gRPCについて」 . gRPC . 2021年5月25日閲覧。
  4. ^ 「ブラウザにおけるgRPCの現状」gRPC . 2019年1月8日。
  5. ^ 「gRPC:真のインターネット規模のRPCフレームワークが1.0になり、本番環境への導入が可能に」 2016年8月24日。 2023年4月3日閲覧
  6. ^ “gRPC Server Interceptor” . 2023年2月27日. 2023年3月7日時点のオリジナルよりアーカイブ。
  7. ^ "gRPC" . grpc.io. 2020年2月24日閲覧
  8. ^ JamesNK. 「gRPC サービスと HTTP API の比較」 . docs.microsoft.com . 2020年2月24日閲覧。
  9. ^ 「GitHub の ezy」 . GitHub .
  10. ^ 「Step CI ドキュメント」
  11. ^ 「Uber の gRPC」 2021年5月19日。
  12. ^ "gRPC" . grpc.io. 2020年2月24日閲覧
  13. ^ 「Spotify における gRPC」(PDF) . jfokus.se . 2020年5月12日閲覧
  14. ^ “ザランド技術レーダー” .オープンソース.zalando.com 2021年4月8日閲覧
  15. ^ 「DropboxをNginxからEnvoyに移行した方法」 Dropbox.Tech . 2020年10月30日閲覧。
  16. ^ "u-bmc" . GitHub.com . 2022年10月5日.
  17. ^ Nigmatullin, Ruslan; Ivanov, Alexey (2019年1月8日). 「Courier: DropboxのgRPCへの移行」. 2019年1月9日閲覧。