* この投稿は米国時間 8 月 23 日、Product Manager である Varun Talwar によって投稿されたもの(投稿はこちら)の抄訳です。

スケーラビリティが高い疎結合システムを構築するのは、いつも変わらず難しいことです。モバイルや IoT のデバイスが氾濫し、データ量と顧客の要望が急増する状況のもとでは、システムをインターネット スケールで効率よく、かつ信頼できる形で開発、実行できることはきわめて重要です。

この種の環境では、デベロッパーは往々にして複数の言語、フレームワーク、テクノロジーと、複数の社内およびサードパーティのサービスを使いこなさなければなりません。サービス契約の設定や実施は難しくなり、チームとリソースを効率的に回しながら、認証と権限付与、健全性チェック、ロード バランシング、ロギング / モニタリング / トレーシングなどの言語横断的な機能の一貫性を維持するのも大変になります。特に、新しいサービスの超短期での追加が必要とされ、個々のサービスに機動性、弾力性、強靭性、高度な可用性、そしてコンポーザビリティが要求される今日のクラウド ネイティブな世界では、難しさはなお一層増しています。

Google はこの 15 年間、毎秒数百億のリクエスト(そう、数百億です!)を処理できるコア RPC レイヤを持つ RPC フレームワークの Stubby を使って、この問題を社内的に解決してきました。

このテクノロジーは現在、gRPC という名前のオープンソース プロジェクトの一部として、誰でも利用できるようになっています。gRPC は、私たちが Google で享受しているのと同等のスケーラビリティ、パフォーマンス、機能を広くプログラミング コミュニティに提供することを意図したものです。

gRPC は、分散システムへの接続や分散システムの運用とデバッグを、ローカル関数呼び出しと同じくらい簡単なものに変えることができます。厳格なサービス契約の実施、データ シリアライズ、効率的なネットワーク通信、認証とアクセス制御、分散トレーシングなどにまつわる複雑な細部もすべて処理してくれます。gRPC と Protocol Buffers を組み合わせれば、疎結合、スピーディな作業、高い信頼性、運用のしやすさが得られます。

さらに、デベロッパーが言語にとらわれない方法でサービス定義を記述すると、gRPC は複数の言語でクライアントとサーバーを生成できます。生成されたコードは、それぞれの言語のイディオムを活用しており、普段使っている言語でネイティブに書かれたコードのように感じられます。

そしてこのたび、gRPC プロジェクトはバージョン 1.0 のリリースという重要なマイルストーンに到達し、本番デプロイに対応したものになりました。gRPC は、ハイパフォーマンスなオープンソース RPC フレームワークとして、複数の言語バインディングを提供します(Linux、Windows、Mac 上の C++、Java、Go、Node、Ruby、Python、C#)。

また、Objective-C と Android Java ライブラリを介して iOS と Android もサポートしており、モバイル アプリケーションからバックエンド サービスへの接続が今まで以上に効率的になります。

gRPC 1.0 は、ほとんどの言語での 1 行インストール、安定的な API、オープンなダッシュボードによって改善され透過的になったパフォーマンス、下位互換性、本番システムへの対応を提供します。リリースの詳細はこちらをご覧ください。

ベータから 1.0 への移行にあたって、gRPC に対するコミュニティの関心は急速に高まっています。たとえば Netflix などの企業は、マイクロサービスの大規模な接続のために以前から gRPC を採用し、強く支持しています。


gRPC を使い始めた当初から、私たちは自社のかなり特徴的なエコシステムに収まる形で gRPC を拡張してきました。さらに、プル リクエストや Google の gRPC プロジェクト担当チームとの協力を通じて、gRPC 自体に直接改良を加えています。gRPC を採用すれば、デベロッパーの生産性は上がり、非 JVM 言語による開発にも対応できるようになるでしょう。

- Timothy Bozarth 氏、Netflix エンジニアリング マネージャ




CoreOS、Vendasta、Cockroachdb は、社内サービスや API との接続のために gRPC を使っています。また、Cisco や Juniper、Arista、Ciena は、ネットワーク デバイスからの遠隔ストリーミングのために gRPC を使っています。



CoreOS は gRPC 1.0 のリリースを歓迎するとともに、私たちが GIFEE(Google's Infrastructure for Everyone Else)と呼んでいるものを人々が使い、構築するチャンスが開けるのを喜んでいます。現在、etcd データベースや rkt コンテナ エンジンなど弊社の重要なオープンソース プロジェクトのいくつかが gRPC を使っています。

- Brandon Philips 氏、CoreOS CTO




Square は、gRPC に関して非常に早い時期から Google と共同で作業を進めています。同社は、社内インフラストラクチャにおいて複数の言語で書かれたマイクロサービスを接続するために gRPC を使っています。

金融サービス企業である Square は、エンド ツー エンド暗号化をサポートする堅牢で高性能な RPC フレームワークを必要としています。そうしたことから、マルチプラットフォーム サポート、実証されたパフォーマンスの高さ、コードベースのカスタマイズと修正への対応、そして何よりも汎用 RPC フレームワークの開発にいそしむ幅広いエンジニア コミュニティと協力するために gRPC を選択しました。

Square における実装の詳細については、同社のブログでご覧いただけます。同社では、gRPC に関するビデオのほか、お客様の声も紹介しています。

gRPC 1.0 のリリースによって、次世代の Stubby が誰にでも開かれた形で利用できるようになり、本番デプロイへの対応も整いました。grpc.io で今すぐ gRPC を始め、gRPC メーリング リストにフィードバックをお寄せください。



- Posted by Varun Talwar, Product Manager