第1章. gRPC入門
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
現代のソフトウェア・アプリケーションは、単独で動作することはほとんどない。むしろ、コンピュータ・ネットワークを通じて互いに接続され、互いにメッセージを受け渡しながら通信し、動作を座標調整する。したがって、最新のソフトウェアシステムは、異なるネットワークロケーションで実行され、異なる通信プロトコルを使用してメッセージパッシングで互いに通信する分散ソフトウェアアプリケーションの集合体である。例えば、オンライン小売ソフトウェアシステムは、注文管理アプリケーション、カタログアプリケーション、データベースなどの複数の分散アプリケーションから構成される。オンライン小売システムのビジネス機能を実装するためには、これらの分散アプリケーション間の相互接続が必要である。
注
マイクロサービスアーキテクチャ
マイクロサービスアーキテクチャとは、ソフトウェアアプリケーションを、独立、自律(独立して開発、デプロイ、スケール可能)、ビジネス能力指向、疎結合のサービスの集合体として構築することである。1
マイクロサービスアーキテクチャと クラウドネイティブアーキテクチャの出現では、複数のビジネス機能のために構築された従来のソフトウェアアプリケーションは、マイクロサービスとして知られる、きめ細かく、自律的で、ビジネス機能指向のエンティティの集合体にさらに分離される。そのため、マイクロサービスベースのソフトウェアシステムでは、プロセス間(またはサービス間、アプリケーション間)通信テクニックを使って、マイクロサービスをネットワーク接続する必要もある。例として、マイクロサービスアーキテクチャを使って実装された同じオンライン小売システムを考えてみると、注文管理、検索、チェックアウト、配送など、複数の相互接続されたマイクロサービスが発見できるだろう。従来のアプリケーションと異なり、マイクロサービスはきめ細かいため、ネットワーク通信リンクの数が増殖する。したがって、どのようなアーキテクチャスタイル(従来型アーキテクチャかマイクロサービスアーキテクチャか)にせよ、プロセス間通信テクニックは最新の分散ソフトウェア・アプリケーションの最も重要な側面の1つである。
プロセス間通信は通常、同期リクエスト/レスポンス・スタイルまたは非同期イベント駆動通信スタイルのメッセージパッシングを使用して実装される。同期通信スタイルでは、クライアントプロセスはネットワークを介してサーバプロセスにリクエストメッセージを送信し、レスポンスメッセージを待つ。非同期イベント駆動通信では、プロセスはイベントブローカーとして知られる仲介者を使うことで、非同期メッセージパッシングで通信する。ビジネスのユースケースに応じて、実装したい通信パターンを選択することができる。
最新のクラウド・ネイティブ・アプリケーションやマイクロサービスの同期リクエスト/レスポンス・スタイルの通信を構築する場合、最も一般的で従来のアプローチは、RESTfulサービスとして構築することだ。RESTfulサービスでは、アプリケーションやサービスをリソースのコレクションとしてモデル化し、HTTPプロトコル上で行われるネットワーク呼び出しによってアクセスしたり状態を変更したりすることができる。しかし、ほとんどのユースケースにおいて、RESTfulサービスは、プロセス間通信を構築するためには、かなりかさばり、効率が悪く、エラーが発生しやすい。RESTfulサービスよりも効率的で、スケーラビリティが高く、疎結合のプロセス間通信技術が求められることが多い。そこで、分散アプリケーションやマイクロサービスを構築するための最新のプロセス間通信スタイルであるgRPCが登場する(本章の後半で、gRPCとRESTful通信を比較対照する)。gRPCは、主に同期リクエスト/レスポンススタイルの通信を使用するが、初期通信が確立されれば、完全に非同期orストリーミングモードで演算子を動作させることができる。 ...