コードロード

エラー討伐

【IoT】IoTシステムのバックエンド(クラウド設計・運用のポイント)

IoTエンジニア養成教本の学習記録です。

機能とサービスの選択

センサネットワークのバックエンドでデータを扱うには下記が必要。

  • ディスパッチ(データの受け取り)
  • プロセッシング(データ加工などの処理)
  • ストアリング(データの保存)

ディスパッチ

バイスから送られてくるデータを受け取り、適切なプロセッシングに転送する。

  • 同時接続数
    • 事前の設計時に正確な値を求めるのは難しいため、負荷試験など検証を行って算出するか、大まかな想定接続数を定める。
  • 持続的接続
    • 接続を自足させる場合と、都度接続する場合で同時接続数は大きく異なる。
    • 持続させるなら、デバイス数=同時接続数になる
    • 都度接続なら、デバイスごとに接続するタイミングをランダムにしたりすることで、同時接続数を削減させたりする。

f:id:naka_no_mura:20220227114447p:plain

  • バイスの接続エラー処理
    • バックエンドでエラーを返すと、デバイスからデータを再送する処理を実装することになるが、一定間隔で繰り返し再送すると、その都度同時接続数が超過してしまい、改善されない。
    • 再送処理には、エクスポネンシャルバックオフというアルゴリズムを取り入れると良い。

      f:id:naka_no_mura:20220227114501p:plain

    • ただし、複数のデバイスが同時刻に接続するようになっていると、間隔は指数的に空くが、やはり同じタイミングで再送を繰り返すことになるため、間隔にランダム生(ジッター)を持たせると良い。

      f:id:naka_no_mura:20220227114513p:plain

プロセッシング

受け取ったデータを保存、分析に適した形式に処理して、ストアリングサービスに渡す。

データを受け取ってすぐに処理するストリーミング処理と、一定の間隔を置いてまとめて処理するバッチ処理がある。

  • ストリーミング処理
    • ストアリングサービスに渡る際の遅延が小さく、拡張性を確保しやすい。
  • バッチ処理
    • 移動平均や、集計など、複数のデータを必要とする処理向き

    f:id:naka_no_mura:20220227114524p:plain

ストアリング

プロセッシングサービスから受け取ったデータを保存する。