ある企業が AWS 上で IoT プラットフォームを構築しており、世界中に分散する 100 万台のデバイスから毎秒 100 万件のメッセージを受信します。各メッセージは 1KB 以下で、リアルタイムでの異常検知とデバイスへのコマンド送信が必要です。データは後の機械学習トレーニングに使用するため全量保存が必要です。最もスケーラブルかつコスト効率の良いアーキテクチャはどれですか?
- A. Amazon MQ(ActiveMQ)でブローカーを構築し、全デバイスを MQTT で接続する。EC2 クラスターで処理し、Amazon EFS にデータを保存する
- B. Amazon SQS に全デバイスメッセージを送信し、Lambda 関数でポーリングして処理し、RDS PostgreSQL に保存する
- C. ALB の WebSocket サポートで全デバイスを接続し、ECS コンテナクラスターで処理する。DynamoDB に全データを保存する
- D. AWS IoT Core でデバイス接続を管理し、IoT ルールエンジンで Kinesis Data Streams にメッセージを転送する。Kinesis Data Analytics で異常検知、Kinesis Data Firehose で S3 への全量保存を行う。デバイスへのコマンドは IoT Core のデバイスシャドウ経由で双方向通信を実現する
解答と解説を見る
正解: D
AWS IoT Core は数十億のデバイス接続と毎秒数兆件のメッセージを処理できるマネージドサービスです。IoT ルールエンジンで Kinesis に転送し、Kinesis Analytics で低レイテンシーの異常検知、Kinesis Firehose で S3 への自動保存が実現できます。IoT Core のデバイスシャドウで双方向通信(コマンド送信)も提供されます。 B: SQS + Lambda は高スループットの IoT ワークロードには適しておらず、毎秒 100 万件のメッセージ処理には Lambda の並列実行コストが膨大になります。RDS PostgreSQL は書き込みスケールに限界があります。 A: Amazon MQ は中規模の既存 MQTT ワークロードの移行に適しており、100 万台規模のデバイス接続には設計されていません。スケーラビリティに限界があり、マネージドの IoT Core に比べて運用負荷が高くなります。 C: ALB の WebSocket を IoT デバイスの接続管理に使うことは、IoT ワークロードの特性(デバイス認証、MQTT プロトコル、デバイスシャドウ等)を無視しており、100 万台規模への対応も困難です。
📚 関連サービスの解説: Amazon Kinesis ・ Amazon S3