Azure認定資格 WEB問題集&徹底解説
AZ-900:Microsoft Azure Fundamentals
問題文と選択肢
- 異なるアプリケーションコンポーネント間の非同期通信
- 大量のデータの一時的なバッファリング
- 複雑なトランザクション処理
- 処理に時間のかかるタスクのキューイング
A. 異なるアプリケーションコンポーネント間の非同期通信
適切な用途です。Azure Queue Storage の本来の目的が、アプリケーションのコンポーネント同士を疎結合にする非同期通信です。
送信側はメッセージをキューに置くだけで応答を待たず、受信側は自分のペースで取り出して処理します。片方が停止してもメッセージはキューに残るため、障害の連鎖を防げるのが利点です。
B. 大量のデータの一時的なバッファリング
適切な用途です。急激なリクエストの増加をキューがいったん受け止め、バックエンドは処理できる速度で消化する(キューベースの負荷平準化)という使い方は典型的なパターンです。
Queue Storage は 1 つのストレージ アカウントの容量上限までメッセージを保持でき、スパイクを吸収するバッファとして機能します。
C. 複雑なトランザクション処理
正解(=適切でない用途)。Queue Storage はメッセージを預けて渡すだけの仕組みであり、複数の更新をひとまとまりとして扱うACID なトランザクション(複数操作の原子性・一貫性・ロールバック)を提供しません。
また、既定の受信では厳密な順序保証も一度きりの配信保証もなく(可視性タイムアウトの満了により再配信され得る=at-least-once)、受信側はべき等な処理を前提に作る必要があります。
複雑なトランザクション処理が必要なら、Azure SQL Database や Azure Cosmos DB などのデータベース サービスを使うのが正しい設計です。
D. 処理に時間のかかるタスクのキューイング
適切な用途です。動画のエンコードや帳票生成のように時間のかかる処理をキューに積み、ワーカー(Functions や VM)が非同期に処理するのは Queue Storage の代表的なユース ケースです。
Web フロントはリクエストを即座に返せるうえ、キューの長さに応じてワーカーをスケールアウトさせる設計にもつなげられます。
キューは「渡す」もの、DB は「守る」もの。ACID なトランザクションを求めた時点でキューは対象外。
正解への思考ルート
問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。| 要件 | 判断ポイント |
|---|---|
| 設問は「適切でないもの」を選ぶ(否定形) | 3 つは正しい用途、1 つだけ役割の異なるサービスが担うべき用途。読み違いに注意 →選択肢(C)が正解 |
| コンポーネント間の非同期通信・疎結合 | キューの第一の存在意義。送信側と受信側を切り離す →選択肢(A)は適切な用途 |
| 大量データの一時的なバッファリング(負荷平準化) | スパイクをキューで吸収し、バックエンドは処理可能な速度で消化できる →選択肢(B)は適切な用途 |
| 時間のかかるタスクのキューイング | ワーカーが非同期に処理し、キュー長に応じてスケールアウトできる →選択肢(D)は適切な用途 |
| 複雑なトランザクション処理(原子性・一貫性・ロールバック) | キューに ACID トランザクションの機能はない。Azure SQL Database / Cosmos DB の領域 →選択肢(C)が正解 |
ひっかけポイント
- 「適切でないもの」を問う否定形の設問。急ぐと「キューの正しい用途」である A を選んでしまう。設問文の否定を必ず確認する
- 「大量のデータの一時的なバッファリング」は一見データ ストア的に見えるが、負荷平準化はキューの王道パターン。メッセージの長期保管庫として使うわけではない点だけ押さえる
- Queue Storage はFIFO の厳密な順序保証も、重複なしの配信保証もない(可視性タイムアウトで再配信され得る)。順序・重複排除・トランザクション的な受信が要るなら Azure Service Bus
- 「キューにデータを入れておけば DB 代わりになる」という発想が罠。メッセージ サイズ(64 KB)や保持期間の上限もあり、永続的なデータ管理の道具ではない
出題バリエーション
同じ知識が本番では条件を変えて出題されます。| 問題文がこう変わったら | 正解はこう変わる |
|---|---|
| 「厳密な FIFO 順序・重複検出・トランザクションが必要なメッセージング」 | Azure Service Bus(セッション、重複検出、トランザクション対応)が正解軸に。 |
| 「Azure リソースの状態変化をトリガーに処理を起動したい」 | Azure Event Grid が正解に。キューではなくイベント配信の論点。 |
| 「リレーショナルなデータを整合性を保って更新したい」 | Azure SQL Database が正解に。本問で「適切でない」とされた用途がそのまま主題になる。 |
| 「キューの長さに応じてワーカーを自動でスケールしたい」 | Azure Functions(キュー トリガー)や VM スケール セットの自動スケールが正解軸に。Queue Storage の王道構成。 |
- 異なるアプリケーションコンポーネント間の非同期通信
- 大量のデータの一時的なバッファリング
- 複雑なトランザクション処理
- 処理に時間のかかるタスクのキューイング