Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート

1,335 views

Published on

Global Azure Bootcamp 2019@Tokyo でお話したセッションの資料です。
https://jazug.connpass.com/event/115696/

Published in: Technology
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート

  1. 1. IoT Edge and Serverless playground with Node.js IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート https://jazug.connpass.com/event/115696/
  2. 2. Self introduction 自己紹介
  3. 3. { "name": { "ja": "大平かづみ", "en": "Kazumi OHIRA" }, "currentPosition": "フリーランス", "awards": ["Microsoft MVP"], "favorites": [ "Azure": ["ARM template", "IoT"] ], "twitter": "@dz_" } Me
  4. 4. https://ascii.jp/elem/000/001/838/1838466/index-2.html Me 私の生きざまを 記事にして くださいました! • コミットしているコミュニティ • Cogbot • Node-RED User Group • NoOps
  5. 5. Things I’m making つくってるもの Background image by https://flic.kr/p/8WabtH
  6. 6. https://github.com/dzeyelid/iot-edge-with-serverless-demo
  7. 7. What’s this!?
  8. 8. IoT サーバレス×
  9. 9. Event Hubs trigger Card reader IoT Edge runtime module (Python) module (Node.js) IoT Edge agent IoT Edge hub … IoT Hub Functions SignalR Service update! Web Blob Storage 構成図 Azure
  10. 10. Why I make this? なんでつくってるの?
  11. 11. 学びたいことを詰め込みました • IoT Edgeを習得したい • サーバーレス構成を習得したい • Node.jsを習得したい • Vue.jsを習得したい • 実際に手を動かして体得したい! • ぜんぶつなげてしまえ~
  12. 12. Why make this public? なんでオープンに公開してるの?
  13. 13. エンジニアとしてのチャレンジ • オープンソースに関わりたい • いきなりコミットするのは難しいので、まず自分で作ってみる • 私が好きで得意なことで仕事をしたい • 私がなにに興味持っているか知ってもらえる • 私のスキルをみてもらえる • 同じ興味をもつ人とつながれる • 未来の自分に向けた参考書 • 気持ちを引き締められる
  14. 14. Dive!
  15. 15. IoT Edge study note IoT Edge 研究 ノート
  16. 16. Event Hubs trigger Card reader IoT Edge runtime module (Python) module (Node.js) IoT Edge agent IoT Edge hub … IoT Hub Functions SignalR Service update! Web Blob Storage 構成図 Azure
  17. 17. Azure IoT を構成する要素 • Azure IoT Hub • Azure IoT Edge
  18. 18. Azure IoT Hub
  19. 19. Azure IoT Hub • デバイスと双方向でメッセージを送受信できる出入口 • Azure の他のサービスに連携できる
  20. 20. Azure IoT Hub Functions Event Grid Stream Analytics Service Bus Logic App Blob Storage IoT Hub Things Azure
  21. 21. Azure IoT Hubのおすすめポイント • 扱えるプロトコル • MQTT、AMQPなど • SDKが豊富 • C, C#, Java, Python, Node.jsなどの言語展開 • Device SDK, Service SDK, Provisioning SDK • IoT Hub単体でもメッセージのルーティング、フィルタリングが可能 • 参考: Check! Azure IoT Hub message routing と Azure Stream Analytics の使いどころ比較 (https://qiita.com/dz_/items/babb9404192693d71a65) • Device twinsとDirect method
  22. 22. Device twins • エッジデバイスの「状態」や「メタデータ」を取り扱う • properties • Desired properties • クラウドからエッジデバイスへ要求されるプロパティ • Reported properties • エッジデバイスからクラウドへ報告されるプロパティ • 更新されたタイミングでイベント駆動
  23. 23. Device twins IoT HubThings LEDをしました~ { "ledIsLighted": true } LEDを点灯 してください~ desired reported { "ledIsLighted": true }
  24. 24. Direct method • Device SDKを用いて「メソッド」を定義しておくと、クラウド側からそ のメソッドを実行できる • CLIからも実行できる
  25. 25. Azure IoT Edge
  26. 26. Azure IoT Edge • エッジデバイスで複数の「モジュール」を配置・管理できるサービス • IoT Hubの一部 • コンテナ技術がベースで、コンテナ=モジュールとして扱う • 各モジュールでは、独立したプロセス空間でOSが実行される • モジュールの中で、IoT HubのDevice SDKを使う • クラウドからモジュールの管理・更新ができる • エッジデバイス内でメッセージルーティングを制御できる
  27. 27. IoT Edge runtime module module IoT Edge agent IoT Edge hub … IoT Hub IoT Edge の仕組み Sensors, etc. Device Azure Container Registry
  28. 28. IoT Edge runtime module module IoT Edge agent IoT Edge hub … IoT Hub IoT Edge の仕組み Sensors, etc. Device Azure データストリーム のプロキシ モジュールのライ フサイクル管理 エッジ内の メッセージ ルーティング Container Registry
  29. 29. IoT Edge runtime module module IoT Edge agent IoT Edge hub … IoT Hub IoT Edge の仕組み Sensors, etc. Device Azure モジュールを 自作できる ホストに接続 されたデバイスに も接続可能 Container Registry モジュールの コンテナイメージ を配信
  30. 30. デバイス上ではこのように見えます iotedge コマンド docker コマンド
  31. 31. IoT Edgeのいいところ
  32. 32. IoT Edgeのいいところ • モジュールを利用して、エッジデバイスのシステムを分割できる • 生産性、安全性が向上 • モジュールのライフサイクル管理は、IoT Edgeがしてくれる • ロジックの開発に注力できる • クラウドから管理できることで、継続的な更新ができる • バグ修正、機能追加 • 機械学習の学習済みデータセットの更新、など
  33. 33. IoT Edgeのいいところ • モジュール単位でも、Module twinsやDirect methodが利用でき る • モジュール間のメッセージルーティングを制御できることで、通信量を 抑えられる • サーバーサイドで培ったコンテナ技術を活かせる
  34. 34. IoT Edgeを使った開発の流れ
  35. 35. IoT Edgeを使った開発の流れ 1. Azure IoT Hubを作成する 2. IoT Hubにエッジデバイスを登録する(手動 or 自動) 3. Visual Studio Codeで開発する 1. Dockerfile更新, Device SDKを使ってコーディング 2. deployment.template.jsonを編集 4. Visual Studio Codeからデプロイする 5. Azure DevOpsなどCI/CDの運用も可能
  36. 36. Visual Studio Code Extension Azure IoT Edge Extension • IoT Edge モジュールの開発、 デプロイができる Azure IoT Hub Toolkit Extension • IoT Hub に登録されたデバイス やモジュールを管理できる
  37. 37. Deployment manifest • development.template.jsonに定義する • EdgeAgent, EdgeHubの設定 • 自作モジュールの設定 • メッセージルーティング • Twinのdesired propertiesの設定 • これをもとに、デバイスの環境(arm32v7など)向けのマニフェストを 生成する • 参考: https://docs.microsoft.com/en-us/azure/iot- edge/module-composition
  38. 38. デプロイの様子 deployment.template. jsonを参照し ビルド→レジストリへpush、 マニフェストの生成 マニフェストを指定して、 対象のデバイスに デプロイ
  39. 39. メッセージルーティング • deployment.template.jsonに定義する • どのモジュールのoutputsを、どのモジュールのinputsまたは $upstream(IoT Hub)に届けるか • 参考: https://docs.microsoft.com/en-us/azure/iot- edge/module-composition#declare-routes deployment.template.json
  40. 40. IoT Edgeモジュール開発メモ 具体的な(ニッチな)コツ
  41. 41. モジュールからホストの /dev にアクセスする • deployment.template.jsonで、 モジュールに右記のパラメータを指定する • createOptions.HostConfig • “Privileged”: true • “Binds”: [“/dev/usb:/dev/usb”] deployment.template.json
  42. 42. 使いたいライブラリがPython Card reader IoT Edge runtime module (Python) module (Node.js) IoT Edge agent IoT Edge hub … • 本当は、全体的にNode.jsで統一した かったが、カードリーダーのライブラリが ない • Pythonのライブラリなら実績も豊富なの で、カードリーダー用モジュールは Pythonで構成した • ライブラリがPython2.7でしか動かないの で、いずれアップデートが必要だろう • IoT Edgeなら更新が容易♪ カードの情報を メッセージ送信 メッセージを受け 取り、Twinを更新
  43. 43. EdgeHubでOutOfMemory😐 • モジュール間のメッセージ送受信ができない • $upsteam(IoT Hub)へはメッセージが届く🤔 • 原因は、EdgeHubがOutOfMemoryでエラー で動作不良になっていた • このissueから暫定対処を把握 • https://github.com/Azure/iot-edge- v1/issues/475#issuecomment-403915333 deployment.template.json
  44. 44. モジュールの更新の仕方 1. イメージを更新してレジストリに push する • タグは更新してもしなくてもよい 2. deployment.template.json のモジュー ルのバージョンを更新する 3. Deployent manifest を生成する 4. デバイスにデプロイする • これでエッジデバイスのiotedgeが、自動的に pull して更新してくれる deployment.template.json
  45. 45. Serverless study note サーバレス研究 ノート
  46. 46. Event Hubs trigger Card reader IoT Edge runtime module module IoT Edge agent IoT Edge hub … IoT Hub Functions SignalR Service Azure update! Web Blob Storage 構成図
  47. 47. サーバレス構成の要素 • Azure Functions • Azure SignalR Service • Static website on Azure Storage Blob • Vue.js
  48. 48. Azure Functions • 言わずと知れたAzureのFaaS • 多用なトリガーに対応する • 今回は、Event Hubトリガーを利用 • IoT Hubからのメッセージを受け付け、そのままSignalR Serviceに横流し
  49. 49. Azure SignalR Service • SignalRのサーバーをホストしてくれるサービス • SignalRは、リアルタイムに通信するためのライブラリ • Websocketsなどを利用して通信 • Azure Functionsと組み合わせて処理を実装 • SignalRはJavaScriptのクライアントがあるので、静的サイト上でも 利用できる!
  50. 50. Static website on Azure Storage Blob • 静的サイトをホスティングできる • ストレージなら低価格
  51. 51. Static site by Vue.js • Vue.js • "Progressive" JavaScript Framework • https://vuejs.org/ • SignalRクライアントのサンプルもVue.jsで 書かれているので、組み合わせばっちり • Bulma • CSS framework • https://bulma.io/ • (まだプロトタイプすぎですけど…)
  52. 52. Demoデモ
  53. 53. Event Hubs trigger Card reader IoT Edge runtime module (Python) module (Node.js) IoT Edge agent IoT Edge hub … IoT Hub Functions SignalR Service update! Web Blob Storage 構成図 Azure
  54. 54. Extrasおまけ
  55. 55. ARMテンプレート • ARM = Azure Resource Manager • 使うリソースを定義しておき、いつでも構築可能 • パラメータの指定や変数、ビルトイン関数を利用できる • コツ • AzureのREST APIと連動しているので、API versionに留意する • リファレンス https://docs.microsoft.com/en-us/azure/templates/ を駆使する • Functionsのオートデプロイ • Azure DevOpsでzip化して、GitHub releaseに配置 • ARMテンプレートで、WEBSITE_RUN_FROM_PACKAGEにzipを指定することで、リ ソースのデプロイ時にコードもデプロイ
  56. 56. Have fun!

×