AWS IoT@Loft #18
AWSを活用した空調機IoTプラットフォームの開発2021.04.14ダイキン工業株式会社 空調生産本部 野原健太IoT@Loft #18Copyright: ©2019 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
View Slide
2 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.自己紹介野原 健太ダイキン工業株式会社所属• 2008年4月に入社• 入社以降、組み込みソフト開発(主にC++)• ここ数年、IoTシステム開発に進出• クラウド歴(=AWS歴) 3年ほど• Daikin Global Platformプロジェクトのクラウド開発チームリーダー
3 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.今日話したいこと1. ダイキン工業のIoTへの取り組み2. Daikin Global Platformのシステム構成と設計で工夫(苦労)した点
ダイキン工業のIoTへの取り組み4 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
5 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.ダイキン工業株式会社とIoT会社概要• 空調事業を主力とする会社• 150カ国以上に事業を展開IoTの取り組み(Daikin Global Platform)全世界の空調機をインターネットにつないで、販売、施工、運用、保守、更新といったライフサイクルに対するサービスを提供する
6 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.Daikin Global PlatformDaikin Global Platformアプリケーション建物エッジ空調設備機器空調設備機器建物エッジ空調設備機器空調設備機器AWS Cloud
7 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.大量接続、大量アクセス• 想定機器接続台数500万台(各機器から毎分データ発生)• 想定ユーザー数30万人(同時アクセス9万人)• 求められる高い処理性能とスケーラビリティ• 無限に発生するデータを扱えるストレージ
8 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.接続台数に応じたコスト最適化• 中規模物件向け空調機サービスの適正価格はシビア• 初期投資を限りなく抑えたい(スモールスタート)• 接続台数とAWS利用料を限りなく正比例にしたい• 階段状で増えるのは嫌、リニアに増えて欲しい利用料利用料接続台数 接続台数初期投資を抑えたい階段を正比例にしたい
9 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.AWSサービスのフル活用• AWSサービスを徹底活用• 性能とスケーラビリティの担保をAWSに任せる!• 従量課金サービスの利用によるスモールスタート!大量接続、大量アクセスAWSサービスのフル活用接続台数に応じたコスト最適化
Daikin Global Platformのシステム構成と設計で工夫(苦労)した点10 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
11 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.システム構成(空調機データ収集・蓄積)Amazon Simple StorageService (Amazon S3)Amazon Elastic ContainerService (Amazon ECS)AWS CloudAWS IoTCoreAmazon KinesisData StreamsAWS LambdaAmazon DynamoDBAmazon ElastiCacheAmazon KinesisData StreamsAWS LambdaAWS Lambdaエッジ空調機データアプリケーション空調機データ(現在値)空調機データ(時系列データ)Amazon API Gateway
12 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.システム構成(空調機データ収集・蓄積)①通信量&AWS IoT Core利用料の最適化②DynamoDB利用料の最適化③時系列データ作成に伴うAWS利用料の最適化Amazon Simple StorageService (Amazon S3)Amazon Elastic ContainerService (Amazon ECS)AWS CloudAWS IoTCoreAmazon KinesisData StreamsAWS LambdaAmazon DynamoDBAmazon ElastiCacheAmazon KinesisData StreamsAWS LambdaAWS Lambdaエッジ空調機データアプリケーション空調機データ(現在値)空調機データ(時系列データ)Amazon API Gateway
13 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.①通信量&AWS IoT Core利用料の最適化AWS CloudAWS IoTCoreAmazon KinesisData StreamsAWS Lambdaエッジ空調機データAWS CloudAmazon KinesisData StreamsAWS Lambdaエッジ空調機データ変化データ 全データ• 通信量を削減するため、定常時は値が変化したデータのみ送信される(変化データ)• エッジ起動時、エッジ間通信切断⇒復旧時など、状態同期時に全データが送信される(全データ)例えば、空調機が「ON/OFF」「設定温度」「室温」の3データを持っているとすると、• 変化データ:室温変化時に「室温=20℃」を送信、ON/OFF変化時に「ON/OFF=ON」を送信• 全データ:「ON/OFF=ON」「設定温度=22℃」「室温=20℃」を送信
14 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.①通信量&AWS IoT Core利用料の最適化AWS CloudAWS IoTCoreAmazon KinesisData StreamsAWS Lambdaエッジ空調機データAWS CloudAmazon KinesisData StreamsAWS Lambdaエッジ空調機データ変化データ 全データ• 最初の設計では、全てKinesisで受信 ⇒ 通信費用がビジネス要件に合わない• Kinesisへデータ送信する度に発生するHTTPS接続確立のためのハンドシェイクが大きな割合を占める⇒高頻度・少量のデータ送信である変化データ送信を、AWS IoT Core(MQTT)で受信することで、大幅に通信量を削減。
15 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.①通信量&AWS IoT Core利用料の最適化AWS CloudAWS IoTCoreAmazon KinesisData StreamsAWS Lambdaエッジ空調機データAWS CloudAmazon KinesisData StreamsAWS Lambdaエッジ空調機データ変化データ 全データ• 変化データ受信処理には、AWS IoT Coreのルールアクションを利用• AWS IoT CoreにかかるAWS利用料を最適化するため、Basic Ingestを利用[Basic Ingest]・AWS re:Invent 2018で発表・メッセージングコストを発生させることなくルールアクションを実行できる
16 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.②DynamoDB利用料の最適化AWS CloudAWS LambdaAmazon DynamoDB• 数百万の空調機の遠隔監視を可能とするデータベースとして、無限のスケーラビリティをサーバーレスで実現するDynamoDBを採用• DynamoDBのAWS利用料を最適化するために、DynamoDBの料金体系を考慮した設計を実施Amazon KinesisData Streams空調機データ空調機データ(現在値)
17 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.②DynamoDB利用料の最適化• 料金体系DynamoDB上のデータを読み書きする際、アイテムの一部だけ読み書きする場合でも、アイテム全体のサイズに応じたキャパシティが消費される書き込みにかかる料金(WCUの料金)は、読み込みにかかる料金(RCUの料金)の10倍以上• キー設計高頻度に送信される空調機データ(変化データ)の書き込みにかかるWCUの消費を最適化するようにキーを設計AWS CloudAWS LambdaAmazon DynamoDBAmazon KinesisData Streams空調機データ空調機データ(現在値)
18 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.②DynamoDB利用料の最適化• 料金体系プロビジョニングモード(あらかじめ必要なキャパシティを確保)とオンデマンドモード(消費した分だけ料金発生)プロビジョニングモードにはオートスケーリング機能、リザーブドキャパシティの仕組がある• キャパシティモードの使い分け常に負荷がかかり続けるDB(=空調機データ用のDB)⇒プロビジョニングモードユーザ操作時のみ負荷がかかるDB(マスタデータ用のDBなど。システム構成図上は記載を省略)⇒オンデマンドモードAWS CloudAWS LambdaAmazon DynamoDBAmazon KinesisData Streams空調機データ空調機データ(現在値)
19 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.②DynamoDB利用料の最適化• 料金体系データストレージにかかるコストはS3に比べると高い(Amazon Aurora等、他のデータベースサービスと比べてもやや高い)• ストレージサービスの使い分け時系列でデータ量が増え続けていくデータはS3に格納時系列でデータ量が増えないデータはDynamoDBに格納空調機の遠隔監視に用いる空調機データ(現在値)や、マスタデータはDynamoDBに格納し、データ見える化等に用いる空調機データ(時系列)はS3に格納するAWS CloudAWS LambdaAmazon DynamoDBAmazon KinesisData Streams空調機データ空調機データ(現在値)
20 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.③時系列データ作成に伴うAWS利用料の最適化AWS Cloudエッジ空調機データ空調機データ(時系列データ)時系列データ作成処理Amazon Simple StorageService (Amazon S3)エッジから送信される空調機データ00:00 ON/OFF=ON、設定温度=22℃、室温=20℃00:12 ON/OFF=OFF00:27 設定温度=23℃00:49 室温=24℃時系列データ時刻 ON/OFF 設定温度 室温00:00 ON 22℃ 20℃00:05 ON 22℃ 20℃00:10 ON 22℃ 20℃00:15 OFF 22℃ 20℃00:20 OFF 22℃ 20℃00:25 OFF 22℃ 20℃00:30 OFF 23℃ 20℃00:35 OFF 23℃ 20℃00:40 OFF 23℃ 20℃00:45 OFF 23℃ 20℃00:50 OFF 23℃ 24℃00:55 OFF 23℃ 24℃エッジから送信される空調機データは変化データであるため、そのデータをもとに時系列データを作成する処理が必要
21 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.③時系列データ作成に伴うAWS利用料の最適化• 時系列データ作成処理空調機データ(現在値)DynamoDBのデータから時系列データの作成は困難(例えば、空調機データ(現在値)を定周期でポーリングして時系列データを作成する案があるが、ポーリング処理が遅延、停止などが起こると、即、時系列データの欠損につながるので現実的ではない。)Amazon Simple StorageService (Amazon S3)Amazon Elastic ContainerService (Amazon ECS)AWS CloudAmazon KinesisData StreamsAWS LambdaAmazon DynamoDBAmazon ElastiCacheAmazon KinesisData StreamsAWS Lambda空調機データ(現在値)空調機データ(時系列データ)空調機データ
22 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.③時系列データ作成に伴うAWS利用料の最適化• 時系列データ作成処理エッジから送信された空調機データを一時的にElastiCacheに保持し、ElastiCacheに保持したデータを元に、ECSでバッチ処理で時系列データを作成し、S3に格納するAmazon Simple StorageService (Amazon S3)Amazon Elastic ContainerService (Amazon ECS)AWS CloudAmazon KinesisData StreamsAWS LambdaAmazon DynamoDBAmazon ElastiCacheAmazon KinesisData StreamsAWS Lambda空調機データ(現在値)空調機データ(時系列データ)空調機データ00:00 ON/OFF=ON、設定温度=22℃、室温=20℃00:12 ON/OFF=OFF00:27 設定温度=23℃00:49 室温=24℃
23 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.③時系列データ作成に伴うAWS利用料の最適化• 時系列データ作成処理Lambda、DynamoDBではAWS利用料が合わず、ECS、ElastiCacheを採用空調機データ(現在値)と異なり、障害発生が即、ユーザ影響につながるわけではないため、サーバーレスにこだわりすぎず、AWS利用料削減を優先した(必ずしも、サーバーレス=コストダウンとは限らない)Amazon Simple StorageService (Amazon S3)Amazon Elastic ContainerService (Amazon ECS)AWS CloudAmazon KinesisData StreamsAWS LambdaAmazon DynamoDBAmazon ElastiCacheAmazon KinesisData StreamsAWS Lambda空調機データ(現在値)空調機データ(時系列データ)空調機データ
24 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.まとめ• 通信量まで考慮したAWSサービスの選定• IoTシステムにおいてはAWS利用料だけでなく通信量も重要• 通信頻度が高い場合はIoT Core(MQTT)が効果的• AWSの料金体系を考慮した設計• 機能実現だけでなく、料金体系まで考慮したAWSの使いこなしが重要• 特にDynamoDBの書き込みに関わるキー設計は重要• サーバーレス=コストダウンとは限らない• IoTシステムにおける機器データ処理部は、常時負荷がかかるので要注意• サーバーレスにこだわりすぎない判断も必要
25 Copyright: ©2021 DAIKIN INDUSTRIES, LTD., All Rights Reserved.ご清聴ありがとうございましたDaikin Global Platformに興味を持っていただいた方!AWSをやりたい方!一緒にDaikin Global Platformを作りませんか?ご応募、お待ちしております!(採用HP)http://www.daikin.co.jp/recruit/career/