Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
現場のデータを集める技術
Search
Yuta Shimakawa
November 07, 2023
Technology
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
現場のデータを集める技術
Yuta Shimakawa
November 07, 2023
Transcript
21 slides
©2023 MODE, Inc. 現場のデータを集める技術 8th Nov, 2023 Findy IoTアーキテクチャ -
スケーラビリティ×⾼可⽤性を追求する Lunch LT Yuta Shimakawa (@banana_umai)
©2023 MODE, Inc. 2 • ソフトウェアエンジニア(バックエンド中心) 10年+ • MODE (2019~)
• SNS ◦ Twitter: @banana_umai ◦ GitHub: @bananaumai ◦ LinkedIn: Yuta Shimakawa 島川 悠太 Yuta Shimakawa
©2023 MODE, Inc. MODE, Inc. 3 「現場の」データを収集‧蓄積‧活⽤するための技術を軸に、現実世界のビジネス業務を改善するための IoT * DXなソリューションを提供。
©2023 MODE, Inc. 4
©2023 MODE, Inc. 5 MODEを⽀える技術的要素: データの到達保証 • エンタープライズ向けの⽤途で利⽤してもらうために重要な技術。 • データ到達保証をいかに安定的に実現するかは⾯⽩い技術的課題の⼀つ。
©2023 MODE, Inc. 6 MQTT Broker REST API Gateways MODEのデータフロー
Message Queues Micro- Services Frontend app
©2023 MODE, Inc. 7 どのようにデータ到達保証するか?
©2023 MODE, Inc. 8 基本的な仕組み - ゲートウェイ内でのバッファと再送機構 センサーデータをディスクにバッファ データ送信失敗時に再送信可能
©2023 MODE, Inc. 9 簡単
©2023 MODE, Inc. 10 簡単
©2023 MODE, Inc. 11 過去に起きた問題 1 • ⼀部のゲートウェイの下流のスループッ トを超えてデータを送り続けた結果、 (データロストは起こらなかったもの
の)システム全体のスループットの低下 を招く。 • ⼀部のゲートウェイのトラフィックが全 体に影響を及ぼさないよう、SQSのFIFO Queueを⽤いてデータ発⽣元のゲート ウェイ毎にQueue Groupを分けていた が、SQSのFIFOの仕様の⾒落しと、適切 なデータ送信に対してのリミット設定を しなかったことが原因で問題が発⽣させ てしまった。
©2023 MODE, Inc. 12 過去に起きた問題 2 • ⼀部のゲートウェイのデータについて下 流のコンポーネントでの処理が時間がか かり、データ送信の量‧頻度は⾼くな
かったものの、緩やかにMessage Queue のバックログサイズが増加。 • 最終的に、システム全体のスループット の低下を招いてしまう。
©2023 MODE, Inc. 13 ゲートウェイ単体の機構だけではなく、 システム全体としての考慮が必要
©2023 MODE, Inc. 14 より堅牢で安定性のあるつくりに MQTT Broker Ack Ack Nack
©2023 MODE, Inc. 15 より堅牢で安定性のあるつくりに MQTT Broker Ack Ack Nack
• Queueのバックログをカウント • SQS nativeには存在しないのでRedisでカウンターを保持
©2023 MODE, Inc. 16 より堅牢で安定性のあるつくりに MQTT Broker Ack Ack Nack
• MODEのMQTT BrokerはMQTTを喋るアプリケーションサーバー • Message Queueがフルの場合は、ゲートウェイのPublishを失敗させる ⼀般的なMQTT Brokerを⽤いる場合、同様のことをするにはMQTT5で導⼊された Request/Responseパターンのような⽅法が必要になるはず(未検証)
©2023 MODE, Inc. 17 より堅牢で安定性のあるつくりに MQTT Broker Ack Ack Nack
• ゲートウェイにデータ送信の失敗が伝わることで、時間を置いてから再送する などの制御が可能になる。
©2023 MODE, Inc. まとめ 18 • データの到達保証はエンタープライズ向けのIoTシステムとして重要な技術要素 • IoTゲートウェイ単体でのデータのバッファリング機能や再送機能がそのために必要 な要素。
• ただし、システム全体として安定‧堅牢な運⽤を⾏うためには、システム全体とし てデータパイプラインの下流の滞りを上流まで届ける仕組みが必要(バックプレッ シャー)。 • データ到達保証は⼀⾒簡単そうに⾒えて、⾯倒なことが沢⼭ある。 • 更に: 今⽇は触れられなかった内容 ◦ クラウドへのデータ送信が詰まった場合ゲートウェイ内でバックプレッシャーをどのよう に扱うかも結構難しい。 ◦ ゲートウェイの内部アーキテクチャについては @takeshinodaの多様なプロトコルと 駆動モ デルをサポートするIoTゲートウェイの開発と運⽤の知⾒ をご覧ください。
©2023 MODE, Inc. さいごに • なお、データ到達保証にまつわる技術要素はMODEのIoT技術要素のほんの⼀部。 • IoTは技術的なスタックが広くて⾯⽩い。 • StackOverflowには答えが載っていない問題も多く存在。
19
©2023 MODE, Inc. MODEに興味を持ってもらえた⽅は... 20 https://lp.tinkermode.jp/modenight/20231117
©2023 MODE, Inc. ご清聴ありがとうございました 21
More Decks by Yuta Shimakawa
See All by Yuta Shimakawa
How much English do you really need? - English for Engineering Career Meetup #1
bananaumai
0
180
モノレポによるマイクロサービスアーキテクチャの開発運用
bananaumai
2
6.6k
Build real world data collecting architecture with Goroutine and Channel
bananaumai
1
740
Other Decks in Technology
See All in Technology
Kiro を使うコツ (頼み方、覚えさせ方、任せ方) | 目指せ Kiro マスター 09
inariku
PRO
3
160
2026-11-11 Tamachi.sre#7 PaCにインフラリソースの命を救われました。 / PaC saves the infra resource life
masasuzu
1
170
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
380
思考過程から秘密が漏れる:Amazon Bedrock上のKimi K3を5つの方法で攻めたら、25回中22回漏洩した話
yama3133
1
160
狙われているAPIの脆弱性!今こそ手をつけるべき根本的な対策とは?
nagix
0
130
AI時代に求められる優秀なTechLeadの振る舞い
pospome
11
16k
大江戸Ruby会議でデータベース クライアントの話をするのは 間違っているだろうか
yahonda
1
120
Linuxネットワークスタック進化の軌跡: 過去10年の歩みと最新トレンド
orimanabu
4
660
常時稼働エージェントの作り方(Claude公式ブログを資料化)
minorun365
PRO
5
2.8k
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
140
SSFの現在地 ― CAEP/RISCからAI Identityへ
oidfj
0
430
DevOps Agentにあらゆるセキュリティインシデントのトリアージを任せた件
jirtosterone
1
140
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
630
Exploring anti-patterns in Rails
aemeredith
4
570
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
610
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
What's in a price? How to price your products and services
michaelherold
247
13k
Designing for Performance
lara
612
70k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Design in an AI World
tapps
1
390