[レポート] AWS による IoT 最新動向とデザインパターン #AWSSummit

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、せーのです。今日はAWS Summit Tokyo2016よりIoTセッション「AWS による IoT 最新動向とデザインパターン」をレポートします。
スピーカーはアマゾン ウェブ サービス ジャパン株式会社 事業開発部マネージャー 榎並 利晃氏、アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 吉田 英世氏です。

レポート

AWS IoTを使った事例

具体的な案件が増えてきている

  • 様々なユースケース
  • Re:InventではBMWの車にあるデータをマッピングする
  • 信号機の情報をクラウドにあげて、ラインの稼働率を改善する。なぜ赤になったのか、というメモも同時に上げる。
  • 稼働しているフォークリフトの動線の管理。
  • 家電。DAY1で大阪ガスの"ENE・FARM Type S"の紹介があった。AWSと連携しクラウドで可視化、リモートのメンテナンスが行える。
  • 小売での動線の把握
  • 農業の支援
  • 安全運行管理。ドライバーが不足している。安全に運行しているのかトラッキングする、という需要が増えてきている
  • 急ブレーキ、急発進のデータをとってクラウドに挙げ、ドライバーの教育につなげる
  • 牛の体調管理
  • 農業のノウハウを見える化して自動化、効率化するプラットフォーム。イチゴ農家の改善につなげている
  • スマート家電。モバイルから家のリモコンを動かす

IoTの役割を大きく分けると二つ

  • 今までの業務を改善する業務改善イノベーション
  • 今まで培ったデータを使って新規ビジネスイノベーションを起こす
  • 今まではものづくりしかしていなかった。これからはAPIを通してデータを連携させる。
  • 収集->保存->分析->活用というプロセスを通じて業務を改善していく
  • AWSのサービスそれぞれの特性を捉えてどう選択するかを決める

AWS IoT

  • TLS1.2によるセキュアな双方向通信
  • ルールベースのアクション設定。到着したメッセージに対してSQLライクなルールの定義でメッセージ処理をアクションが設定
  • デバイスSDKで開発を簡単にしている。C,Arduino,node.jsに対して提供。mobile SDKもある。

AWS IoTの仕組み

  • デバイスゲートウェイ
  • ルールエンジン
  • シャドウ
  • デバイスレジストリ

  • AWS IoTと直接連携できるサービスは12。新しくElasticsearchへの書き込み、MLにあらかじめ教師データを用意しておくことでリアルタイム予測APIが使えるようになった。

Amazon Kinesis

  • Stremas: センサーデータをストリームに入れる
  • Firehose: S3やRedshiftに簡単に保存する
  • Analytics: ストリーミングデータを簡単に分析

AWS Lambda

  • IoTの各イベントをトリガーに処理を走らせる。
  • AWS API Gateway
  • RESTfulエンドポイントに必要なAPIを簡単に作成する

IoTのアーキテクチャ

  • テレメトリ用途ではビッグデータの入力レイヤーとして扱われるのがほとんど
  • IoTはテレメトリ+αでデータを価値に変える
  • アプリからデバイスを操作
  • 入力データを元にアクションを実行
  • 過去の出来事を元に未来を予測

CQRS(コマンドクエリ分離責務)

  • 書き込みと読み込みを分離してそれぞれ設計、実装を行うべき
  • 書き込みがコマンドを送るとコマンドプロセッサがイベントをイベントストアに保存して非同期でデータストアにコピーする
  • イベントをイベントハンドラに送信データストアを直接更新
  • デバイスが書き込まれたデータストアを別プロセスとして読み込む

CQRSを適用するために各サービスを割り当てる

  • デバイスゲートウェイ: コマンドプロセッサ
  • ルールエンジン: イベントハンドラ
  • S3: イベントストア
  • Redshift: データストア
  • QuickSight: クエリサービス。

アーキテクチャ実践

デバイスとAWSを接続したい。AWS IoTとKinesisどっちを使う?

  • AWS IoTはMQTTS or HTTPS、双方向通信、SSL証明書 or Sig V4による認証。メッセージプロセッシング
  • KinesisはHTTPS、単方向通信、Sig v4による認証。ストリームプロセッシング。連続するデータを処理する。
  • 併用する。Kinesisの前処理をAWS IoTに渡してノイズ除去、タイムスタンプ付与、数値変換処理等を行う。

ひとまずセンサーデータを保管しておきたい

  • S3をデータレイクとして活用。ビグデータサービス群とシームレスな連携が可能となる。

データストアの選択

  • アプリケーションでのデータ活用 - DynamoDB。ID +タイムスタンプなどの時系列データをアプリケーションから参照
  • 分析でのデータ活用 - Redshift。超長期的な時系列データをBIツールを利用してアドホックに分析
  • 汎用的なアーカイブ - S3。堅牢で安価なオブジェクトストレージに半永久的にファイルデータを保存

デバイスをリモートで制御したい

  • MQTTとWebsocketで持続的なコネクション空のコマンドを送受信する

クライアント証明書をデバイスにインストールしたい

  • AWS IoTのAPI操作をデバイス自らが行う。API KEYやSECRETを埋め込むのではなくCognito等を使って一時的なキーを取得する
  • BYOC(Bring your own certificates)。プライベートCAから発行された証明書をデバイスに入れると同時にAWS IoTにも登録する

デバイスファームウェアをダウンロードしたい。

  • S3イベント+LambdaとAWS IoTの連携

デバイス管理

  • AWS IoTデバイスレジストリやDynamoDBを活用
  • 直接SDKで更新するかAWS IoTを通じてLambdaを走らせる

デバイスからAWSまでを閉域ネットワークで接続したい

  • DXやSORACOMを使う

まとめ

  • IoTを繋げるから"データ活用"に。AWSでシステムを構築してデータ活用にフォーカスする
  • 優れたソフトウェアアーキテクチャを鳥居入れることでIoTアーキテクチャを最適化
  • いろいろなアーキテクチャパターンを使って要件にあった適切なアーキテクチャを選択する