世界中の2,000店舗からPOSデバイスのデータを収集するAzureソリューションを開発しています。
1台のデバイスは24時間ごとに2MBのデータを生成します。
各店舗には1〜5台のデバイスがあり、データを送信します。
デバイスデータをAzure Blobストレージに保存する必要があります。
デバイス識別子に基づいてデータを関連付ける必要があります。
将来的に店舗数が増えることが予想されます。
デバイスデータを受信するためのソリューションを実装する必要があります。 ソリューション: Azure Service Busをプロビジョニングします。相関フィルター(correlation filter)を使用してデバイスデータを受信するようにトピックを構成します。
このソリューションは目標を達成していますか?
正解:B
このシナリオにおいて、Azure Service Busを使用するのは適切ではありません。理由は主に2つあります。
1. データ量とスケーラビリティ(Ingestionの特性)
2,000店舗 × 平均3台 × デバイスデータ = 大量の継続的なデータストリームが発生します。
Service Busは、高度なメッセージング(キューイング、セッション管理、トランザクション)を目的としたサービスであり、毎秒数万〜数百万のイベントを「流し込む(Ingest)」ような、大規模なストリーミングデータ収集には向いていません。
2. デバイスデータ収集のベストプラクティス
大量のデバイス(IoTデバイスやPOSなど)からデータを収集する場合、Azureで推奨されるサービスは Azure Event Hubs または Azure IoT Hub です。
Azure Event Hubs は、1秒間に数百万のイベントを受信できるように設計されており、データをそのまま Azure Blob ストレージに保存する Capture機能 も備えています。
この問題の要件である「将来的な店舗増」や「大量のデバイス」への対応には、Event Hubsが最適です。
3. 「相関フィルター」の誤用
Service Busのトピックと相関フィルターは、メッセージを特定のサブスクライバー(購読者)に振り分けるための機能です。
今回の要件である「Blobストレージへの保存」と「デバイスIDによる関連付け」を大規模に行うためには、Event Hubsのパーティション機能(Partition KeyにデバイスIDを指定する)を使用するのが正しい設計です。

コメント