【レポート】IOT308 – One Message to a Million Things – Done in 60 seconds with AWS IoT #reinvent

2017.11.29

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

はじめに

re:Invent 2017のセッション「IOT308 - One Message to a Million Things - Done in 60 seconds with AWS IoT」について聴講しました。 こちらは一般的なAWS IoTのメッセージングパターンやスケーリングのベストプラティスについてのセッションです。

セッション概要

The AWS IoT message broker is a fully managed publish/subscribe broker service that enables the sending and receiving of messages between devices and applications with high speed and reliability. In this session, learn about the common AWS IoT messaging patterns and dive deep into understanding the scaling best practices while using these patterns in applications. In addition, Amazon Music talks about how they used AWS IoT to build event notifications of soccer games in their applications for our customers.

セッション資料

  • 動画

AWS IoTのコンポーネント

AWS IoTのコンポーネントについて一枚のスライドにまとめられていますが詳細については AWS IoT の構成要素を確認しておくとイメージがつきやすいです。

画像

4つの異なる事例

これらの4つの例は組み合わせることにより大多数のユースケースをカバーできるとのこと。

  • Home automation
  • Telemetry
  • Device data delivery
  • Broadcast notifications

Home automation - Connected TV

Alexaやmobile phoneを使いTVと接続しコントロール(電源 ON / OFF,Volume UP / Down)します。 ポイントはサブスクリプションをまとめる為にワイルドカードを使い、トピックにdeviceIDを使う。スケールさせる為にワイルドカードはトピック構造の右端に使うの3点です。

  • サブスクリプションをまとめる為にワイルドカードを使う

画像

  • deviceIdを使う
  • トピック構造の右端にワイルドカードを使う

画像

Telemetry - Connected Wind Farm

風力発電所のデータ(速度や任意のデータ)を遠隔で収集するユースケース。

画像

  • 要件
    • センサー数:1,000,000
    • センサーがデータをパブリッシュする間隔:50sec
    • 全センサーがデータをパブリッシュする:1,000,000/50 per sec
    • 1秒間で20,000のデータをパブリッシュする必要がある。
  • Amazon kinesis
    • 要件から1秒間に1,000レコードの書き込みのため20shardが必要
  • どうやって書き込みをするか
    • 高いカーディナリティのpartitionKeyを使う
    • AWS IoT rule
    "partitionKey":"${topic()}" → "${clientID()}"

画像

Device Data Delivery - Connected cars

Do not use shared shadowsということで基本的にThing shadowの共有を避けてデバイスごとにThing shadowを使いデバイス(車)の情報を取得します。

画像

Broadcast notifications - Mobile advertising

最後の例はモバイルアプリケーションにてユーザーにリアルタイム広告を掲載するサービスです。

  • 要件
    • デバイス数:1,000,000
    • 全てのデバイスに広告を配信する所要時間:60s以下
  • AWS IoT
    • AWS IoTはメッセージを全てのsubscribersに毎秒10,000の割合で配信

ポイントは希望するSLAに合わせて、トッピック間でサブスクライバーを分割します。

画像

分割することによって要件を満たすことが可能です。

画像

本セッションのキーワード

  • command/+
  • deviceId/command/+ or command/deviceId/+
  • 20k write records per second <=> 20 Shards
  • $aws/thing/shadow/<thingName>/…
  • SUBSCRIBE Ads/City/LasVegas/group1 & SUBSCRIBE Ads/City/LasVegas/group2

おわりに

AWS IoTについてのセッションで馴染みがなく難しかったのですが、キーワードは抑えることができたと思います。

ではまた