こんにちは、 @dz_ こと大平かづみです。
Microsoft Azure Advent Calendar 2018 14日目の記事です。(遅くなりました )
Prologue - はじめに
Azure IoT Hub を勉強していて、IoT Hub からほかの Azure リソースに連携する方法として message routing があることを知り、今まで使っていた Azure Stream Analytics との違いについて気になったのでまとめてみました。
まとめ
所感
まとめてみた結果、IoT Hub message routing はイベント振分け、Stream Analytics はデータストリームという位置づけがしっくりきました。
とはいえ、IoT Hub message routing もデバイステレメトリも扱えるので、基本的には IoT Hub message routing で事足りそうです。IoT Hub の料金プランの中で使え、ライフサイクルの変更や、Twin の変更などのイベント(プランの制限による※1)も扱えます。
そして、データ量が多い場合や、より柔軟なクエリ処理を行いたい場合、または IoT Hub message routing にはないエンドポイントを使いたい場合に Stream Analytics を選択するとよさそうです。
処理できるメッセージ
項目 | IoT Hub message routing | Stream Analytics |
---|---|---|
デバイスからのテレメトリ | 〇 | 〇 |
デバイスのライフサイクルイベント(※1) | 〇 | △(※2) |
Twin の変更イベント(※1) | 〇 | △(※2) |
- ※1 ライフサイクルイベントや Twin のイベントは、Free または Standard tier でのみ使えます。詳しくはこちら「ソリューションに適した IoT Hub のレベルを選択する | Microsoft Docs」をご確認ください。
- ※2 各種イベントは IoT Hub message routing で Built-in Event Hub にルーティングすれば、 Stream Analytics の Input で受けとれると思います。(未検証)
出力先
出力先 | IoT Hub message routing | Stream Analytics |
---|---|---|
Azure Blob Storage | 〇 | 〇 |
Azure Service Bus Queues | 〇 | 〇 |
Azure Service Bus Topics | 〇 | 〇 |
Azure Event Hub | 〇 | 〇 |
Azure Data Lake Store | × | 〇 |
Azure SQL Database | × | 〇 |
Power BI | × | 〇 |
Table Storage | × | 〇 |
Azure Cosmos DB | × | 〇 |
Azure Functions | × | 〇 |
その他
項目 | IoT Hub message routing | Stream Analytics |
---|---|---|
特徴 | IoT Hub におけるメッセージルーティング | 複数の入出力に対応したデータストリーム |
コスト | IoT Hub の料金プランに含まれる | ストリームユニットごとに時間に応じて課金 |
レイテンシ | 低(平均 500ms 未満の増加のみ) | 低(1 秒間に数百万のデータを並列処理) |
時間をさかのぼって処理できる | × | 〇 |
SLA | message routing に対する SLA はない(※3) | 〇 SLA for Stream Analytics |
入力元 | IoT Hub のみ | Azure IoT Hub, Event Hub, Blob storage |
出力先 | (上述) | (上述) |
- ※3 IoT Hub 自体の SLA は「IoT Hub の SLA」をご参照ください。
機能紹介
Azure IoT Hub message routing
- IoT Hub の一機能
- デバイスからのテレメトリや、イベントをルーティングする
- 出力先(エンドポイント)
- Built-in Event Hub(IoT Hub の一部として提供される Event Hub)
- 上述
- 専用のクエリによってフィルタリング、ルーティングを仕分けられる
- テストメッセージで動作確認可能
- Fallback route: クエリにマッチしなかったメッセージの収集
- diagnostic settings や Azure Monitor でモニタリング可能
詳細は「Azure IoT Hub メッセージ ルーティングについて | Microsoft Docs」にまとまっているので、ぜひ見てみてください。
Azure Stream Analytics
- 様々な入力元、出力先をもつイベント処理エンジン
- 大量のデータを並列で処理でき、スケール可能、パーティション対応
- SQLライクなクエリでフィルタリング、加工、振り分けができる
- 用途
- IoT におけるテレメトリのリアルタイム分析
- Web のログや動向分析、など
- 入力元、出力先
- 上述
詳細は「Azure Stream Analytics の概要 | Microsoft Docs」をはじめとしたドキュメントをご参照ください。
おまけ
メッセージとテレメトリについて
余談ですが、いろいろ調べていると messages と telemetry という言葉が出てきて混乱しました(笑) IoT Hub では以下のような意味合いで言葉が使われているようです。
用語 | 説明 |
---|---|
メッセージ (messages) | デバイス⇔クラウド間で送受信されるデータ全般を指す。テレメトリやイベントを含む。 |
テレメトリ (telemetry) | デバイスから送られてくる任意のデータ。 |
イベント (events) | ライフサイクルや Twin に応じたイベントの情報をもつデータ。 |
References
IoT Hub message routing
- Understand Azure IoT Hub message routing | Microsoft Docs
- Azure IoT Hub message routing dramatically simplifies IoT solution development | Blog | Microsoft Azure
- IoT Hub message routing: now with routing on message body | Blog | Microsoft Azure
- Configure message routing with Azure IoT Hub (.NET) | Microsoft Docs
Stream Analytics
- Azure Stream Analytics Documentation - Tutorials, API Reference | Microsoft Docs
- Understand inputs for Azure Stream Analytics | Microsoft Docs
- Understand outputs from Azure Stream Analytics | Microsoft Docs
Others
Epilogue - おわりに
IoT Hub message routing を活用すれば、Stream Analytics を動かしてると課金が…という心配も減りますね!
適材適所で使っていきましょう~