Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
⽉間17億レコードを処理する動態管理システムのアーキテクチャ/登壇資料(三⽊ 拓史)
Search
Hacobu
May 20, 2024
Technology
2
2.3k
⽉間17億レコードを処理する動態管理システムのアーキテクチャ/登壇資料(三⽊ 拓史)
「アーキテクチャを突き詰める Online Conference」
2024年5月22日(水)12:00〜19:00
https://findy.connpass.com/event/314782/
Hacobu
May 20, 2024
Tweet
Share
More Decks by Hacobu
See All by Hacobu
メンタル面でもつよつよエンジニアになる/登壇資料(井田 献一朗)
hacobu
0
150
EMの活動をひもといてみました/登壇資料(奥野 秀樹)
hacobu
0
150
マルチプロダクト戦略におけるデータ分析プロダクトのアーキテクチャ/登壇資料(三木 拓史)
hacobu
1
4.8k
bugbashを導入して検証工程をカイゼンした取り組み/登壇資料(村上 尭聖)
hacobu
0
670
物流ビッグデータのあれこれ/登壇資料(高橋 一貴)
hacobu
0
76
0→1フェーズのプロダクトのパフォーマンス分析をしてみた話/登壇資料(二瓶 亮)
hacobu
0
69
Hacobu Recruit
hacobu
0
16k
Hacobuで開発生産性を捉えるために 取り組んできたこと 〜Findy Team+ 導入から SPACE 利用まで〜/登壇資料(井田 献一朗)
hacobu
1
250
一人チームで実現する、全方位データ可視化/登壇資料(⾼橋 ⼀貴)
hacobu
1
120
Other Decks in Technology
See All in Technology
生成AIをより賢く エンジニアのための RAG入門 - Oracle AI Jam Session #20
kutsushitaneko
4
320
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
640
効率的な技術組織が作れる!書籍『チームトポロジー』要点まとめ
iwamot
2
170
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
140
サーバーなしでWordPress運用、できますよ。
sogaoh
PRO
0
150
AWS re:Invent 2024 Recap in ZOZO - Serverless で好きなものをしゃべってみた
chongmyungpark
0
590
C++26 エラー性動作
faithandbrave
2
850
能動的ドメイン名ライフサイクル管理のすゝめ / Practice on Active Domain Name Lifecycle Management
nttcom
0
300
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
5
320
Web APIをなぜつくるのか
mikanichinose
0
940
Qiita埋め込み用スライド
naoki_0531
0
5.4k
多様なメトリックとシステムの健全性維持
masaaki_k
0
130
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Statistics for Hackers
jakevdp
796
220k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Done Done
chrislema
182
16k
Writing Fast Ruby
sferik
628
61k
Building an army of robots
kneath
302
44k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Transcript
Confidential ⽉間17億レコードを処理する 動態管理システムのアーキテクチャ アーキテクチャを突き詰める Online Conference 2024年05⽉22⽇ テクノロジー本部CTO室 三⽊拓史
会社紹介
Copyright Hacobu, Inc. 3 Hacobu概要 ミッション︓運ぶを最適化する 2015年6⽉ 約130名 約46億円 創業
従業員数 累計資⾦調達額
Copyright Hacobu, Inc. 4 持続可能な物流インフラを創る Hacobuのビジョンと事業
Copyright Hacobu, Inc. 5 物流DXツール MOVO(ムーボ) トラック予約受付サービス MOVO Berth (ムーボ・バース)
動態管理サービス MOVO Fleet (ムーボ・フリート) 配送案件管理サービス MOVO Vista (ムーボ・ヴィスタ) ⾞両管理の効率化で、 荷主と運送会社双⽅のコスト削減を実現︕ • ⾛⾏データを蓄積し活⽤ • ⾃社・傭⾞を⼀括で管理 • 遅延⾒込みを⾃動で通知 • 配送効率の向上 • ⾛⾏データを蓄積し活⽤ • ⾃社・傭⾞を⼀括で管理 • 遅延⾒込みを⾃動で通知 • 配送効率の向上 物流センター運営にかかるコストを削減し、 ⽣産性の向上を⽀援︕ • ⾞両待機問題の解消 • 計画的な庫内作業の実現 • ⾞両やバースの状況を即座に共有 • 接⾞誘導や伝票突合せの⼯数削減 シェア No.1※ ※トラック予約受付サービス「MOVO Berth」のシェア。 出典︓デロイト トーマツ ミック経済研究所, 『スマートロジスティクス・ソリューション市場の実態と展望【2023年度版】』https://mic-r.co.jp/mr/02960/ 配送業務をデジタル化し、⽣産性向上を⽀援︕ • FAX、電話、メールのコミュニケーションをデジタル化 • オンライン上での受発注・請求管理 • リアルタイムな納品確認 MOVOは物流現場の課題を解決するとともに、本社が物流をデータで可視化するための物流DXツールです
Copyright Hacobu, Inc. 6 ビッグバンフルリプレイス 認証基盤 認証 サービス 新システムへ無停⽌移⾏ 通知
サービス 共通データ サービス クラウド機能 サービス 共通基盤をマイクロサービス化 デザインからAWS構成まで含めて再設計
Copyright Hacobu, Inc. 7 ビッグバンフルリプレイス https://speakerdeck.com/yukitoida/fu-zhai-jie-xiao- shou-duan-tositenobitugubanhururipureisu-woshi- xian-surutameno3tunotiao-jian-toha https://logmi.jp/tech/articles/328433
⽉間17億レコードを処理する動態管理システムのアーキテクチャ
Copyright Hacobu, Inc. 9 動態管理サービス 「MOVO Fleet」 通信型GPSトラッカーで⾞両の位置情報や予実を管理
Copyright Hacobu, Inc. 10 導⼊事例︓三菱⾷品様 全国3,500台にMOVO Fleetを導⼊し、最適な配送網の構築に取り組まれている https://hacobu.jp/news/5903/
Copyright Hacobu, Inc. 11 プレスリリース︓三菱ふそうの「Truckonnect®」と動態管理サービス「MOVO Fleet」、⾞両データの連携を開始 https://hacobu.jp/news/10145/
Copyright Hacobu, Inc. 12 位置情報に関わるアーキテクチャの図 外部連携先 ... ... ... ...
...
概要と位置情報の保存
Copyright Hacobu, Inc. 14 lambdaでやっていることの概要 • ⼤きく4つの処理を⾏なってる • 位置情報の保存(dynamoDBへのinsert) •
ジオフェンスの判定と継続時間の計算 • 他2つ • それぞれの処理に対してlambda が1種類 • 1つのシャードに対して拡張ファンアウトにより4種類 のlambdaがそれぞれデータ処理 • 現状12本のシャードで運⽤ ... ... ... ... 4種類のlambda Kinesisシャードを 12本⽤意 ...
Copyright Hacobu, Inc. 15 位置情報の保存 • デバイスが5sに⼀度、位置情報をuploadする • 三菱⾷品様を例にすると •
3500台が5sにリクエストを⾶ばしてくる • 1⽇8時間稼働で2000万リクエスト • 外部システムとのデータ連携も • Kinesisでバッファ • Lambda側で障害があってもkinesisに貯めておけるのでデータロス トだけは避けることができる • 何度か助けられた • DynamoDBに保存
Copyright Hacobu, Inc. 16 軌跡の活⽤ • 位置情報はDynamoDBに保存している • ある⾞両を指定し、時間幅を指定した位置情報のまとまり(=軌跡)を取得してブラウザに表 ⽰したりする
• 1⾞両90⽇間50万レコードがいつでも参照される可能性がある • ⾞両IDがパーティションキー • 時刻がソートキー
ジオフェンス処理
Copyright Hacobu, Inc. 18 Wikipedia での解説 ジオフェンシング(英︓ Geofencing)とは実世界の地理に対応した仮想的な境界線で囲 まれたエリアへの出⼊りや⼀定時間以上の滞在をトリガーにアクションを⾏う技術である。 主に
セキュリティや広告、通知を⽤いたサービスに⽤いられている。 https://ja.wikipedia.org/wiki/ジオフェンシング
Copyright Hacobu, Inc. 19 ジオフェンス • ある地点を中⼼にして、半径R[m]の範囲に、基準時間以上滞在している場合にそれを記 録する • 地点
x 進⼊時間 x 退出時間が実績になる • ⾞両ごとに時系列順で処理を⾏う必要がある 進⼊時間 退出時間 滞在時間
Copyright Hacobu, Inc. 20 ジオフェンス処理のシステム構成 • 「⾞両ごとに」 • -> ⾞両IDをキーにしてkinesisシャードへ分配
• -> シャードごとにジオフェンス処理を⾏うlambda は1つ • 同⼀の⾞両に関するレコードは常に同⼀のlambdaが処理する ... ... ... ... ... ある⾞両Aに関 するデータは常 にここを通る
Copyright Hacobu, Inc. 21 ジオフェンス処理のフロー 進⼊時間 退出時間 滞在時間 地点外 地点内
基準時間 未満 実績⽣成 退出 1.進⼊ 5.退出 3.基準時間経過後 進⼊判定を記録 4.退出時間 を記録 2.進⼊時間を記録 基準未満で退出
Copyright Hacobu, Inc. 22 ジオフェンス処理 - job編 - • 3の処理は進⼊時間からの経過時間で記録したい
• トラックのエンジンが切られるなどして、位置情報のuploadが⽌まることがある • 位置情報のuploadが⽌まっても、⼀定以上の滞在時間が経過したら実績を作りたい 地点外 地点内 基準時間 未満 実績⽣成 退出 1.進⼊ 5.退出 3.基準時間経過後 進⼊判定を記録 4.退出時間 を記録 2.進⼊時間を記録 基準未満で退出 ここの処理を、位置情報uploadという イベントがなくても実⾏したい
Copyright Hacobu, Inc. 23 ジオフェンス処理 - job編 - ... ...
... ... ... データが流れない マイクロバッチで データ監視&補正
性能改善
Copyright Hacobu, Inc. 25 lambdaの性能改善 • Lambdaの処理に時間がかかるようになり、kinesisにデータがたまるようになってきてしまった • 画⾯への反映が遅れたり、遅延判定ができなかったり •
とはいえ地点情報がロストしないのはkinesisを使って良かったところ • 役割の分離 && シャード分割 • 地点情報の保存、ジオフェンス処理、その他2つを分離した • Kinesisからファンアウトしてそれぞれlambdaを実⾏ • シャードを分割し並列に実⾏することで性能改善を図った ... ... ... ... ...
Copyright Hacobu, Inc. 26 lambdaの性能改善 結局のところ、当時はDBでインデックスを追加するのが⼀番効いた
Copyright Hacobu, Inc. 27 まとめ • トラック毎にデータが流れる経路を固定することで正しくデータ処理 • lambdaの役割分割とkinesisシャード分割で並列処理 •
オンライン処理では実現できない要件にマイクロバッチで対応 外部連携先 ... ... ... ... ...
Copyright Hacobu, Inc. 28 採⽤情報 SRE / Backend / Frontend
/ EM / QA を積極採⽤中です︕ https://career.hacobu.jp/
None