メッセージキューは非同期通信を有効にします。つまり、メッセージの作成や消費を行うエンドポイントは、各エンドポイント同士ではなく、キューとやり取りします。プロデューサーは、処理を待たずにリクエストをキューに追加できます。コンシューマーは、メッセージが使用可能な場合にのみメッセージを処理します。システム内のコンポーネントが別のコンポーネントを待って停止することはなく、データフローが最適化されます。
キューはデータを永続化し、システムのさまざまな部分がオフラインになったときに発生するエラーを減らします。メッセージキューでさまざまなコンポーネントを切り離すことにより、耐障害性をより向上させることができます。システムの一部にアクセスできなくなっても、他の部分は引き続きキューを操作できます。キュー自体をミラーリングして可用性をさらに高めることもできます。
メッセージキューを使用すると、必要に応じて正確にスケーリングできます。ワークロードがピークに達すると、アプリケーションの複数のインスタンスが衝突のリスクなしにリクエストをキューに追加できます。これらの受信リクエストでキューが長くなるにつれて、ワークロードをコンシューマーのフリートに分散できます。プロデューサー、コンシューマー、そしてキュー自体は、すべてオンデマンドで拡大または縮小できます。
メッセージキューは、コンポーネント間の依存関係を排除して分解したアプリケーションのコーディングを大幅に簡略化します。ソフトウェアコンポーネントが通信コードで重くなることはなく、個別のビジネス機能を実行するように設定できます。
メッセージキューは、モノリシックなアプリケーション、マイクロサービス、あるいはサーバーレスアーキテクチャを使用しているすべての方にとって、分散システムを切り離すとても簡単な方法です。
アプリケーションの分割
メッセージキューを使用して、モノリシックなアプリケーションを切り離します。1 つの実行ファイル内で複数の機能を実行するのではなく、複数のプログラムがプロセス間でメッセージを送信することで情報を交換できるため、テスト、デバッグ、進化、スケールが容易になります。
マイクロサービスへの移行
イベントと非同期メッセージングに基づくマイクロサービス統合パターンは、スケーラビリティと耐障害性を最適化します。メッセージキューサービスを使用して複数のマイクロサービスを調整したり、マイクロサービスにデータ変更を通知したりできます。または、イベント消火ホースとして IoT データ、ソーシャルデータ、リアルタイムデータを処理することも可能です。
サーバーレスへのシフト
サーバーなしでマイクロサービスを構築したり、サーバーにデプロイしたり、任意の種類のソフトウェアをインストールしたりしたら、メッセージキューを使用して、信頼性が高くスケーラブルなサーバーレス通知、プロセス間通信を行え、サーバーレス機能と PaaS の可視性がもたらされます。