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

現場のデータを集める技術

 現場のデータを集める技術

Yuta Shimakawa

November 07, 2023
Tweet

More Decks by Yuta Shimakawa

Other Decks in Technology

Transcript

  1. ©2023 MODE, Inc.
 現場のデータを集める技術 8th Nov, 2023 Findy IoTアーキテクチャ -

    スケーラビリティ×⾼可⽤性を追求する Lunch LT Yuta Shimakawa (@banana_umai)
  2. ©2023 MODE, Inc.
 2
 • ソフトウェアエンジニア(バックエンド中心) 10年+ • MODE (2019~)

    • SNS ◦ Twitter: @banana_umai ◦ GitHub: @bananaumai ◦ LinkedIn: Yuta Shimakawa 島川 悠太 Yuta Shimakawa
  3. ©2023 MODE, Inc.
 11
 過去に起きた問題 1 • ⼀部のゲートウェイの下流のスループッ トを超えてデータを送り続けた結果、 (データロストは起こらなかったもの

    の)システム全体のスループットの低下 を招く。 • ⼀部のゲートウェイのトラフィックが全 体に影響を及ぼさないよう、SQSのFIFO Queueを⽤いてデータ発⽣元のゲート ウェイ毎にQueue Groupを分けていた が、SQSのFIFOの仕様の⾒落しと、適切 なデータ送信に対してのリミット設定を しなかったことが原因で問題が発⽣させ てしまった。
  4. ©2023 MODE, Inc.
 12
 過去に起きた問題 2 • ⼀部のゲートウェイのデータについて下 流のコンポーネントでの処理が時間がか かり、データ送信の量‧頻度は⾼くな

    かったものの、緩やかにMessage Queue のバックログサイズが増加。 • 最終的に、システム全体のスループット の低下を招いてしまう。
  5. ©2023 MODE, Inc.
 15
 より堅牢で安定性のあるつくりに MQTT Broker Ack Ack Nack

    • Queueのバックログをカウント • SQS nativeには存在しないのでRedisでカウンターを保持
  6. ©2023 MODE, Inc.
 16
 より堅牢で安定性のあるつくりに MQTT Broker Ack Ack Nack

    • MODEのMQTT BrokerはMQTTを喋るアプリケーションサーバー • Message Queueがフルの場合は、ゲートウェイのPublishを失敗させる ⼀般的なMQTT Brokerを⽤いる場合、同様のことをするにはMQTT5で導⼊された Request/Responseパターンのような⽅法が必要になるはず(未検証)
  7. ©2023 MODE, Inc.
 17
 より堅牢で安定性のあるつくりに MQTT Broker Ack Ack Nack

    • ゲートウェイにデータ送信の失敗が伝わることで、時間を置いてから再送する などの制御が可能になる。
  8. ©2023 MODE, Inc.
 まとめ 18
 • データの到達保証はエンタープライズ向けのIoTシステムとして重要な技術要素 • IoTゲートウェイ単体でのデータのバッファリング機能や再送機能がそのために必要 な要素。

    • ただし、システム全体として安定‧堅牢な運⽤を⾏うためには、システム全体とし てデータパイプラインの下流の滞りを上流まで届ける仕組みが必要(バックプレッ シャー)。 • データ到達保証は⼀⾒簡単そうに⾒えて、⾯倒なことが沢⼭ある。 • 更に: 今⽇は触れられなかった内容 ◦ クラウドへのデータ送信が詰まった場合ゲートウェイ内でバックプレッシャーをどのよう に扱うかも結構難しい。 ◦ ゲートウェイの内部アーキテクチャについては @takeshinodaの多様なプロトコルと 駆動モ デルをサポートするIoTゲートウェイの開発と運⽤の知⾒ をご覧ください。