Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバレスでDynamoDBレスなIoTアプリ開発

Koji Ishida
September 27, 2019

 サーバレスでDynamoDBレスなIoTアプリ開発

Koji Ishida

September 27, 2019
Tweet

More Decks by Koji Ishida

Other Decks in Technology

Transcript

  1. 1 Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    サーバレスでDynamoDBレスな IoTアプリ開発 2019/09/27 Acroquest Technology Co., Ltd. ⽯⽥ 浩司
  2. 2 ⽯⽥ 浩司( @kojiisd) ‒ ミャンマー⽀社CTO (2012–2015, 2017-2018) ‒ JavaOne

    スピーカー (2015) ‒ JAWS-UG 横浜⽀部 (2016) ‒ AWS Amplify Community (2019) ‒ IoTクラウドサービス開発 クラウド/サーバレス/IoT スクラム Copyright © Acroquest Technology Co., Ltd. All rights reserved. Acroquest Technology株式会社 シニアソリューションアーキテクト
  3. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5

    サーバレスでデータストア先 といったら⼤体 OR
  4. 最近こういうのも出ましたし Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    7 No SQL Workbench for Amazon DynamoDB (Preview) ・AWS Consoleで できることは一通りできそう ・AWS公式アプリ! Dynamonの時代は終わった
  5. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8

    ついついデータストアとして 使ってしまいます
  6. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9

    IoTサービス開発を考える際にも、 データストアの候補として 挙げることがありますね
  7. 例えばこういう要件 Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    10 1. 農業におけるセンサデータの収集&可視化サービス ① 農家毎にクラウドベースのセンサデバイスを利⽤ ② 各センサは独⾃のカラム構成でクラウドにデータを保持 ③ センサのデータを保持しているクラウドサービスはAPIを公開している ④ データの取得/送付間隔はセンサ毎に異なる ⑤ 1⽇1回、各センサのクラウドからデータを取得/集計し、溜め込みたい というサービスを ⼀旦スモールスタートで 開始したい センサ センサ毎のクラウドに データ保持 システムとして データ取得 収集結果の保存 データの集計 溜め込んで 後ほど分析 に利⽤ Lambda DynamoDB エンジニアが考える構成概要
  8. スモールスタート、異なるデータ、クラウド・・・ Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    11 1. 農業におけるセンサデータの収集 ① 農家毎にクラウドベースのセンサデバイスを利⽤ – 1農家1デバイス程度の利⽤。スタートは10農家から。 ② 各センサは独⾃のカラム構成でクラウドにデータを保持 – temperatureだったりtempだったり。。。 ③ センサのデータを保持しているクラウドサービスはAPIを公開している ④ データの取得/送付間隔はセンサ毎に異なる – 1時間1回の最⾼/最低/平均値を送付する、1分1回のデータを送付する。 ⑤ 1⽇1回、各センサのクラウドからデータを取得/集計し、溜め込みたい とりあえず じゃね?
  9. 2018年のボクの頭の中・・・ Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    12 1. センサデータをクラウドから取ってきてカラム構成を統⼀して 2. IoT Coreに流して 3. DynamoDBにデータを保持して(TTLを設定) 4. 定期的にLambdaで集計する ・・・こんな感じ︖ AWS IoT DynamoDB Lambda センサ クラウド Lambda 収集/コンバート 保持 加工 CloudWatch 定期実行 Elasticsearch Kibana ※こっちのアイコンの方が わかりやすいよね
  10. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13

    運⽤を開始して しばらくすると・・・
  11. こういうことを⾔われることがある Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    14 1. どのようなセンサデータが取得できたのか⾒れるようにしたい ① ⽣データを残しておいて欲しい 2. カラム構成がセンサ側で変わる可能性があるので、 データの再コンバートができるようにしたい 3. DynamoDBに保持されたデータを集計して、サマリ情報を QuickSightで⾒れるようにしたい いわゆる運用改善で喜ばしいことなのですが
  12. その時のボクの頭の中・・・ Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    15 AWS IoT DynamoDB Lambda センサ クラウド Lambda 収集/コンバート 保持 加工 CloudWatch 定期実行 Elasticsearch Kibana コンバートは ⼀緒にできない。 処理を切り離す 加⼯の仕⽅を 増やす必要あり 再投⼊⽤の 処理の追加が必要/ データ上書きで保持 できる必要あり これ、だいぶ構成に追加必要じゃね?
  13. その時のボクの頭の中・・・ Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    16 AWS IoT DynamoDB Lambda センサ クラウド Lambda 収集 保持 加工 CloudWatch 定期実行 Elasticsearch Kibana ・・・これ、それなりに実装しないと無理じゃね? あと追加すればするほど構成が汚くなる・・・ S3 QuickSight S3 生データ 保持 Lambda Lambda 加工 必要?
  14. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 17

    先輩がLambdaだったら シュッとできる と⾔っていたので⼤丈夫 で、現実逃避
  15. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 18

    というわけで ⼿抜きをするために 効率的な開発をするために 構成を再度考え直す 拡張性とか保守性とか大事だし
  16. AWS IoT Analytics Copyright © Acroquest Technology Co., Ltd. All

    rights reserved. 20 AWS IoT Analytics は、膨大な量の IoT データの高度な分析を簡単に実行および操 作できる完全マネージド型サービスです。IoT 分析プラットフォームの構築に通常伴うコス トや複雑さについて心配する必要はありません。このサービスは、IoT アプリケーションや 機械学習のユースケースで最適かつ正確な判断を下すために、IoT データを分析してイン サイトを得る最も簡単な手段です。 https://aws.amazon.com/jp/iot-analytics/
  17. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 21

    とても便利そうに⾒えたが、 この辺りの使⽤感を深く 解説しているサイトは少ない
  18. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 22

    どうやらこの構成が AWS IoT DynamoDB Lambda センサ クラウド Lambda 収集 保持 加工 CloudWatch 定期実行 Elasticsearch Kibana S3 QuickSight S3 生データ 保持 Lambda Lambda 加工 実装 実装
  19. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 23

    Lambda センサ クラウド 収集 CloudWatch 定期実行 Elasticsearch Kibana S3 QuickSight こうなるようだ Lambda
  20. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 24

    Lambda センサ クラウド 収集 CloudWatch Event 定期実行 Elasticsearch Kibana S3 QuickSight 実際にはこう Lambda Channel Pipeline Data store Dataset Dataset IoT Analyticsを使えばDynamoDBが不要になる AWS Cloud
  21. AWS IoT Analyticsの基本4機能 Copyright © Acroquest Technology Co., Ltd. All

    rights reserved. 25 1. Channel ① データの受付窓⼝。⽣データを受け付けてアーカイブする。 2. Pipeline ① チャネルからメッセージを受け取り、データ保持前の処理、およびフィルタ リングを実施する。Lambda実⾏も可。 ② Channelからのデータを流し込む再処理が可能。 3. Data store ① メッセージの保持を⾏う時系列データストア。性能はAthena相当とのこと。 4. Dataset ① データストアからクエリで取得し⽣成したもの。S3への出⼒やQuickSight のデータソースとして選択可能。
  22. AWS IoT Analytics - Channel Copyright © Acroquest Technology Co.,

    Ltd. All rights reserved. 26 1. データの受付窓⼝。 ① ⽣データを受け付けてアーカイブする。 アーカイブ期間は指定可能。 ② チャネル数や⼀つのチャネル へのメッセージ容量は 制限あり。要確認。 https://docs.aws.amazon.com/ja_jp/iotanalytics/latest/userguide/getting- started.html#aws-iot-analytics-service-limits
  23. AWS IoT Analytics - Pipeline Copyright © Acroquest Technology Co.,

    Ltd. All rights reserved. 27 1. Channelで受け付けたデータを、Data storeに保持する前に加⼯ することが出来る。 ① コンソール上で 値の紐付けなどが⾏える 加⼯⽅法と、 Lambdaを呼び出しその中で 加⼯をする2通りが存在する。 ② 右図はLambda呼び出しの パターン。
  24. AWS IoT Analytics - Data store Copyright © Acroquest Technology

    Co., Ltd. All rights reserved. 28 1. メッセージの保持を⾏う時系列データストア。 ① クエリ性能はAthena相当。料⾦もS3と同じような感じと捉えれば良い。 (つまりAthena︖) ② データ保持先には既存のS3バケットを選択することもできる。 ③ データ保持の期間は設定可能。 (デフォルトは無期限)
  25. AWS IoT Analytics - Dataset Copyright © Acroquest Technology Co.,

    Ltd. All rights reserved. 29 1. データストアからクエリで取得し作成したもの。S3への出⼒や QuickSightのデータソースとして選択可能。 ① SQLデータセットや コンテナデータセットの作成ができる。 ② コンソール上で直近のデータの ⼀覧を確認することも可能。
  26. 要件のおさらい - IoT Analyticsで解決 - Copyright © Acroquest Technology Co.,

    Ltd. All rights reserved. 30 1. 農業におけるセンサデータの収集&可視化サービス ① 農家毎にクラウドベースのセンサデバイスを利⽤ ② 各センサは独⾃のカラム構成でクラウドにデータを保持 ③ センサのデータを保持しているクラウドサービスはAPIを公開している ④ データの取得/送付間隔はセンサ毎に異なる ⑤ 1⽇1回、各センサのクラウドからデータを取得/集計し、溜め込みたい 2. 追加要件 ① どのようなセンサデータが取得できたのか⾒れるようにしたい ② カラム構成がセンサ側で変わる可能性があるので、 データの再コンバートができるようにしたい ③ DynamoDBに保持されたデータを集計して、サマリ情報をQuickSightで⾒ れるようにしたい OK OK
  27. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 31

    なーんて、全部うまくいけば いいんですけどね
  28. 実際には課題もあるわけです Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    32 1. Channelの受付容量には制限があるので、何でもかんでも送れば良いわけでは ない。設計が必要。(センサデバイスが無尽蔵に増えてきたら・・・) 2. Pipeline内LambdaをVPC内に配置して同⼀VPC内の何かにアクセスさせよう としてもできない(対応していない︖201906現在) 3. DatasetのS3への出⼒は必ず⼀つのCSVになってしまう。分割不可。例えば SQLでGroup Byなどで絞った結果も⼀つのCSVに出⼒されてしまう。 (センサ毎/農家毎に分析処理をかけたくても不可)
  29. まとめ Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    34 1. AWS IoT Analyticsを利⽤して効率的にIoTデータ分析基 盤を構築することができる。 ①DynamoDBやS3を使わなくてもデータ保持はできる。 2. IoT Analyticsのできること/できないことを理解して、 ⾼速なアプリ開発を。 3. 現場的には⾊々と細かい点のアップデートを所望しており ます。お願いします>AWSさん
  30. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 35

    AWS IoT Analyticsで 効率的な開発を楽しもう︕ Evolve the Earth with Emotion of Technology