実戦シナリオ定義問題

あるスタートアップが「ユーザーがアプリ内でアクションを行うたびにイベントを送信し、そのイベントを複数のマイクロサービス(分析・通知・ログ記録)が非同期で消費する。各マイクロサービスは独立したペースで処理し、あるサービスが停止しても他のサービスの処理に影響しない」アーキテクチャを設計しています。最適なメッセージングサービスはどれか?

A.Azure Queue Storage(各マイクロサービスが同じキューをポーリング)
✗ Queue Storageは単一のキューを複数コンシューマーが競合して読む構造。同一メッセージを複数のマイクロサービスが独立して受け取ることはできない(メッセージは最初に読んだコンシューマーが処理して削除)。
B.Azure Event Hubs(コンシューマーグループで各マイクロサービスが独立して消費)← 正解
✓ 正解。Event Hubsのコンシューマーグループにより、各マイクロサービス(分析・通知・ログ記録)がそれぞれ独立したオフセットを持ち、同一イベントを独立したペースで消費できる。あるグループが停止しても他グループには影響しない。
C.Azure Service Bus(トピックとサブスクリプションで各マイクロサービスに配信)
✗ Service Bus(トピック/サブスクリプション)も複数コンシューマーへの同一メッセージ配信が可能。ただし毎秒数百万件の高スループットIoTイベントにはEvent Hubsが優れる。このシナリオでは機能的にどちらも正解に近いが、ユーザーアクションの高スループットIngestionにはEvent Hubsが定番。
D.Azure Event Grid(イベントルーティングで各マイクロサービスに通知)
✗ Event Gridはイベントの通知・ルーティング(Push型)に特化しており、イベントの保持・再処理や独立したペースでの消費(Consumer Group概念)はない。

DP-900:Microsoft Azure Data Fundamentals の問題一覧