AZ-305:Designing Microsoft Azure Infrastructure Solutions インフラストラクチャソリューションの設計 問11
インフラストラクチャソリューションの設計/アプリケーションアーキテクチャの設計ある企業は、ストレージ アカウントの特定のコンテナーに画像ファイルが作成されたことを契機に、画像の縮小を行う Azure Functions と、管理者への通知を行う Logic Apps の 2 つを起動します。対象は特定のフォルダー プレフィックスのファイルだけで、受信側を常時稼働させず、ファイル作成から数秒以内に 2 つの処理がそれぞれ起動し、料金は処理したイベント数に応じた従量にしたいと考えています。設計として適切なものはどれですか。
当サイトのオリジナル問題(AZ-305:Designing Microsoft Azure Infrastructure Solutionsの出題範囲「インフラストラクチャソリューションの設計」に対応。実際の試験問題ではありません)
- AAzure Event Hubs のイベント ハブにファイル情報を送信し、2 つのコンシューマー グループから読み取る
- BAzure Service Bus のキューを作成し、2 つのアプリがメッセージをポーリングして処理する
- CAzure Event Grid のストレージ アカウントのシステム トピックを使用し、サブジェクト フィルターを付けた 2 つのイベント サブスクリプションを作成する
- DAzure Queue Storage にメッセージを書き込み、2 つのアプリが共通のキューを定期的に確認する
正解:C
解説
Azure Event Grid は Blob の作成などの Azure サービスのイベントを、システム トピックとして追加の実装なしで発行できます。イベント サブスクリプションごとにサブジェクト(プレフィックス)のフィルターを設定でき、Functions や Logic Apps などのハンドラーへプッシュ配信されるため、ポーリングが不要で、料金も処理したイベント数に応じた従量です。Event Hubs は大量のストリーミング取り込み、Service Bus と Queue Storage はメッセージ キューイング向けで、いずれもポーリング(プル)型の読み取りが前提です。
選択肢ごとの解説
- A誤り。Event Hubs は大量のテレメトリ取り込み向けで、スループット ユニットなどの容量課金です。コンシューマーが読み取りに行くプル型で、Blob 作成のイベントを通知する目的には過剰です。
- B誤り。Service Bus は信頼性の高いメッセージ キューイング向けで、受信側がポーリングする設計になります。また 1 つのキューを 2 つのアプリが読むと各メッセージは一方にしか届かず、独立した 2 つの処理を起動するファンアウトになりません。Blob 作成イベントをストレージ側から直接発行する仕組みも別途必要です。
- C正しい。システム トピックがイベントを発行し、サブジェクト フィルターで対象を絞って 2 つのハンドラーへプッシュ配信できます。従量課金でポーリングも不要です。
- D誤り。Queue Storage は単純なキューで、ポーリングが前提です。プレフィックスによるフィルターや複数ハンドラーへの配信も自前で実装する必要があります。