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

IoTデバイスデータ収集の難しい点

fetaro
November 04, 2020

 IoTデバイスデータ収集の難しい点

Mobility Technologiesではタクシーに取り付けたデバイスのデータを収集していますが、Webとは違うIoTならではの問題や障害を経験しました。それを紹介します。

fetaro

November 04, 2020
Tweet

More Decks by fetaro

Other Decks in Technology

Transcript

  1. Mobility Technologies Co., Ltd. ⾃⼰紹介 2 ID :fetaro 名前:渡部 徹太郎

    学生:東京工業大学でデータベースと情報検索の研究 (@日本データベース学会) 職歴: * 野村総合研究所(NRI) - オンライントレードシステム基盤 - オープンソース技術部隊 * リクルートテクノロジーズ - ビッグデータ分析基盤 * Mobility Technologies - データエンジニア エディタ:emacs派→ InteliJ派 趣味:麻雀、自宅サーバ ⽇本AWSユーザ会(JAWS) ビッグデータ⽀部⻑ やってました 著書
  2. Mobility Technologies Co., Ltd. ドライブレコーダ n システム概要 ドライブレコーダのデータを収集している 4 アップロード

    プログラム インター ネット Wifi LB 収集 処理 アクセス ポイント ルータ ドラ レコ ドラ レコ ドラ レコ 速度 センサ GPS センサ カメラ 分散キュー Wifi タクシー JapanTaxiドライブレコーダv4の写真
  3. Mobility Technologies Co., Ltd. n IoTデバイスからのデータ収集はWebのデータ収集とは違う! 1. バイナリデータを扱う 2. CPUアーキテクチャはx86/x64とは限らない

    3. プログラムのサイズに容量制限がある 4. ネットワークは切れることがある 5. ネットワーク帯域は無限ではない 6. 電源は落ちることがある 7. 電⼒は有限である 8. ログは⾒ることができない 9. アップデートは⼀⼤イベント 10. 時間は正しいとは限らない 「エンジニアの総合格闘技」と呼ばれるほど、多種多様な知識が必要となる IoTデバイスからのデータ収集は⼀味違う 5
  4. Mobility Technologies Co., Ltd. n バイナリファイルとは n 01の配列 n どのように読むか規定されていない

    n パースが必要 n プログラミング⾔語のビット演算をつかう n 論理積 (&) 論理和 (|) ビット反転 (~) 右シフト(>>) 左シフト (<<) n ハマった箇所 n Floatが変な値になる n →リトルエンディアンとビッグエンディアン のとり違い! n -z⽅向加速度が常に⼀定の値を⽰してしまう n →重⼒加速度だった! バイナリデータを扱う 6 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 1 1 Webの場合 IoTデバイスの場合 データ形式 JSON, CSV, DBのテーブル バイナリファイル タイムスタンプ GPS緯度 GPS経度 各種フラグ X⽅向加速度 -X⽅向加速度 y⽅向加速度 -y⽅向加速度 空き パース
  5. Mobility Technologies Co., Ltd. CPUのアーキテクチャはx86/x64とは限らない 7 Webの場合 IoTデバイスの場合 CPU アーキテクチャ

    x86/x64 ARM (が多い) n CPUアーキテクチャとは主に2種類ある n x86/x64 : サーバ、パソコン n ARM : IoTデバイス、スマートフォン n 難しい箇所 n MacOSやクラウドの仮想マシンでコンパイルしたバイナリは動かない n →クロスコンパイルが必要 n どうやってクロスコンパイルするか n Go⾔語やRustが開発しやすい n →JapanTaxiドライブレコーダではメモリ管理に厳格なRust⾔語を採⽤
  6. Mobility Technologies Co., Ltd. プログラムのサイズに制限がある 8 Webの場合 IoTデバイスの場合 プログラムの サイズ

    気にしたこと無い。 磁気ディスクやSSDの容量は 100 Gbyte以上ある。 フラッシュディスクは16Gbyte〜 64Gbyte程度 n 難しい箇所 n プログラムのコンパイル後のサイズを気にする必要がある n ライブラリは潤沢には使えない n →他のモジュールと同じライブラリを使う n 開発⾔語は複数使えない n →Rust⾔語のみ
  7. Mobility Technologies Co., Ltd. n 難しい箇所 n ネットワークは常に切れる想定で開発する必要がある n リトライを仕込む

    n サーバ側でどこまで処理したかを管理し、再接続時にレジュームできるようにする n ハマった箇所 n 無線通信が⼲渉する n Wifiの2.4GHz帯の電波は、他のwifi機器やbluetooth機器と⼲渉する n →デバイス間のチャンネル調整が必要 n 無線電波が弱い n →天井がないと電波が反射が少ない ネットワークは切れることがある 9 Webの場合 IoTデバイスの場合 通信品質 安定 たまにパケットが落ちるぐらい 不安定 場所によって切れる
  8. Mobility Technologies Co., Ltd. n 難しい箇所 n 通信帯域的&コスト的に、 全てのドライブレコーダの動画をアップロードすることはできない n

    →業務要件を加味して必要最⼩限な動画だけアップロードするようにする n →全てのデータが取れない前提でアプリケーションを組む n 同時に全台のデバイスのデータを全⼒でアップロードできない n →アップロードタイミングを制御することは難しいため、タイムアウト指数的に増やしていきで きるだけ救うようにする ネットワーク帯域は有限である 10 Webの場合 IoTデバイスの場合 通信帯域 1Gbps〜10Gbps Wifi: 50Mbps〜500Mbps (SIM: 10Mbps〜100Mpbs) 料⾦ 固定料⾦ (従量課⾦だとしても安い) 従量課⾦でしかも⾼い
  9. Mobility Technologies Co., Ltd. 電源は落ちることがある 11 n 難しい箇所 n 電源が落ちたときを想定して開発する

    n 電源が供給されなくなると、完全停⽌する前にデバイス側からシグナルを受信するので、 それをTRAPして適切な終了処理を書く(ファイルを閉じる等) Webの場合 IoTデバイスの場合 電源の有無 ほとんど気にしない。 インフラ側で吸収してくれる 常に電源が落ちることを想定す る
  10. Mobility Technologies Co., Ltd. 電⼒は有限である 12 n 難しい箇所 n 消費電⼒を抑える

    n エンジンがオンの場合はよいが、オフの場合はバッテリーの電⼒を⽤いた動作になる n ⻑時間の起動はバッテリーあがりを引き起こす可能性がある n ⾞との調整が必要 n 最⼤起動時間を決めて、それ以内に処理を終わらせるようにする Webの場合 IoTデバイスの場合 消費電⼒ え?なんですかそれ? 省電⼒を⼼がける。 起動時間を気にする。
  11. Mobility Technologies Co., Ltd. n 難しい箇所 n エラー内容をサーバに返す前に死なれると何が起きていたかわからない n ログにしかエラー内容は出⼒されない

    n デバイスに接続してログを確認するしかない n SSHサーバは⼊っていないため、SSH接続はできない n タクシー⾞両に⾏きコンソールケーブルを接続して参照する必要あり ログは⾒ることができない 13 Webの場合 IoTデバイスの場合 ログの参照 Cloud watch ポチー ssh ポチー 現地にいってデバイスに物理接 続
  12. Mobility Technologies Co., Ltd. n 難しい箇所 n OTA(Over The Air)による⾃⼰アップデートシステムの整備が必須

    n デバイス側がオンラインになったときに、アップロードプログラムを確認し、あれば⾃ ⾝を更新する仕組み n すべてのモジュール更新がOTAでできるわけではない n インストールメディアをいれたSDカードを持ってタクシー⾞両に⾏き、SDカードをド ライブレコーダに指してインストール作業が必要 n 数百台の作業になることもあり、⼈海戦術となる アップデートは⼀⼤イベント 14 Webの場合 IoTデバイスの場合 デプロイの⽅法 git pull ポチー OTA (Over The Air) or ⼈海戦術
  13. Mobility Technologies Co., Ltd. n ハマった箇所 n 2000年のログが送られてくる n IoTデバイスのマザーボードには時計が内蔵されていないため、起動直後は2000年1⽉1

    ⽇になる n GPS等を介して時刻を取得すると、正しい時刻になる 時間が正しいとは限らない 15 Webの場合 IoTデバイスの場合 時刻同期 マザーボードに時計がある。 NTPで常に同期。 デバイスに時計があるとは限ら ない
  14. Mobility Technologies Co., Ltd. n Webのデータ収集とIoTデバイスのデータ収集は必要なスキルセットが違う! n バイナリデータの扱い n クロスコンパイル・組み込みプログラミング

    n ハードウェアの知識 n ネットワークの知識 n 電源への配慮 n ログ参照やアップデートへの考慮 n 時計への配慮 まとめ 16