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.

Azure Serverless or Power Platform 〜 あなたならどっち?! - Azure Serverless 編

608 views

Published on

「Azure Serverless or Power Platform 〜 あなたならどっち?!」 Azure Serverless 編としてのお話でした。

Serverless Meetup Tokyo #16
https://serverless.connpass.com/event/165352/

Published in: Technology
  • Be the first to comment

Azure Serverless or Power Platform 〜 あなたならどっち?! - Azure Serverless 編

  1. 1. Azure Serverless or Power Platform 〜 あなたならどっち?! Serverless Meetup Tokyo #16 https://serverless.connpass.com/event/165352/ Azure Serverless 編
  2. 2. Self introduction 自己紹介
  3. 3. Me • Name: 大平かづみ • Awards: Microsoft MVP for Azure • Work: フリーランス エンジニア • Azure に関連したお仕事 • OSS開発 • サーバーサイド開発 • Infrastructure as Code 対応 • できることならなんでも! • Twitter: @dz_ • GitHub: @dzeyelid
  4. 4. IoT on Azure Azure における IoT
  5. 5. Azure における IoT の構成あれこれ IoT Edge IoT Sphere Digital Twins IoT Hub Time Series Insights IoT Central Functions Logic Apps Event Hub Event Grid Stream Analytics Storage Accounts Cosmos DB SQL Database Machine Learning Cognitive Services Power BI Web Apps デバイス IoTの受け口 メッセージング 処理
  6. 6. Azure での代表的な IoT のソリューション IoT Hub Stream Analytics SQL Database Power BI データの クレンジング などもできる ほかの ストレージでも可 Power BI 王子 のセッション参照
  7. 7. Azure Functions に直接渡すこともOK IoT Hub Functions Cognitive Services Web AppsSignalR Service .NET ベースの リアルタイム通信 基盤 IoT Hub は内部に Event Hub を 持っているので、Azure Functions の Event Hub Trigger に流せる SignalR のJSク ライアントでリア ルタイム更新
  8. 8. 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 例: 以前作った構成
  9. 9. The new aspect of IoT IoT の新しい側面
  10. 10. IoT さえ、API でつながる世界 • iPaaS や RPA など、サービスを連携できるサービスが広まっている • 例) IFTTT, Zapier, Power Automate, AnyFlow • これをつなげているのは API • 最近、一般向けに API を公開しているサービスも増えてきた
  11. 11. 今回取り上げるのは Nature Remo • 赤外線リモコンをコントロールし、 家電を操作できるデバイス • ルールを設定して自動で操作も 可能 • Temperature higher/lower • Humidity higher/lower • Brightness/darkness • No motion • スマートフォンアプリで利用可能 • API が公開されている! • しかも OpenAPI で!
  12. 12. Nature Remo API (Cloud API) • API でRemoデバイスを操作できる • Remoデバイスの一覧 • 登録した家電の一覧、操作
  13. 13. Nature Remo API (Cloud API) • API でRemoデバイスを操作できる • Remoデバイスの一覧 • 登録した家電の一覧、操作 デバイス情報の中に、 Temperature Humidity Illuminate Movement の情報が!
  14. 14. 取得できるデータ = JSON "hu": { "val": 42, "created_at": "2020-02-27T05:56:11Z" }, "il": { "val": 248.39, "created_at": "2020-02-26T21:43:12Z" }, "mo": { "val": 1, "created_at": "2020-02-27T05:52:00Z" }, "te": { "val": 23, "created_at": "2020-02-27T05:58:31Z" }
  15. 15. Prototype 1 つくってみました パート 1
  16. 16. 構想: FaaSで取得してサクッと表示したい • Stream Analytics 組むの面倒だな • データ保存の方法考えるの面倒だな • Power BI は単純なグラフしか作れないんだよな 🤔楽にデモ作りたい
  17. 17. そこで、 Time Series Insights
  18. 18. Time Series Insights • IoT Hub または Event Hub からデータが入力される • 入ってくるデータのモデルを定義できる • そのモデルに沿って、グラフを表示できる
  19. 19. Time Series Insights モデル
  20. 20. Time Series Insights グラフ表示
  21. 21. 構成 Time Series Insights Anomaly Detector Nature Remo Functions Event Hubs Nature API サーバー
  22. 22. 構成 Time Series Insights Anomaly Detector Nature Remo Functions Event Hubs Nature API サーバー Timer Trigger で 1分ごとに データ取得 異常検知データ可視化
  23. 23. Prototype 1 のデモの様子
  24. 24. Prototype 2 つくってみました パート 2
  25. 25. 🤔もうちょいよしなにデータ取りたい Remo のデータは、更新日時がある • つまり、APIで取得した時の値が、その時のセンサの値ではない • 更新日時に合わせてデータを取得すべきでは? "hu": { "val": 42, "created_at": "2020-02-27T05:56:11Z" },
  26. 26. そこで、 Durable functions
  27. 27. Durable Functions • Azure Functions の拡張機能 • ステートフルで、長時間待機できる • 課金は処理したときのみ(待機の間は無課金) • C# も Node.js も、パッケージ追加のみで対応可能 • デザインパターン • Chaining, Fan out/fan in, Async HTTP APIs, • Monitor, Human interaction
  28. 28. Durable Functions のしくみ Activity Orchestrator Activity Activity Activity Orchestrator この Activity の処理は いくら長くかかってもよい (※ タイムアウトは要検討 …
  29. 29. 構成 Time Series Insights Anomaly Detector Nature Remo Functions Event Hubs Nature API サーバー Durable functions の monitor パターンで更新 があったときのみデータを 流そう
  30. 30. 更新があった時のみデータを採用する改善
  31. 31. 更新があった時のみデータを採用する改善 Orchestrator が input を持っていればそれを、 持っていなければ null を抽出
  32. 32. 更新があった時のみデータを採用する改善 抽出した input をアクティビティに渡して実行。 collect というアクティビティが実際にAPI実行 して、更新日時の比較、Event Hub へ出力を 行っている
  33. 33. 更新があった時のみデータを採用する改善 1分のタイマーを設定し、発火後に再度 Orchestrator が呼ばれるように指定。 ここで、今取得してきたデータを入れておく。
  34. 34. Demo Time Series Insights でのデモ
  35. 35. 余談:既存のFunctionsをDurable対応する
  36. 36. 余談: データ更新の感覚がバラバラなので、 Anomaly Detector との相性が悪かった • Anomaly Detector は周期的なデータが必要 • Time Series Insights からデータを取得することで、周期的なデー タを得やすかったがさすがにバラバラすぎて NaN が返ってきてしま い、破綻
  37. 37. References 参考資料
  38. 38. 参考資料 • 概要:Azure Time Series Insights プレビューとは - Azure Time Series Insights | Microsoft Docs • Durable Functions の概要 - Azure | Microsoft Docs • Anomaly Detector API とは - Azure Cognitive Services | Microsoft Docs • IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート • Anomaly Detector で遊ぼう♪ with Azure Time Series Insights • dzeyelid/home-controls-with-azure
  39. 39. Have fun!

×