azure iot edge shallow dive...azure iot edgeとは...

46
Azure IoT Edge Shallow Dive 2018/1/27

Upload: others

Post on 15-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Azure IoT Edge

Shallow Dive2018/1/27

Page 2: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge
Page 3: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Azure IoT Edgeとは

これまでクラウドで行っていた分析やビジネスロジックをデバイスで行えるようにするもの。

Edge Computingと呼ばれる

なぜ必要なのか?

緊急時は速やかに対処したい。

帯域幅の確保や通信コストの懸念。

データや処理の増大によりクラウド環境がスケールしすぎて費用がばかにならない。

※現在プレビューの為、本セッションの内容は2018/1/27時点のものとなり今後仕様が変わる可能性があります。

Page 4: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Azure IoT Edgeとは

これまでクラウドで行っていた分析やビジネスロジックをデバイスで行えるようにするもの。

Edge Computingと呼ばれる

なぜ必要なのか?

緊急時は速やかに対処したい

帯域幅の確保や通信コストの懸念

データや処理の増大によりクラウド環境がスケールしすぎて費用がばかにならない

Page 5: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Computingの変遷

Centralized Distributed Cloud Edge

Page 6: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Computingの変遷

Centralized Distributed Cloud Edge

Page 7: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Computingの変遷

Centralized Distributed Cloud Edge

Page 8: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Computingの変遷

Centralized Distributed Cloud Edge

進んでいるようで戻っている

Page 9: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Cloud Computing から Edge Computing へ

Cloud Computingにおける課題

端末からクラウドまでの通信経路(携帯電話網⇒インターネット⇒DC)がある為、ネットワークによる遅延が発生しうる。

ユーザーが増えれば増えるほどコストが上がる。

解決策

ネットワーク遅延を最小限にするようになるべく近い場所のサーバーで処理させ遅延を最小化。

携帯の基地局にサーバーを設置?(ほんとにあるかどうか知りません)

なるべく近いDCへリクエスト。

東京のユーザーなら東日本リージョンのDCへ。(効果薄)

なるべく意味の無いデータはクラウドまで上げないことでコストダウン。

フィルタリングやサマライズ

⇒ Edge Computing

Page 10: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Azure IoT Edgeとは

これまでクラウドで行っていた分析やビジネスロジックをデバイスで行えるようにするもの。

Edge Computingと呼ばれる

なぜ必要なのか?

緊急時は速やかに対処したい

帯域幅の確保や通信コストの懸念

データや処理の増大によりクラウド環境がスケールしすぎて費用がばかにならない

Page 11: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

例えば Connected Car

Page 12: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

例えば Connected Car

Stop!

通信してたら間に合わない…

Page 13: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Edge で処理

Page 14: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Edge で処理

Stop!

Page 15: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Edge で処理

Stop!

その場で判断

ログとかは後でもいい

Logとか

Page 16: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Azure IoT Edgeとは

これまでクラウドで行っていた分析やビジネスロジックをデバイスで行えるようにするもの。

Edge Computingと呼ばれる

なぜ必要なのか?

緊急時は速やかに対処したい

帯域幅の確保や通信コストの懸念

データや処理の増大によりクラウド環境がスケールしすぎて費用がばかにならない

Page 17: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

例えば 画像解析システム

・・・

Page 18: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

例えば 画像解析システム

・・・

Page 19: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

例えば 画像解析システム

・・・

リソース食い過ぎ

Page 20: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

例えば 画像解析システム

・・・

リソース食い過ぎ

通信コスト高すぎ

Page 21: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Edgeで処理

・・・

Page 22: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Edgeで処理

・・・

Page 23: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Edgeで処理

・・・

Page 24: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Edgeで処理

・・・

クラウド側で意味のあるデータだけを送信

Page 25: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Edge Computingの事例

IoTのシナリオだけとは限りません

SOMPOホールディングス

深層学習はクラウドより自社構築が安いhttp://itpro.nikkeibp.co.jp/atcl/column/17/090600369/090600005/

トライアルホールディングス

エッジで店内動画を分析http://itpro.nikkeibp.co.jp/atcl/column/17/090600369/090600004/

激しいサービス競争http://itpro.nikkeibp.co.jp/atcl/column/17/090600369/090600003/?SS=imgview&FD=54139247

Page 26: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

ここから本題

Page 27: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Azure IoT Edgeの構成

IoT Edge モジュール

Azure のサービス、サード パーティのサービス、またはカスタム コードを実行するコンテナー(Docker)。 Edge デバイスにデプロイし、ローカルで実行。

IoT Edge ランタイム

