More Related Content
Similar to サーバーレスアーキテクチャで実現するグローバル空調IoTプラットフォームへの挑戦 (20)
More from Takuya Kitamura (7)
サーバーレスアーキテクチャで実現するグローバル空調IoTプラットフォームへの挑戦
- 1. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
サーバーレスアーキテクチャで実現する
グローバル空調IoTプラットフォームへの挑戦
2018.10.03
テクノロジー・イノベーションセンター
北村 拓也
AWS Solution Days 2018 Osaka
- 2. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 2
自己紹介
北村 拓也 (Twitter : @chipstar_light)
ダイキン工業株式会社所属
2017年6月にキャリア入社
テクノロジー・イノベーションセンターの研究員
Daikin Global Platform構築プロジェクトの開発リーダー
コミュニティ活動
京都アジャイル勉強会(#京アジャ)運営のお手伝い
月に1回Open JAMやってますよ!
最近JAWS-UG関連のコミュニティに顔出しはじめました!
- 3. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 3
今日話したいこと
1. ダイキン工業のIoTへの取り組み
2. Daikin Global Platformが抱える技術課題
3. 技術課題へのアプローチ
- 5. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 5
ダイキン工業株式会社
• 創業 1924年(大正13年)10月25日大阪で創業
• 創業者 山田晃
• 会長 井上礼之
• 社長兼CEO 十河政則
• グループ従業員数 67,036名(単独6,891名)
• 本社 大阪市
• 売上 2兆2,700億円
• 営業利益 2,500億円
- 6. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 6
グローバル展開
10年の変化 2005年⇒2016年
事業展開 63ヵ国 ⇒ 150カ国
生産拠点 23拠点 ⇒ 90拠点以上
海外事業比率 46% ⇒ 75%
● 販売拠点
● 生産拠点
- 7. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
空調
89.8%
化学
7.7%
その他
2.5%
売上高(2017/3月期)
20,440億円
半導体用途
自動車用途
撥水撥油剤
(18,354億円)
(1,568億円)
(518億円)
空調事業化学事業
その他事業
7
- 8. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 8
空調IoTへの取り組み
Daikin Global Platform
• 全世界の空調機をインターネットにつないで、販売、施工、運
用、保守、更新といったライフサイクルに対するサービスを提
供する
- 9. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 9
レジデンシャル市場(家庭用) コマーシャル市場(業務用)
リージョンアプリ(地域別機能とUI)
クラウドプラットフォーム
RA
一般住宅などの
小規模建物
スマホ ユーザ
エコキュート
床暖
エッジ エッジ
大規模住宅(豪邸)
などの中規模建物
VRV
ユーザ
燃焼/ボイラ
アルテルマQA
RA
スマホ
エコキュート
床暖 VRVQARA
オフィスビルなど
中規模建物
管理パネル
オーナー
ビル管
テナント
RA
ショッピングモールなど
大規模建物
アプライド
管理パネル
VRVQA
オーナー
ビル管
テナント
共通部品(API)群
(機器操作等)
システム間
連携
分析システム
BMS/BEMS
その他システム
柔軟性・拡張性 自動最適制御
情報蓄積
基盤(DB)
情報蓄積基盤(DB)
マーケ
ティング
営業
商品
開発
品質
管理
施工
業者
販売店BI/分析ツール
各地域開発者 地域別アプリケーション
サービスアプリ
顧客管理、
課金管理など
個人情報保護
不正制御など
セキュリティ
- 10. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
中国リージョン日本リージョン欧州リージョン
お客様施設お客様施設
10
クラウド
プラットフォーム
クラウド
プラットフォーム
エッジ
機器 機器 機器 機器
…
お客様施設お客様施設
エッジ
機器 機器 機器 機器
…
お客様施設お客様施設
エッジ
機器 機器 機器 機器
…
クラウド
プラットフォーム
統合クラウド
リージョン
アプリ
リージョン
アプリ
リージョン
アプリ
… リージョン
アプリ
リージョン
アプリ
リージョン
アプリ
… リージョン
アプリ
リージョン
アプリ
リージョン
アプリ
…
…
インターネット インターネット インターネット
インターネット インターネット インターネット
各拠点
機器情報
各拠点
機器情報
各拠点
機器情報
全拠点
機器情報
インターネット
- 12. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 12
大量接続、大量アクセス
• 想定機器接続台数100万台
(100万台が1分間隔で同時発報)
• 想定ユーザー数30万人
(同時アクセス9万人)
• 求められる高い処理性能とスケーラビリティ
• 無限に発生するデータを扱えるストレージ
- 13. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 13
• フルマネージドサービスを徹底活用
• サーバーレスアーキテクチャにこだわる!
• 性能とスケーラビリティの担保をAWSに任せる!
• NoSQLの徹底活用
• 断固としてRDBは使わず、全てをNoSQLでまかなえるように!
大量接続、大量アクセス サーバーレスアーキテクチャの採用
※フルマネージドサービス利用の徹底
NoSQLの徹底活用
- 14. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 14
接続台数に応じたコスト最適化
• 中規模物件向け空調機サービスの適正価格はシビア
• 初期投資を限りなく抑えたい
• 接続台数とAWS利用料を限りなく正比例にしたい
• 階段状で増えるのは嫌、リニアに増えて欲しい
利用料利用料
接続台数 接続台数
初期投資を
抑えたい
階段を正比例
にしたい
- 15. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 15
• 徹底的な従量課金サービスの利用へ
• 非機能もできるだけマネージド・サービスでカバー
• 可用性やセキュリティ、バックアップといった機能もセルフマネージド
サービスを使うことで課金体系が従量制になることを避ける
• 運用を自動化し、固定費になる運用の人件費も削減
接続台数に応じたコスト最適化 サーバーレスアーキテクチャの採用
※フルマネージドサービス利用の徹底
運用の徹底的な自動化
- 16. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 16
エッジ-クラウド間通信料の削減
• AWSの利用料だけでなく、通信回線の利用料も考慮する
• データはたくさん集めたい↔通信料を抑えないと利益がでない
• 毎分570byte×エッジ接続機器の通信データが発生
• 安いノンセルラーのLPWAは使えない
エッジ
機器
機器
機器
クラウド
1分間隔
570byte×30台=17Kbyte
平均30台接続
他通信もあり
- 17. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 17
• 最も効率的な通信方法とIoTブローカーの探求
• シーンに合わせた複数のIoTブローカーの使い分け
• 通信料+AWS利用料が最も安い構成へ!
エッジ-クラウド間通信料の削減 IoTブローカーの効果的な使い分け
- 18. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 18
リアルタイム制御
• 無限に発生し続ける計測データとイベントデータ
• 収集データを評価し、それを元に機器をリアルタイムで自動制御する
• 室温に合わせて冷暖モードを自動切り替えする、etc…
• 機器から収集されるデータをリアルタイムに分析する
• 故障予知、故障診断、etc…
• 他システムへのリアルタイムに連携する
• 統合クラウド、他分析システム、etc…
業務用空調機
家庭用空調機
データ収集
リアルタイム自動制御
レポート用集計
機器現在状態表示
リアルタイム分析周辺機器
機器操作
リアルタイムシステム連携
- 19. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 19
• 大量データをバッチ処理ではなく、1件毎に即時処理
• ストリーミングアーキテクチャを中心に置く
• 高いパフォーマンスを保ちながら、大規模なスケールでストリー
ミングデータを扱う
• 今後拡充が想定される新たなリアルタイム処理を追加しやすい
アーキテクチャに
リアルタイム制御 ストリーミングアーキテクチャの採用
- 20. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 20
技術課題まとめ
大量接続、大量アクセス
接続台数に応じたコスト最適化
エッジ-クラウド間通信料の削減
リアルタイム制御
サーバーレスアーキテクチャの採用
※フルマネージドサービス利用の徹底
NoSQLの徹底活用
運用の徹底的な自動化
IoTブローカーの効果的な使い分け
ストリーミングアーキテクチャの採用
- 21. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 21
大量接続、大量アクセス
接続台数に応じたコスト最適化
エッジ-クラウド間通信料の削減
リアルタイム制御
サーバーレスアーキテクチャの採用
※フルマネージドサービス利用の徹底
運用の徹底的な自動化
NoSQLの徹底活用
IoTブローカーの効果的な使い分け
ストリーミングアーキテクチャの採用
技術課題まとめ
- 24. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 24
ストリームをアーキテクチャの中心に置く
業務用
空調機
レポート用
データ集計
リアルタイム
分析
周辺機器
外部システム
連携
収集データ
リアルタイム
自動制御収集データ
エッジ
操作データ操作データ
クラウド
機器現在
状態更新
Kinesis
Kinesis
リージョン
アプリ
統合
クラウド
- 25. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 25
データコンシューマをマイクロサービス化
業務用
空調機
レポート用
データ集計
リアルタイム
分析
周辺機器
外部システム
連携
収集データ
リアルタイム
自動制御収集データ
エッジ
操作データ操作データ
クラウド
機器現在
状態更新
Kinesis
Kinesis
リージョン
アプリ
統合
クラウド
機器現在状態管理サービス
リアルタイム自動制御サービス
リアルタイム分析サービス
レポート用データ集計サービス
外部システム連携サービス
- 26. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 26
各サービスもストリーミングアーキテクチャに
業務用
空調機
レポート用
データ集計
リアルタイム
分析
周辺機器
外部システム
連携
収集データ
リアルタイム
自動制御収集データ
エッジ
操作データ操作データ
クラウド
機器現在
状態更新
Kinesis
Kinesis
リージョン
アプリ
統合
クラウド
機器現在状態管理サービス
リアルタイム分析サービス
レポート用データ集計サービス
Lambda
Lambda
リアルタイム自動制御サービス
外部システム連携サービス
機器現在
状態
連携データ
Kinesis
- 27. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 27
各サービスもストリーミングアーキテクチャに
業務用
空調機
レポート用
データ集計
リアルタイム
分析
周辺機器
外部システム
連携
収集データ
リアルタイム
自動制御収集データ
エッジ
操作データ操作データ
クラウド
機器現在
状態更新
Kinesis
Kinesis
リージョン
アプリ
統合
クラウド
機器現在状態管理サービス
リアルタイム分析サービス
レポート用データ集計サービス
Lambda
Lambda
リアルタイム自動制御サービス
外部システム連携サービス
機器現在
状態
連携データ
Kinesis
EMR Spark
Streaming
EMR Spark
Streaming
集計
結果
分析結果
Kinesis
- 28. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 28
各サービスもストリーミングアーキテクチャに
業務用
空調機
レポート用
データ集計
リアルタイム
分析
周辺機器
外部システム
連携
収集データ
イベント
検知収集データ
エッジ
操作データ操作データ
クラウド
機器現在
状態更新
Kinesis
Kinesis 分析結果
連携データ
集計
結果
リージョン
アプリ
統合
クラウド
Kinesis
Kinesis
機器現在状態管理サービス
リアルタイム分析サービス
レポート用データ集計サービス
リアルタイム
自動制御
イベント
データ
イベント
通知
通知データ
Lambda
Lambda
EMR Spark
Streaming
EMR Spark
Streaming
Kinesis Lambda
Kinesis
Lambda
Lambda
リアルタイム自動制御サービス
機器現在
状態
外部システム連携サービス
- 30. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
クラウド
30
IoTブローカーの検討
機器操作
データ収集
エッジ
データ収集
機器操作
コストを押さえるために一般的に知
られていたプラクティス
• データ収集はKinesis
• 機器操作はAWS IoT
Kinesis Lambda
AWS IoT
リアルタイム
自動制御
リージョン
アプリ
機器状態
- 31. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
クラウド
31
IoTブローカーの検討
機器操作
データ収集
エッジ
データ収集
機器操作
コストを押さえるために一般的に知
られていたプラクティス
• データ収集はKinesis
• 機器操作はAWS IoT
Kinesis Lambda
AWS IoT
リアルタイム
自動制御
リージョン
アプリ
プロトタイプの結果、
利用料金が想定コストを超えた
コスト
想定コスト
機器状態
- 32. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
クラウド
32
IoTブローカーの検討
機器操作
データ収集
エッジ
データ収集
機器操作
コストを押さえるために一般的に知
られていたプラクティス
• データ収集はKinesis
• 機器操作はAWS IoT
Kinesis Lambda
AWS IoT
リアルタイム
自動制御
リージョン
アプリ
プロトタイプの結果、
利用料金が想定コストを超えた
AWS
利用料金
通信回線
利用料金
想定コスト
通信回線
利用料金
AWS
利用料金
機器状態
- 33. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 33
通信内容の分析
AWS
利用料
通信回線
利用料金
トータル
コスト
ペイ
ロード
想定
コスト
ペイ
ロード
以外
[分析結果]
• Kinesisへデータ送信する度に発生する
接続確立のためのハンドシェイクが
大きな割合を占める
• Keep-Aliveを設定しても、
5秒ぐらいしか効いてくれない
AWS IoTを利用しての
データ収集を再検討
- 34. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
クラウド
IoTブローカーの再検討
機器操作
データ収集
エッジ
データ収集
機器操作
通信量を抑えるため
• 変更データ収集はAWS IoTを使う
• 変更があった情報だけを送信する
AWS IoT
リアルタイム
自動制御
リージョン
アプリ
AWS IoT Lambda
機器状態
- 35. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
クラウド
IoTブローカーの再検討
機器操作
データ収集
エッジ
データ収集
機器操作
通信量を抑えるため
• 変更データ収集はAWS IoTを使う
• 変更があった情報だけを送信する
AWS IoT
リアルタイム
自動制御
リージョン
アプリ
AWS IoT Lambda
AWS IoTの後続処理呼び出しを失
敗した場合、
データがロストしてしまう可能性
がある!
→エッジとクラウドで情報の
不一致が発生してしまう
機器状態
- 36. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved.
クラウド
IoTブローカーの再再検討
機器操作
データ収集
エッジ
データ収集
機器操作
AWS IoT
リアルタイム
自動制御
リージョン
アプリ
AWS IoT Lambda
通信量を抑えるため
• 変更データ収集はAWS IoTを使う
• 変更があった情報だけを送信する
• 定期的にエッジから全データを
Kinesisに送信しクラウド-エッジ
間の同期を取る
AWS
利用料
通信回線
利用料金
トータル
コスト
想定コスト
AWS
利用料
通信回線
利用料金
全データ
収集
Kinesis Lambda
機器状態
- 38. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 38
RDS→DynamoDBのパラダイム・シフト
• データモデル中心設計からクエリ中心設計へ
• 1 application = 1 table
- 39. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 39
データモデル中心設計からクエリ中心設計へ
物件ID
物件名
住所
…
機器ID
物件ID
設置日
機種ID
…機種ID
機種名
…
Partition Key Sort Key Attribute
物件ID 機器ID 物件名 住所 機種ID 機種名 設置日 …
Build001 Equip001 グランフロント 大阪市 Model A VRV5 2018/01 …
Equip002 グランフロント 大阪市 Model A VRV5 2018/01 …
Equip003 グランフロント 大阪市 Model B RA3 2018/01 …
Build002 Equip004 ダイキン本社 大阪市 Model C QA1 2017/04 …
Equip005 ダイキン本社 大阪市 Model A VRV5 2017/04 …
物件テーブル
機種テーブル
機器テーブル
機器テーブル
非正規化
• 正規化されたキレイなテーブル設計を作ってからではなく、
実際に利用するクエリパターンに合わせてた非正規化されたテーブル設計が必要
• Joinが出来ない、複数回のクエリ発行はコスト増
• Partition KeyとSort Key以外の条件指定はフルスキャン
SELECT * FROM 機器テーブル WHERE 物件ID=‘Build001’
SELECT * FROM 機器テーブル WHERE 物件ID=‘Build001’ AND 機器ID=‘Equip001’
SELECT * FROM 機器テーブル WHERE 機種ID=‘ModelA’
︙(その他様々なクエリ)
- 40. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 40
1application=1table
• 複数のテーブルを使用する特定の理由がない限り、
優れた設計のアプリで必要なテーブルは1つのみ
(by DynamoDB開発者ガイド)
• マスタ情報だけではなく、
運転データやイベントデータなども1つのテーブルで保持する必要がある!
Sort Keyに、Composite keyを利用して階層的にデータを表現
- 41. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 41
1application=1table
Partition
Key
Sort Key Attribute
Buil001 METADATA グランフロント 大阪市
Equip001_METADATA Model A VRV5 2018/01 …
Equip001_CURRENT OFF 冷房 27℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:00:00 ON ドライ 28℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:01:00 ON 冷房 28℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:02:00 OFF 冷房 27℃ 値4 値5 …
Equip001_EVENT_2018-06-20T11:02:00 運転ON/OFF ON
Equip001_EVENT_2018-06-20T12:01:00 運転モード切り替え 冷房
Equip002_METADATA Model A VRV5 2018/01 …
︙
Buil002 METADATA ダイキン本社 大阪市
Equip004_MEADATA Model C QA1 2017/04 …
[想定されるユースケース]
① ある物件情報を取得
② 物件に設置している空調機器の各種情報(機器情報、現在状態と過去状態履歴、発生したイベント履歴)を取得
③ 物件に設置している空調機器の過去状態履歴だけを取得
機器テーブル ユースケースに応じたComposite keyを階層的に構成する
- 42. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 42
1application=1table
Partition
Key
Sort Key Attribute
Build001 METADATA グランフロント 大阪市
Equip001_METADATA Model A VRV5 2018/01 …
Equip001_CURRENT OFF 冷房 27℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:00:00 ON ドライ 28℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:01:00 ON 冷房 28℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:02:00 OFF 冷房 27℃ 値4 値5 …
Equip001_EVENT_2018-06-20T11:02:00 運転ON/OFF ON
Equip001_EVENT_2018-06-20T12:01:00 運転モード切り替え 冷房
Equip002_METADATA Model A VRV5 2018/01 …
︙
Build002 METADATA ダイキン本社 大阪市
Equip004_MEADATA Model C QA1 2017/04 …
機器テーブル
①ある物件情報を取得:
SELECT * FROM 機器テーブル WHERE PK=‘Build001’ AND SK=‘METADATA’
- 43. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 43
1application=1table
Partition
Key
Sort Key Attribute
Buil001 METADATA グランフロント 大阪市
Equip001_METADATA Model A VRV5 2018/01 …
Equip001_CURRENT OFF 冷房 27℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:00:00 ON ドライ 28℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:01:00 ON 冷房 28℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:02:00 OFF 冷房 27℃ 値4 値5 …
Equip001_EVENT_2018-06-20T11:02:00 運転ON/OFF ON
Equip001_EVENT_2018-06-20T12:01:00 運転モード切り替え 冷房
Equip002_METADATA Model A VRV5 2018/01 …
︙
Buil002 METADATA ダイキン本社 大阪市
Equip004_MEADATA Model C QA1 2017/04 …
機器テーブル
②物件に設置している空調機器の各種情報(機器情報、現在状態と過去状態履歴、発生したイベント履歴)を取得:
SELECT * FROM 機器テーブル WHERE PK=‘Build001’ AND SK BEGINS_WITH ‘Equip001’
- 44. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 44
1application=1table
Partition
Key
Sort Key Attribute
Buil001 METADATA グランフロント 大阪市
Equip001_METADATA Model A VRV5 2018/01 …
Equip001_CURRENT OFF 冷房 27℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:00:00 ON ドライ 28℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:01:00 ON 冷房 28℃ 値4 値5 …
Equip001_STATE_2018-06-20T12:02:00 OFF 冷房 27℃ 値4 値5 …
Equip001_EVENT_2018-06-20T11:02:00 運転ON/OFF ON
Equip001_EVENT_2018-06-20T12:01:00 運転モード切り替え 冷房
Equip002_METADATA Model A VRV5 2018/01 …
︙
Buil002 METADATA ダイキン本社 大阪市
Equip004_MEADATA Model C QA1 2017/04 …
機器テーブル
③物件に設置している空調機器の過去状態履歴だけを取得:
SELECT * FROM 機器テーブル WHERE PK=‘Build001’ AND SK BEGINS_WITH ‘Equip001_STATE’
- 45. Copyright: ©2018 DAIKIN INDUSTRIES, LTD., All Rights Reserved. 45
まとめ
• ストリーミングアーキテクチャの採用
• リアルタイム制御のためのIoTシステムの中心にはストリーミングアーキ
テクチャを据える
• IoTブローカーの効率的な使い分け
• AWS利用料だけでなく通信回線料とのバランスをみてIoTブローカーを選
定しよう
• NoSQLの徹底活用
• データモデル中心設計からクエリ中心設計へ
• 1 application = 1 table