【レポート】IOT320 | IoT architecture cost optimization & explainability via Generative BIに参加しました #AWSreInvent
はじめに
こんにちは、おおはしりきたけです。2年ぶり2回目のre:Invent 2024に参加しております。
今回は、IoT アーキテクチャのコストの最適化についてGenerative BIがどのように活用できるのか気になったので、チョークトークセッションに参加してきました。参加した、セッションの概要は以下となります。
セッション概要
Cost optimization is crucial for scaling IoT workloads on AWS.
This chalk talk explores design patterns and AWS tools that you can use to continuously optimize workloads,
maximizing resource usage while limiting infrastructure costs.
Discover how to use Generative BI for cost reconciliation by automating dashboard and narrative creation.
Gain insights into building cost-effective architectures that can maximize your cloud investment’s value.
Learn how to create optimal IoT architectures while enhancing cost transparency, control, and forecasting.
日本語訳(Claude 3.5 Sonnet)
AWSでIoTワークロードをスケーリングする際、コスト最適化は非常に重要です。
このチョークトークでは、リソースの使用を最大化しつつインフラコストを抑えるために使用できる設計パターンとAWSツールについて探ります。
ダッシュボードとナラティブの作成を自動化することで、コスト調整に生成型BIを活用する方法を発見してください。
クラウド投資の価値を最大化できる費用対効果の高いアーキテクチャの構築に関する洞察を得てください。
コストの透明性、管理、予測を向上させながら、最適なIoTアーキテクチャを作成する方法を学びます。
登壇者
- Sr. Solutions Architect, Amazon
- Sr Solution Architect, Amazon
セッション内容
IoTシステムの基本と課題
IoTシステムを構築する際、多くの企業がコスト管理に苦慮しています。その典型的な例として、あるスマートビルディング管理会社の事例が紹介されました。
この会社は、ベルリンのセンサーを使用したシステムを運用していましたが、6ヶ月目に2000台のデバイスを追加したところ、コストが3倍に跳ね上がりました。原因は、30秒ごとのデータ送信、頻繁な関数実行、無期限のメッセージ保存などが原因でした。
このような課題を避けるため、IoTシステムの基本概念を理解し、適切な設計を行うことが重要です。
主にコストの要因となるのは、以下の6つです。
コスト効率の良いIoTシステム構築のポイント
1. プロジェクトの目的を明確にする
まず、プロジェクトの目的を明確にし、本当に必要なデータと頻度を見極めることが重要です。「とりあえず全てのデータを送る」というアプローチは避けましょう。これ実際よくありますが、まずはプロジェクトの目的を明確にして、どのようなデータをどう扱うのかという前提を明確にしておかないと、IoTなどでは、一気にデバイスが増えることもありますので、当たり前ですが、非常に大切なポイントだと感じました。
2. 正しいデバイス戦略を考える
デバイス戦略については、デバイスとの通信方法を考える必要があります。デバイスの接続性を計画し、通常はMQTTを使用します。リアルタイムアクセスが必要か、Telemetryデータを常に即座に必要とするか、それとも蓄積して後でバッチ送信できるかを考慮します。アラームと通常のステータス情報で異なる通信モードを使用することもあります。また、データの名前付けや圧縮方法を工夫し、メッセージサイズを削減しますし、トピックとルールの設計も重要です。不必要なデータ転送を避けることでコストを抑えられます。
エッジコンピューティングのためには、AWS IoT Greengrassソリューションの使用を検討することもできます。これはIoT以外の分野、例えば生成AIのコスト最適化にも適用できる考え方です。エッジで何ができるか、何を返す必要があるかを考えることが重要です。
3. 効率的なデータ設計
データ設計については、効率的な名前付けや、プロトコルバッファなどを使用してデータサイズを削減することを検討します。メッセージの頻度も重要で、可能であればバッチ処理することでコストを削減できます。また、効率的なトピックとルールの設計も重要です。
4. サーバーレスアーキテクチャの活用
サーバーレスアーキテクチャの実装が重要です。これにより、実際に作業を行っている時のみコストが発生します。EC2インスタンスと異なり、Lambda関数を使用することで実行に直接紐づいたコストモデルになります。
サーバーレスアーキテクチャについては、例えば、Lambda関数がトピックにメッセージが到着したときに自動的にトリガーされます。ただし、処理が必要な大量のメッセージがある場合は、同時実行の制限があることに注意が必要です。これはソフトリミットで増やすことはできますが、考慮する必要があります。
ルールレベルでは、メッセージをバッチ処理してLambda関数に送ることができますが、全てがリアルタイムである必要はありません。Firehoseを使用してS3バケットやKinesis Data Streamにデータを送ることもできます。メッセージは失われませんが、リアルタイム性は低下します。
複数のプラットフォームや地域にシステムを配置する必要がある場合、サーバーレスアーキテクチャが使えないこともあります。その場合、Kubernetesが選択肢になるかもしれません。LambdaでDockerコンテナを実行することも可能です。
5. データのライフサイクル管理
データのライフサイクル管理と階層型ストレージの使用も重要です。Amazon S3 Intelligent-Tieringなどを使用して、時間とともにデータをより安価なストレージ(例:Amazon S3 Glacier)に移動させることができます。また、データの要約や統合も有効な戦略です。
6. 継続的なモニタリングと最適化
モニタリングについては、Monitoring AWS IoTやAmazon CloudWatchを使用して、接続数やメッセージ数などのメトリクスを監視できます。Amazon CloudWatchは使用しているサービスに基づいて自動的にダッシュボードを作成する新機能もあります。
7. デバイス接続の最適化
デバイスの接続方法を慎重に選択することが重要です。常時接続が本当に必要か、それとも定期的な接続で十分かを検討しましょう。また、デバイスがオフラインの際のデータ処理方法も事前に計画する必要があります。例えば、AWS IoT CoreのDevice Shadowを使用して、オフライン時のデータを効率的に管理できます。
8.データ圧縮の活用
データ圧縮は帯域幅使用量とコストを削減する効果的な方法です。デバイス側でデータを圧縮してから送信することで、通信コストを大幅に削減できます。ただし、圧縮と解凍にかかる処理時間とのバランスを考慮し、適切な圧縮アルゴリズムを選択することが重要です。
9. 効率的なファームウェアアップデート
IoTデバイスのファームウェアアップデートは、帯域幅使用量に大きな影響を与える可能性があります。AWS IoT Device Managementを活用し、Over-the-Air (OTA) アップデートを効率的に行うことで、帯域幅の使用を最小限に抑えられます。差分アップデートの実装も検討に値します。
10. データライフサイクル管理の最適化
全てのデータを永久に保存する必要はありません。データの重要性と使用頻度に基づいて保持期間を設定し、古いデータはまとめ
て保存するか、完全に削除することでストレージコストを削減できます。AWS S3のライフサイクルポリシーを活用して、この過程を自動化することができます。
11. セキュリティ対策の実施
適切なセキュリティ対策は、潜在的な脆弱性の悪用による予期せぬコストを防ぐために不可欠です。AWS IoTのセキュリティを最大限に活用し、デバイス認証、データ暗号化、アクセス制御を適切に実装しましょう。
12. スケーラビリティの考慮
将来のデバイス数の増加に備え、スケーラブルなアーキテクチャを選択することが重要です。AWS IoTのマネージドサービスを活用することで、デバイス数の増加にも柔軟に対応できます。
といった形で、IoTのコスト削減には銀の弾丸はなく、一つ一つ丁寧に調整していくことが大切だということを、改めて理解できました。
ここで、実際上記を色々やってコスト削減した例がこちらになります。
Generative BIの活用
Generative BIを活用するためには、Amazon Q in QuickSightを利用することで、NLPでレポーティングすることができます。
セッションでは、ここまででしたが、SoracomのMAXさんが講演後にKPIに対する達成度も出せるのか?という質問を投げてくれたところ「予算や計画を持ってれば、Usage同様に扱えるし、達成状況もレポートさせられる」とのことでした。
まとめ
IoTシステムのコスト最適化は、単純なコスト削減ではなく、効率的で拡張性のあるシステム設計が鍵となります。プロジェクトの目的を常に念頭に置き、デバイス戦略、データ設計、処理方法、ストレージ管理、そしてモニタリングを総合的に考慮することが重要だということが、改めてわかりました。
また、システムは常に進化するものです。定期的な見直しと最適化を行うことで、長期的にコスト効率の良いIoTソリューションを維持していくことも必要です。IoTプロジェクトが、コスト効率良く、かつ効果的に運用していくために、日々の努力が重要ですね。