個々のEdge デバイス上で動作し、各デバイスにデプロイされたモジュールを管理。

クラウドベースのインターフェイス

IoT Edge デバイスをリモートから監視して管理。

Page 28: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Azure IoT Edgeの構成(将来含む)

Edge Device

Module Twin

Device TwinContainer

LocalStorage

Module

Twin

Module

Twin

Module

Twin

Module

Twin

ContainerManagement

FunctionsRuntime

DeviceTwin

Azure IoT Edge

Module

Twin

拡張予定?

加工して送信

Page 29: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Azure IoT Edgeの構成

IoT Edge モジュール

Azure のサービス、サード パーティのサービス、またはカスタム コードを実行するコンテナー(Docker)。 Edge デバイスにデプロイし、ローカルで実行。

IoT Edge ランタイム

個々のEdge デバイス上で動作し、各デバイスにデプロイされたモジュールを管理。

クラウドベースのインターフェイス

IoT Edge デバイスをリモートから監視して管理。

Page 30: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

IoT Edgeモジュール

ビジネス ロジックをモジュール形式でEdgeに展開し管理します。

モジュールは管理の最小単位でStream AnalyticsなどのAzureのサービス、独自のカスタムコードになります。

モジュールは4つの概念で構成されます。

イメージ

ソフトウェアを含むパッケージのこと。(コンテナイメージ)

カスタムコードを実装した際はビルド⇒イメージ化⇒デプロイとなる。

インスタンス

Edgeデバイス上での実行単位。ランタイムによって開始される。

モジュールID

IoT Hubに格納されている情報の一部で、各インスタンスの紐づけに利用される。

モジュールツイン(後述)

IoT Hub に格納されているJSONドキュメントで、メタデータ、構成、条件、インスタンスの状態等の情報が含まれています。

Page 31: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

モジュールツインとは

デバイスツインに紐づくモジュールのメタデータ等。

簡易DocumentDBのようなもの。

JSON型

クエリがSQLライクでシンプル。

デバイス側、サービス側とで権限などが異なる。

どこがどう違うのかをしっかり理解して設計する必要がある。

JSON配列は保存できない。

どうしてもやりたければサイズ制限内でうまくやるしかない。

楽観的実行制御を使用。

デバイスから見たとき、競合相手がいないので意識することはないがサービス側は複数人が触る可能性があるため注意が必要。

Device Twin

Module Twin

Module Twin

Module Twin

Page 32: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

デバイスツインの構成

デバイスからは見えない

変更通知機能がある。

Page 33: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

JSONのサンプル

Tags

Desired

Reported

DevieID

Page 34: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

各項目の使い方とか

•その名の通り、一般的な「タグ」の解釈で良い。

•階層化も可能。

•デバイスからは見えない為、デバイスに必要となる情報はここに入れない。

•デバイスへの変更通知も無いため、好きなタイミングで変更できる。

Tags

•サービスがデバイスの構成を同期するため使用する。

例)送信間隔:5分など

•デバイスからは読み取り専用な為、安全。

•プロパティの変更はリアルタイムで通知される。(イベントが発火する)

Desired

•デバイスがサービスと状態を同期するために使用する。

例)”起動時刻”:”HH:mm:ss”, ”アップデート”:”ダウンロード済み”

•プロパティの変更はリアルタイムで通知される。(イベントが発火する)

•サービス側ではクエリを発行し状態を確認する。

例)SELECT * FROM DEVICES WHERE properties.reported.updateStatus = ‘downloaded’

Reported

Page 35: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

クエリの基本

FROM句は「devices」固定。

オブジェクト型なのでSELECT句、WHERE句ともに「○○. ○○ 」と書く。

SELECT

tags.location.region

FROM

devices

WHERE

tags.location.plant = ‘Redmond43’

AS,IN,GROUP BY も使える。

関数もある。一般的な集計関数(sum,maxなど)、文字列操作(CONCAT,SUBSTRING)

などなど

Page 36: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Azure IoT Edgeの構成

IoT Edge モジュール

Azure のサービス、サード パーティのサービス、またはカスタム コードを実行するコンテナー(Docker)。 Edge デバイスにデプロイし、ローカルで実行。

IoT Edge ランタイム

個々のEdge デバイス上で動作し、各デバイスにデプロイされたモジュールを管理。

クラウドベースのインターフェイス

IoT Edge デバイスをリモートから監視して管理。

Page 37: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

IoT Edgeランタイムとは

2つの役割に分けられる。

IoT Edge hub

IoT Hubへ接続する為のローカルプロキシ。

