IoTレファレンスアーキテクチャの比較

なんかIoT関連の仕事がくるかもしれないので酒を飲みながら調査。4・5年前にhadoopとか少しかじっていたけど、最近はPaaSが充実してそうですね、
AWS、Azure、GCPでのアーキテクチャを見ていきます。

AWS

AWS IoT プラットフォームの仕組み
https://d0.awsstatic.com/IoT/assets/awsiot_how_it_works_diagram.png

データを集めるところは「デバイスゲートウェイ」という仕組みで「10 億台以上のデバイスにも対応できるよう自動的にスケール」ということでマネージドなサービスがあります。MQTT、WebSocket、HTTP 1.1 がサポート。認証と認可は「X.509 証明書ベース」で個別デバイスで可能。デバイスの状態管理は「シャドウ」という仕組みが用意されている。受信したデータをベースにした処理や変換の仕組みも用意されていて永続化(S3)やストリーム処理(Kinesis)もある。
スケールアウトする仕組みとして、クラウド側に一通り用意されていて、あとはアプリを乗っける感じですね。

Azure

Azure とモノのインターネット
https://docs.microsoft.com/ja-jp/azure/includes/media/iot-azure-and-iot/iot-reference-architecture.png

データを集めるところはIoT Hubで、マネージドなサービスがあります。プロトコルはMQTT v3.1.1、HTTP 1.1、または AMQP 1.0をサポート、カスタムプロトコルも拡張可能なようです。認証はデバイスごとにX.509 証明書やセキュリティ キー(SAS)が用意されている。デバイスの状態管理は、デバイスツインという仕組みで管理するようです。メッセージのルーティングも受信データに基づいて可能になっているようで、永続化(Azure Storage)やストリーム処理( Stream Analytics)も用意されています。
AWSに比べてよりアプリケーション寄りの機能が用意されているようで、デバイス周りのSDKなども充実していそうです。IaaSよりのAWS、PaaSよりのAzureのポジションがここでも表れています。

GCP

Googleは企業向けに力を入れているのかいないのかいまいちわからないのですが、IoT関連は出しています。
モノのインターネットの概要
https://cloud.google.com/solutions/images/iot-overview-architecture.png

データを集めるところは「Cloud Pub/Sub」という仕組みでバッファリングなど大量データを受信するための仕組みになっています。プロトコルは、 HTTPS REST API とgRPC です。受信したデータの処理は「Cloud Dataflow」で行うようで、そのデータをBigQuery とかに保存できそうです。デバイス管理とかはどこまであるかパッと見た感じでは分からないです。
AWSやAzureに比べると、GoogleGoogle独自な世界観なような感じです。好き嫌いは分かれるかもしれません。

さてどれになるやら