ある製造会社のデータチームが、工場の IoT センサーから毎秒数万件のストリーミングデータを受信し、過去10秒間の異常値(平均温度が閾値を超えた場合)をリアルタイムで検知してアラートを送信するシステムを構築したい。最小限の開発工数で要件を満たす最も適切な Azure サービスの組み合わせはどれか。
- A. Azure Cosmos DB にデータを書き込み、Change Feed トリガーで Azure Functions を起動して集計する
- B. Azure Service Bus でデータを受信し、Azure Functions でリアルタイム集計処理を実装する
- C. Azure Blob Storage にデータを蓄積し、Azure Databricks の定期ジョブで10秒ごとにバッチ処理する
- D. Azure Event Hubs でデータを受信し、Azure Stream Analytics のウィンドウ関数で集計・異常検知を行う
解答と解説を見る
正解: D
リアルタイムなストリーミング集計(10秒間の平均値計算)には、Azure Event Hubs によるイベント取り込みと Azure Stream Analytics のタンブリングウィンドウ(Tumbling Window)関数の組み合わせが最適である。Stream Analytics は SQL ライクなクエリでストリームデータのウィンドウ集計を宣言的に記述でき、コードを書かずに異常検知ロジックを実装できる。選択肢 B の Azure Service Bus はメッセージキューであり、IoT の高スループットストリーミングより Event Hubs が適切であり、Functions での集計実装は開発工数が増加する。選択肢 C のバッチ処理では「リアルタイム検知」の要件を満たせない。選択肢 A の Cosmos DB と Change Feed の組み合わせは書き込み系の用途には有効だが、ウィンドウ集計ロジックの実装コストが高い。
📚 関連サービスの解説: Azure Stream Analytics