モジュールまたはリーフデバイスなどのクライアントからの論理接続数を取得し1つの物理接続へ統合することでクラウドへの実際の接続数を最適化している。

クライアントからすると独自に接続していると認識する。

IoT Edge agent

モジュールのインスタンス化、実行、クラウドへステータスを報告。

Page 38: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

IoT Edgeランタイムとは

2つの役割に分けられる。

IoT Edge hub

IoT Hubへ接続する為のローカルプロキシ。

モジュールまたはリーフデバイスなどのクライアントからの論理接続数を取得し1つの物理接続へ統合することでクラウドへの実際の接続数を最適化している。

クライアントからすると独自に接続していると認識する。

IoT Edge agent

モジュールのインスタンス化、実行、クラウドへステータスを報告。

Page 39: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

IoT Edge hubのアーキテクチャ

IoT Edge hub は Message Broker

ModuleはMessage Brokerを通じたPub/Subメッセージングモデル

Edge Device

Module Twin

Device Twin

IoT Edge hub(Message Broker)

Azure IoT Edge

Module AModuleTwin

Publisher Subscriber

Module BModuleTwin

Publisher Subscriber

Page 40: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

IoT Edgeランタイムとは

2つの役割に分けられる。

IoT Edge hub

IoT Hubへ接続する為のローカルプロキシ。

モジュールまたはリーフデバイスなどのクライアントからの論理接続数を取得し1つの物理接続へ統合することでクラウドへの実際の接続数を最適化している。

クライアントからすると独自に接続していると認識する。

IoT Edge agent

モジュールのインスタンス化、実行、クラウドへステータスを報告。

Page 41: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

IoT Edgeランタイムとは

2つの役割に分けられる。

IoT Edge hub

IoT Hubへ接続する為のローカルプロキシ。

モジュールまたはリーフデバイスなどのクライアントからの論理接続数を取得し1つの物理接続へ統合することでクラウドへの実際の接続数を最適化している。

クライアントからすると独自に接続していると認識する。

IoT Edge agent

モジュールのインスタンス化、実行、クラウドへステータスを報告。

本日は割愛

Page 42: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

デモデプロイしてみる

Page 43: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

IoT Edge のデプロイ前提条件 Windows編

以下のOSバージョンであること

Windows 10 Fall Creators Update

Windows Server 1709 (ビルド 16299)

x64 ベース デバイス上の Windows IoT Core (ビルド 16299)

仮想マシンで試す場合は以下を満たすこと

ExposeVirtualizationExtensions をtrueに

メモリは2GB以上

DockerとPython2.7をインストールしてpipコマンドをつかえるようにしておく

Page 44: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

Pythonが上手く動かない時

Path(環境変数)が通ってない

¥Python¥Python27

¥Python¥Python27¥Scripts

ルートフォルダはあなた次第

pipがインストールされてない

https://bootstrap.pypa.io/get-pip.py よりget-pip.pyを任意のディレクトリに保存

保存したディレクトリで下記コマンドを実行

python get-pip.py

下記コマンドを実行しインストールされたか確認

pip –V

pypiwin32のバージョンを確認

219だとうまくいく

Page 45: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

IoT Edge のデプロイ Windows編

IoT Edge 制御スクリプトをダウンロード

pip install -U azure-iot-edge-runtime-ctl

IoT Edge デバイスを登録

ポータルからポチポチ

接続文字列をコピーしておく

ランタイムを構成

iotedgectl setup --connection-string "{接続文字列}" --auto-cert-gen-force-no-passwords

ランタイムを開始

iotedgectl start

実行確認

docker ps

ポータルから疎通確認できる

Page 46: Azure IoT Edge Shallow Dive...Azure IoT Edgeとは これまでクラウドで行っていた分析やビジネスロジックをデバ イスで行えるようにするもの。 Edge

参考リンク

http://itpro.nikkeibp.co.jp/atcl/column/17/090600369/090600005/

http://itpro.nikkeibp.co.jp/atcl/column/17/090600369/090600004/

http://itpro.nikkeibp.co.jp/atcl/column/17/090600369/090600003/?SS=imgview&FD=54139247

https://github.com/Azure/iot-edge

https://github.com/Azure/iot-edge/blob/master/v1/samples/ble_gateway/iot-hub-iot-edge-physical-device.md

https://github.com/Azure/iot-edge-modbus

https://www.softbanktech.jp/service/list/ms-azure_blog/ms-azure_blog_0019/

https://www.softbanktech.jp/service/list/ms-azure_blog/ms-azure_blog_0020/

https://azure.microsoft.com/ja-jp/services/iot-edge/

https://docs.microsoft.com/ja-jp/azure/iot-edge/