ある企業がAzureでイベント駆動型のマイクロサービスアーキテクチャを構築している。あるサービスでイベントが発生した際に、複数の下流サービス(在庫更新・メール通知・分析ログ記録)に同時にイベントを配信したい。各下流サービスは独立して非同期に処理する。最も適切なAzureサービスはどれか。
- A. Azure Event Grid:イベントを複数のエンドポイントにルーティングするサーバーレスイベントバス
- B. Azure Service Bus(トピック/サブスクリプション機能):1つのメッセージを複数のサブスクライバーに配信するPub/Subメッセージング
- C. Azure Event Hubs:大量のストリーミングデータを取り込む
- D. Azure Queue Storage:FIFOキューで1つのコンシューマーに配信する
解答と解説を見る
正解: B
Azure Service Busのトピック/サブスクリプション機能はPub/Sub(発行/購読)パターンを実装しており、1つのメッセージを複数のサブスクリプション(各下流サービス)に独立してコピー・配信できる。各サブスクリプションは独自のキューとして機能し、下流サービスが非同期で独立して処理できる。選択肢DのQueue Storageは1つのメッセージを1つのコンシューマーが受け取るFIFOキューであり、複数サービスへの同時配信には適さない。選択肢AのEvent GridもPub/Sub機能を持つが、サービスバスと比べると配信の信頼性保証(デッドレターキュー・メッセージロックなど)がService Busの方が充実しており、エンタープライズメッセージングには適している。選択肢CのEvent Hubsは大量ストリーミング取り込みに特化しており、マイクロサービス間のメッセージング連携よりもビッグデータ収集向けである。