Upgrade to Pro — share decks privately, control downloads, hide ads and more …

〜部品のすべてを手の中に〜AWSをフル活用した車載センサデータ収集基盤の開発

 〜部品のすべてを手の中に〜AWSをフル活用した車載センサデータ収集基盤の開発

IoT, AI, Cloud などの技術の急速な進展に伴い、自動車産業は100年に一度の大変革期を向かえている。デンソーデジタルイノベーション室では「部品のすべてを手の中に」のビジョンのもと、IoTプロジェクトの開発スピード向上に向けたデータ収集処理基盤の開発を進めている。最初のMVPとして車載センサやCANデータを収集するシステムを開発する中で、運用まで含めて取り組んだ課題とサーバレスで構築した事例を紹介する。またコロナ禍におけるリモート開発の事例についても触れる。

Yusuke Takagi

October 21, 2020
Tweet

Other Decks in Technology

Transcript

  1. © DENSO CORPORATION All Rights Reserved. / 32 〜部品のすべてを手の中に〜 AWSをフル活用した車載センサーデータ収集基盤

    の開発 高木 祐介 デジタルイノベーション室 アジャイル開発課 2020年10月21日
  2. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 2 自動車部品メーカーとして、 自動車部品から取れるデータのすべてを、 ドライバーの手の中に届けたい クルマ(の中のセンサー)をクラウドに繋げると何が嬉しい? クラウドからクルマ(の中のセンサーやアクチュエーター)に繋がると何が嬉し い? 〜部品のすべてを手の中に〜とは?
  3. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 3 危険運転やあおり運転を見つけたら自動的に周囲のクルマが動画付きで通 報、保険点数の増減 警察のドローンや救急車両から周囲のクルマを緊急停止 クルマがドライバーの体温や心拍をヘルスチェックして、ハザードランプ点灯、徐 行、路肩に停車、緊急時は病院や救急へ通報 クルマの故障カルテをディーラーへ事前に通知して、素早くメンテしてもらえる クルマの部品がクラウドに繋がったら…ドリームその1
  4. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 4 クルマがスマホになる(or クルマとスマホが連動する) • スケジュール管理:その日のスケジュールを教えてくれる • おサイフクルマ(おサイフケータイならぬ)でドライブスルー決済 • 運転しながらハンズフリーで警察や救急と通話 • スマホで入力した目的地をカーナビが認識 • カーナビのマップを日々自動更新 • カーナビがドライバーの好みを学習して、近くのお店を提案してくれる • 自宅近くに帰ってきたら自宅のエアコンを自動起動 • 交通統計ビッグデータを元に道路開発計画 クルマの部品がクラウドに繋がったら…ドリームその2
  5. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 5 デンソーについて
  6. © DENSO CORPORATION All Rights Reserved. / 32 高木祐介 デンソー

    新横浜イノベーションラボ デジタルイノベーション室(DI室) スクラム開発のデベロッパー 開発経験:F-BASIC386 (FM TOWNS)、C、Java、 LAMP、 AWS、Unity (C#)、docker、Raspberry Pi、... 2002年〜SIerで業務システムの開発 2011年〜ネット系企業でソーシャルゲームの開発・運営 2018年〜デンソーでモビリティサービスの開発・運用 製造業でのアジャイル開発に興味を持ち、デンソーに入社 Title / Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 6 自己紹介
  7. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 7 複数のPoCプロジェクトで重複システムを構築していた 背景 ユーザ Webサーバ アプリ用DB ユーザ ユーザ ユーザ 車載デバイス アプリレイヤ プロジェクト1 プロジェクト2 プロジェクト3 プロジェクト4 センサA センサB データ 取得 アップ ロード 変換 データ 取得 変換 センサC データ 取得 アップ ロード 変換 センサD センサE データ 取得 アップ ロード 変換 データ 取得 変換 センサF データ 取得 アップ ロード 変換 センサ データ 認証 データ 車室内 環境情報 分析 モデル Webサーバ アプリ用DB センサ データ 認証 データ ドライバ 情報 分析 モデル 分析サーバ アプリ用DB センサ データ マスタ データ 分析 モデル 分析サーバ アプリ用DB センサ データ マスタ データ 分析 モデル センサA メ ッ セ ー ジ ブ ロ ー カ デ ー タ 提 供 データレイク データ 取得 データ 取得 データ 取得 データ 取得 クラウド 車 センサD センサE メ ッ セ ー ジ ブ ロ ー カ デ ー タ 提 供 データレイク センサB プロジェクトごとに開発が必要 共通化すれば使い回しが可能 メ ッ セ ー ジ ブ ロ ー カ デ ー タ 提 供 データレイク センサC メ ッ セ ー ジ ブ ロ ー カ デ ー タ 提 供 データレイク センサF
  8. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 8 事業部門がセンサー(ハードウェア)、組み込みソフト、クラウドをバラバラに各 開発者(自社、他社混在)から調達していた システム全体の構築には幅広い分野の知識が必要 • クラウド、インターネット、IoT • CAN (Controller Area Network)、SPI、 I2C、 UART、USB、Bluetooth (Classic、 BLE) • マイコン、Raspberry Pi、Jetson (ARM)、Congatec (Intel Atom) • 車載要件品質のハードウェア(耐熱性能、電源など) 背景
  9. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 9 セキュリティリスク • プロジェクト毎に別々のベンダーで調達した際に、セキュリティなど非機能要 件の検討不足(不要なポートの公開など)が発生していた 背景
  10. © DENSO CORPORATION All Rights Reserved. / 32 共通基盤のあるべき姿 Title

    / Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 10 ユーザ Webサーバ アプリ用DB ユーザ ユーザ ユーザ 車載デバイス 共通基盤 アプリレイヤ プロジェクトごとに開発が必要 共通のため使い回しが可能 プロジェクト1 プロジェクト2 プロジェクト3 プロジェクト4 センサA センサB データ 取得 アップ ロード 変換 データ 取得 変換 センサC データ 取得 アップ ロード 変換 センサD センサE データ 取得 アップ ロード 変換 データ 取得 変換 センサF データ 取得 アップ ロード 変換 データ収集を共通基盤化して新規に構築する範囲を低減 ・プロジェクトが終了しても共通部分は再利用可能→新規プロジェクト開発の期間短縮・低コスト化 →共通部分の継続的改善 ・非機能要件(可用性・セキュリティなど)が統一的に管理できる→システム品質の向上 センサ データ 認証 データ 車室内 環境情報 分析 モデル Webサーバ アプリ用DB センサ データ 認証 データ ドライバ 情報 分析 モデル 分析サーバ アプリ用DB センサ データ マスタ データ 分析 モデル 分析サーバ アプリ用DB センサ データ マスタ データ 分析 モデル センサA センサB センサC センサD センサE センサF メ ッ セ ー ジ ブ ロ ー カ デ ー タ 提 供 データレイク データ 取得 データ 取得 データ 取得 データ 取得 クラウド 車
  11. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 11 由来は部品を集めて運んだりする通い箱(tote box)から。 どんな部品でも入れられて、何度でも繰り返し利用できる。 またトートバッグのように思い立った時に気楽に使えるように想いを込めました。 部品の全てをあなたの手に。 お気に入りを詰め込んで、さぁ、新しい世界に飛び出そう! 車載センサーデータ収集基盤 tote
  12. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 12 • 部署をまたいだ複数PoCプロジェクト横断で共通基盤を作る • 自社開発のセンサーを実車試験するため • サービスに向けた実車データ収集のPoCのため • 主な要件 • PoCでなるべく早くデータを見たい • サンプリング周期は高いが、データサイズはそれほど大きくない • サンプリング周期:1ms〜100ms、サイズ:数バイト〜数十バイト • 将来の本番展開に向けてスケーラビリティ、拡張性を持たせたい • 日本と中国に対応 • 複数アーキテクチャ(ARM、Intel Atom)の車載器に対応 • 車載器は後付け tote開発の概要
  13. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 13 • 多種多様なセンサーに対応する • グローバルに対応する(日本、中国、...) • 最初からセキュリティなど非機能要件も考慮 • MVP (Minimum Viable Product) からアジャイル(スクラム)開発 • 新しい生活様式への対応 toteの開発方針
  14. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 14 tote開発チームとステークホルダー PO Dev/SM Dev Dev Dev アーキ&テック課 アジャイル開発課 SRE課 センサーを作る人 事業部 データを利用する人 組み込みソフトを作る人 DI室内の複数課員が 開発チームに集結
  15. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 15 • シリアル通信のプロトコル • 自動車内の部品たちが通信するLANのようなもの • チャンネル(CAN-ID、数バイト単位のデータ塊)、変数(データ) • 車速、エンジンの回転数、ブレーキ、ギア、ウィンドウ、故障診断コード、... • ビットアサイン表 • CANデータのフォーマット定義 • 自動車メーカーの秘密情報なのでセキュリティ必要 • 今回PoCの要件 • 取得するのは200変数ぐらい • 取得対象変数を選べるように • サンプリング周期は100ms (10Hz) • 月20日、1日9時間稼働、 圧縮率80%で月10GB(車両20台で200GB) CAN (Controller Area Network) とは
  16. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 16 • 車載器ソフトを共通部分とセンサー固有部分に分ける • 車載器ソフトをコンテナ (docker) で動かす • Raspberry Pi、Jetson (ARM) で様々なI/F (GPIO (SPI、I2C、UART)、 USB、Bluetooth) に対応 • 後に車載要件でCongatec (Intel Atom) にも対応 • AWS IoT Core (MQTT) でPoCから大量に繋ぐまで簡単にスケールできる • ペイロード128KB制限 • 1分単位でファイルをまとめる • ファイルをzip圧縮して送信 • 統一フォーマットのデータファイルをS3に置くというシンプル設計 • Athenaでデータ抽出、分析 多種多様なセンサーに対応する
  17. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 17 アップローダー(共通部分)とアダプター(センサー固有部分)を分ける 多種多様なセンサーに対応する
  18. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 18 シンプルな統一フォーマットのデータファイル 多種多様なセンサーに対応する ユーザ 車載デバイス 共通基盤 アプリレイヤ センサA センサB データ 取得 アップ ロード 変換 データ 取得 変換 Webサーバ アプリ用DB センサ データ 認証 データ ドライバ 情報 分析 モデル センサA センサB メ ッ セ ー ジ ブ ロ ー カ デ ー タ 提 供 データレイク データ 取得 FF01FFE7000CFFDEFFF70018 {“timestamp”:“202008111148275674”,“value1”:“-25"} {"timestamp":"202008111148276637","value1":”12"} {"timestamp":"202008111148277597","value1":”-34"} {"timestamp":"202008111148278561","value1":”-9"} {"timestamp":"202008111148279527","value1":”24"} ▪センサデータ(バイナリ) ▪センサ値のデコード及びタイムスタンプ付与 {“timestamp”:“202008111148275674”,“value1”:“-25"} {"timestamp":"202008111148276637","value1":”12"} {"timestamp":"202008111148277597","value1":”-34"} {"timestamp":"202008111148278561","value1":”-9"} {"timestamp":"202008111148279527","value1":”24"} ▪デバイス情報や日付ごとにprefixをつけ、圧縮したファイルで保存 project=vital/unit=unit-2/sensor=steering/year=2020/month=08/day=11 timestamp sensorA 202008111148275674 -25 202008111148276637 12 202008111148277597 -34 202008111148278561 -9 202008111148279527 24 Id name unitId 0001 Taro unit001 0002 Jiro unit002 0003 Hanako unit003 0004 Saburo unit004 0005 Shiro unit005 ・保存プレフィックス ・保存ファイル(gzip圧縮した状態で保存) プレフィックスを付与することで 必要なデータのみ検索可 センサデータにタイムスタンプをつけるという 汎用的なフォーマットのため後工程で加工しやすい アプリ開発者は 共通基盤についての開発コストがかからない ▪アプリ側で必要なデータのみ取得し使いやすい形式で保存
  19. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 19 • 多様なセンサーの多様なデータを抽出、分析したい • データ分析するのは他部署や他社の人 • Athenaで検索しやすいHive形式のプレフィックス • PoCのユースケースでは素早くデータを取ることが目的 • パーティションを切って検索範囲を狭くする • 毎日パーティションを追加する(しないと検索対象にならない) • Athenaでパケ死しないためにシステム設定でルールを決める • Per query data usage control クエリ毎のデータスキャン上限 • 例:10MBを超えるクエリは自動キャンセル • Workgroup data usage controls ワークグループのデータスキャン上限 • PoCプロジェクト単位でワークグループを作る • 例:1日1GBを超えたらCloudWatchでアラートを飛ばす 多種多様なセンサーに対応する
  20. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 20 • あるプロジェクトの例:本システムはPoCであるため品質保証はせず(SLAは定義しない)、必要最小限の品質確認 テストを実施する際の合否判定を行うための基準として目標値(SLO)のみを定義することとする。 安心して使えるためにセキュリティ(非機能要件)も手当てする 運用タスク 品質要件項目 目標値 補足 性能効率性 • 車載器の台数 20台 • 車載器の同時稼働台数 20台 • 車載器1台の1日当たりの最大稼働時間 8時間 • クラウド上でのデータ蓄積量 200GB/月 信頼性 • 稼働率 95.0% クラウド側のサービスのみを規程 メンテナンス期間は除外 • 目標障害復旧時間 障害発生から24時間以内に復旧作業を開始 する。ただし、東京カレンダーの営業日に限る。 問い合わせ時間は9-18時 • 目標障害復旧地点 障害が発生した前日にクラウド上に保存されて いたすべてのデータが復旧できること。それ以外の データの欠損は許容する。 S3の耐久性(99.999999999%)を超える障 害については保証しない 車載器の障害については保証しない セキュリティ • 不正車載器からの接続拒否 正しい証明書を持たない車載器からの接続を 拒否すること • 不正データ利用者の接続拒否 正しい権限を持たない利用者からの接続を拒 否すること • 車載器へのアクセス防止 車載器にssh接続した際にID/PASSWORD が求められないこと • 車載ストレージの暗号化 車載ストレージを他デバイスに接続しても中身が 読めないこと
  21. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 21 • Config(不正設定監視) • GuardDuty(脅威検出) • CloudTrail(不正ログイン監視) • Cost Explorer(コスト監視) • Trusted Advisor(ベストプラクティス) • Systems Manager(SSM:マネジメントコンソール内でEC2にログイン) 安心して使えるためにセキュリティも手当てする
  22. © DENSO CORPORATION All Rights Reserved. / 32 A W

    S I oT C ore 車載器 A m azon Si m pl e Storage Servi ce 分析結果 報告書 RRiデータ 変換 不正ロ グイ ン 監視 コ スト 監視 不正設定 監視 A m azon A thena データ 取得 AWS Cloud A m azon C l oudW atch Events A W S Lam bda 脅威監視 A W S C l oudTrai l A m azon G uardD uty A W S Lam bda A W S C onf i g A W S Lam bda A W S C os t Expl orer A W S Lam bda A W S Lam bda エラ ー 監視 生体信号 分析 データ 取得 データ 変換 ア ッ プ ロ ード セン サ ダミ ーデータ 生成 アッ プ ロ ード AWS Cloud システ ム運用担当者 (デン ソ ー社内) データ 取得 データ 変換 アッ プ ロ ード セン サ データ 取得 データ 変換 アッ プ ロ ード セン サ ク ラ ウド 死活監視用 車載器 ap- northeast-1a 運用管理用パブ リ ッ ク サブ ネッ ト 運用管理用VPC Availability Zone AWS System s Manager Am azon Elastic Com pute Cloud 172.31.0.0/16 Availability Zone 開発環境 本番環境 開発用環境も 本番と 同等 A m azon C l oudW atch Events A m azon C l oudW atch Logs A m azon Si m pl e N oti f i cati on Servi ce A m azon C l oudW atch Events Title / Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 22 あるプロジェクトの例:オペレーショナルモデル(物理) システム物理構成図 SRE課員もチームに参加し、 初期から運用・監視も考慮
  23. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 23 証明書とSTSで車載器の権限管理 STSを使わない場合 1. 事前に車載器にクライアント証明書、AccessKeyId、Secretを配布 2. 車載器がAccessKeyIdとSecretで認証 3. S3からビットアサイン表をダウンロード STSを使う場合 1. 事前に車載器にクライアント証明書を配布 2.1. 車載器がiot:CredentialProviderからAccessKeyId、Secret、トークンをもらう 2.2. 発行されたAccessKeyId、Secret、トークンで認証 3. S3からビットアサイン表をダウンロード 安心して使えるためにセキュリティも手当てする
  24. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 24 • AWSは触りやすい • 文献・情報の量が多い • 使い慣れている 安心して使えるためにセキュリティも手当てする
  25. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 25 • インフラ構成をコードで管理(Infrastructure as Code) • インフラコードもgitで構成管理 • 中国(AWS China)にも適用 グローバルに共通で使える
  26. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 26 以前はチームの専用部屋で物理的なホワイトボードを使っていた Slack、 Zoom、Miro、DocBase、Teams、Visual Studio Code、 Workspaces、... • モブプログラミング、モブワーク • Raspberry Piを社内ネットワークに繋げて自宅からVPN経由でssh • 物理的なセンサーや車載器に触る必要がある時に出社 • リモートワークが基本になり、本社(刈谷市)とも気軽に会議できるように 新しい生活様式での開発ツール
  27. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 27 Miro上のスプリントバックログと出欠表 新しい生活様式での開発ツール
  28. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 28 Miro上のモブ設計図 新しい生活様式での開発ツール
  29. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 29 DocBaseに作業内容、写真、設計判断などの記録を残しておく 新しい生活様式での開発ツール
  30. © DENSO CORPORATION All Rights Reserved. / 32 Title /

    Month XX, 2020 (『挿入』→『ヘッダーとフッター』から入力してください) 30 AWSの運用は以前と変わらない 新しい生活様式での運用ツール 運用タスク例 項目 概要 ツール 定期運用 監視 サービスが稼働しているか正常性の監視 AWS CloudWatch等 キャパシティ管理 車載器を含むシステムリソースの過不足の調整 AWS CloudWatch等 バックアップ オブジェクトストレージが自動でコピーを残すため対象外とする、車載器はバックアップを取らない データ保守 取得データは全て保存するため削除/更新等は発生しない 使用期限のあるリソースの更新 AWS IoTの証明書が2050年まで有効なので、今回は更新しない 運用レポート サーマル側で要否を判断 バージョン棚卸し OSやソフトウェアなどのバージョンは原則更新しない 非定期運用 ユーザー管理 ユーザー・車載器の登録・削除など Excel 権限管理 ユーザ・リソースに対する権限の付与/解除など AWS IAM、KeyCloak等 リリース管理 クール間の更新のみを対象 Excel パッチ適用 ソフトウェアの不良修正など AWS IoT等 構成変更 システム構成は原則更新しない アラート システムエラー通知/障害への対応 Teams/slack インシデント管理 システム障害への対応状況の整理 Excel? 問題管理 サーマル側で要否を判断 起動・停止 システムの起動及び停止処理 - リストア システム/データのバージョンは原則更新しない、車載器は交換で対応 -