Posted at

Check! Azure IoT Hub message routing と Azure Stream Analytics の使いどころ比較

こんにちは、 @dz_ こと大平かづみです。

Microsoft Azure Advent Calendar 2018 14日目の記事です。(遅くなりました :sweat_drops:


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」をはじめとしたドキュメントをご参照ください。


おまけ


メッセージとテレメトリについて

余談ですが、いろいろ調べていると messagestelemetry という言葉が出てきて混乱しました(笑) IoT Hub では以下のような意味合いで言葉が使われているようです。

用語
説明

メッセージ (messages)
デバイス⇔クラウド間で送受信されるデータ全般を指す。テレメトリやイベントを含む。

テレメトリ (telemetry)
デバイスから送られてくる任意のデータ。

イベント (events)
ライフサイクルや Twin に応じたイベントの情報をもつデータ。


References


IoT Hub message routing


Stream Analytics


Others


Epilogue - おわりに

IoT Hub message routing を活用すれば、Stream Analytics を動かしてると課金が…という心配も減りますね!

適材適所で使っていきましょう~ :ok_woman: