Microsoft de:code 2019に参加した内容を紹介します。
Chalk Talkなので、スライド公開のみとなっています。
もし間違いなどあれば、ご指摘いただけますと助かります。
[IT53] Azure IoT どう使う?一歩踏み込んで考えてみよう / 2019年5月29日
TL;DR(要約)
- Azureのサービスの物理的な分類を2つに分類し、「クラウド」と「エッジ」と分けて考えるとわかりやすい。
- Azure IoT Hubは、何十億台ものデバイスをつなげても安定した動作を行うことができるという優位性がある。
- Azure IoT Centralが最もおすすめのサービスである。
リソース
今日話す内容は
- Azure IoT プロダクトを分類する
- Azure IoT Hubの仕組みを知る
- Azure IoT ソリューションを使う
- エッジへオフロード手段を提供する
1. Azure IoT プロダクトを分類する
Azure Iot関係のサービスのポートフォリオはわかりにくい
Azureで用意されているIoT関係のサービスはとしては、一般的に用意されているポートフォリオを見ると4つに分類されている(この中の、Azure Plug And Playはデバイスを作る側が利用するサービス)
しかし、この分類はわかりにくいところがある
一番上の「Azure Priority Verticals」は、論理的な分類であり、業種別のアイコンが表示されている。業種別のソリューションもMicrosoftは提供しているため、このような分類となっている。
Azure IoT Solusionsから下は物理的な分類となっている。ここが3つの分類となっているが、実際に使う側からするとこの分類はわかりにくい
物理的な分類を2つに分類しよう
ポートフォリオの分類は、実際に作るとなるとわかりにくいので、2つに分類するとよい。
- クラウド
- 分析自動化
- 大量データ処理
- 多接続
- エッジ
- デバイス
その他については、Azure IoTではなく、共通で使用するサービス群となる
実際のサービスをさらに分類すると、次のようになる
Azure IoT Hubとは
Azure IoT Hub = Azure Gatewayと考えるとよい
Azure IoT Device Provisioning Service
世界中に広がるようなサービスを使うときに必要なサービスとなる。
まず、デバイスから、Provisioning Serviceに、IoT Hubに振り分ける
IotHubのバックエンドとしては、様々なサンプルコードやシナリオがあるので注意して参照していく必要がある。
非常に速い処理、大量な処理があるときは、IoT Hub以降のサービスが追い付かない。そのようなときは、Stream Anaritics, Cosmos DBを使用する.
Stream Anariticsの使用について
最近はサービスを使用する場合のよくある設計変わってきた。以前は、必ずStream Anariticsを経由していたが、扱う量、スピードがそれほど必要ない場合は、直接Azure Functionを使用してもよい
Azure AIについて
Azure AIと呼ばれるものの実体はない。Azureを使ったAIのひとくくりをAzure AIと言う。AIを使用した自動化を行う場合は、Azure MLとAzure Cognitive Servicesを使用する
ソリューションに関する説明
Azure IoT Central
基調講演でも説明していたが、ワンクリックで簡単に行えるものが、Azure IoT Central
Azure Sphere と Azure IoT Edge
Azure Sphere と Azure IoT Edgeは違う。頭の中で分類してから選ぶのがいいのではないか
Data Box Edge
Data Box Edgeは使ったことがないが、買ってきて使用するハードウェアとのセット商品。ブレードサーバーみたいなものなので、気軽に試すものではないかも。
2. Azure IoT Hubの仕組みを知る
Azure IoT Hubを使用するメリットとは
Azure IoT Hubは必要ないんじゃないか。通知も遅いし。。。という話がある。
これは、何十億台ものデバイスをつなげても安定した動作となるための仕組みがある。そのために反応が数秒かかってします、ということろはある。
しかし、多くのデバイスをつなげた場合の安定動作という点で、Azure IoT Hubの優位性がある。
デバイスごとの認証
あらかじめ登録し認証したデバイスしか接続できない
デバイスとクラウド間の接続の仕組み
※D2C=デバイスからクラウド
※C2D=クラウドからデバイス
通知されるかどうか
図で注目すべき点は、IoT Hubのところで処理が行われている(四角がある)かどうか。
処理が行われておらず、単に通過するものについては、通知が届かない。
例えば、設定変更を行う処理を、ダイレクトメソッドで実装すると、実際に届いたかどうかがわからない。
解決法としては、Desired Propertiesを使用する。
- IoT Hubを書き換える
- IoT Hubからデバイスを書き換える
- デバイス側での実装
- デバイスが、Desired Propertiesを受け取ったら、Reported Propertiesを呼び出す
という処理が必要となるが、通知を自動化できる
余談
Azure IoT Centralを使用すると、自動的に、Desired ~とReported ~が組み込まれる
Event Hubs Message Strings
Partition
送った順番に流れてこないことがある。そこが気になる場合は、パーティションキーを指定するXMLを使用する
Consumer Group
どの順番に読み取ったかを保持している。途中でサービスが落ちた場合の対策として、チェックポイントが実装されている。
3. Azure IoT ソリューションを使う
Azure IoT Solution Accelerators
クリックしたら出来上がるが、自分のAzureの中にたくさんサービスが出来上がる。様々なものを使用する形で
...簡単に言うと出来上がりが複雑なので使い勝手がよくないかな、と思っている
Azure Time Series Insights
長い時系列のデータを両方保持しないといけない場合に使用する。
Azure IoT Central
もっともおすすめ
なにがよいか
簡単に作れるし、できるサービスも少ない。
スケーリングが難しい
欠点を上げるとすれば、サービスが隠蔽されているため、スケーリングするのが難しい。詳細は公開されていないので想像している情報も多い。
DPSを使うのが前提
基本的には、IoT Centralを使うには、DPSを使うのが前提となっている
機能紹介
- Emailに送るとか、Functionsに送ることが簡単にできる
- Continuous Data Exportは注目すべきサービス。リアルタイムに送信することできる
- Event Hubに送ることができるようになったのもよい。
4. エッジへオフロード手段を提供する
Azure Iot Edge
Azure IoT Edgeとは、上図のように定義されているが、どういう用途の時にどれを使えばよいのかがわかりにくい。
IoT Edgeの使いどころ
ゲートウェイとインテリジェントの時には、Iot Edgeがよいが、直接Edgeに送る時には向いていない。
クラウドの機能がエッジで動く
Azure IoT Edgeがいいのは、クラウドの機能がエッジで動く。
例えば、Stream Analyticsぇクラウドで作成したものを送る!とするとエッジ側で動く。クラウド側で作った人工知能がエッジで動くのはいい。
注意点
- 対応しているサービスと対応していないサービスがある。
- IoT Edgeが動いているCPU等のハードによって動く動かないがある。
- 例えば、ラズパイで動くということで動かしてみました。Stream Analytics まで動いたので、Computer Visionを動かしてみよう?あれ動かない...ということがあった。ランタイムは動くが、その上に載っているサービスについて、どのCPUで動くかはサービス次第なところがある。
関連セッション
この中で特に、IT05 "使える" IoT システムをより簡単に!「Azure IoT Central」と「IoT Plug and Play」のご紹介を聞いておくことをお勧めする
QA
Azure Stream Analytics等は、IoTに特化したものではないと思ってよいのか
その通り。IoT Hubに来てしまえば、あとはクラウドの世界。Azure IoTに入っているのは、その組み合わせで使うことが多い。
例えば、Stream Anayticsは、動体センサーで使うことが多い
今ちょうど3000台ぐらいでIoT Hubを使用しているが、C2Dが遅い
C2Dは実装の問題上、どうしても遅い。もし遅いことが問題になる要のであれば、IoT Hubには実装されていないので、同等の機能を自分で実装することになる。