第2章. コミュニケーションパターン
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
クラウド ネイティブ・アプリケーションは、サービス間通信テクニックによって、外部システムだけでなく、互いに接続されたマイクロサービスの集合体で構成される。マイクロサービスの急増と増え続けるビジネス要件に伴い、クラウドネイティブアプリケーションではマイクロサービス間の堅牢性コミュニケーションを構築することが、クラウドネイティブアーキテクチャにおける最も困難な課題の1つとなっている。
この章では、クラウド・ネイティブ・アプリケーションの構築に使用できる通信パターンと実装技術について幅広く理解する。これらのパターンは、マイクロサービス、他の外部システム、モバイルアプリやウェブアプリなどのコンシューマアプリケーション間の通信を構築するために使用できる。この章では、主に同期通信と非同期通信の基礎となる通信パターンに焦点を当てる。
同期通信 では、あるマイクロサービスが別のマイクロサービスを呼び出し、特定の時間内にレスポンスを期待する。このために、リクエスト/レスポンスやリモートプロシージャコール(RPC)などのパターンを使用する。非同期通信 では、マイクロサービスは仲介者(メッセージブローカー として知られている)の助けを借りて非同期にメッセージを渡すことで通信し、キューベースのメッセージングやパブリッシャーサブスクライバーメッセージングを利用するパターンを使用する。実際のクラウド・ネイティブ・アプリケーションでは、これらの通信パターンを組み合わせて使うことができる。
これらの基本的な通信パターンに加えて、クラウドネイティブアプリケーションのマイクロサービスのサービスインタフェースの定義に関連するパターンも検討し、マイクロサービスのコンシューマが、同期または非同期の通信テクニックのいずれかを使って、サービスと対話する方法を知ることができるようにする。同期メッセージング・パターンから話を始めよう。
同期メッセージング・パターン
クラウド・ネイティブ・アプリケーションを構築するとき、あるマイクロサービスが1つ以上の他のマイクロサービスを呼び出し、そのビジネスロジックを完了させるためにタイムリーなレスポンスを待つ必要があることに気づくかもしれない。このようなマイクロサービスを構築するには、特定のマイクロサービスのビジネスロジックが1つ以上の他のマイクロサービスやシステムに依存する、同期メッセージングパターンを使用することができる。例えば、オンライン小売アプリケーションを構築する場合、構築するSearchマイクロサービスはクエリを受け付け、関連する下流マイクロサービスやシステムを呼び出してレスポンスを迅速に送信しなければならない。
クラウド・ネイティブ・アプリケーションに同期通信を組み込むには、複数のメッセージング・パターンを使うことができる。最もよく使われるパターンの1つに飛び込んでみよう:リクエスト/レスポンスだ。
リクエスト/レスポンスパターン
リクエスト/レスポンス・パターンは、クラウド・ネイティブ・アプリケーションだけでなく、広く分散コンピューティングの領域でも、おそらく最もよく使われるコミュニケーション・パターンだ。このパターンでは、両者がタイムリーに行動し、両者間でデータを受け渡す必要がある。
仕組み
リクエスト/レスポンスパターン(図2-1)では、1つのマイクロサービス(クライアントとして機能する)がリクエストを送信し、1つ以上の他のマイクロサービスやシステムからのレスポンスを待つ。クライアントアプリケーションのビジネスロジックはレスポンスを受信するまでブロックし、通信チャネルはクライアントアプリケーションがレスポンスを受信するまでオープンにしておかなければならない。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access