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
2
2k
⽉間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
bugbashを導入して検証工程をカイゼンした取り組み/登壇資料(村上 尭聖)
hacobu
0
580
物流ビッグデータのあれこれ/登壇資料(高橋 一貴)
hacobu
0
46
0→1フェーズのプロダクトのパフォーマンス分析をしてみた話/登壇資料(二瓶 亮)
hacobu
0
47
Hacobu Recruit
hacobu
0
9.3k
Hacobuで開発生産性を捉えるために 取り組んできたこと 〜Findy Team+ 導入から SPACE 利用まで〜/登壇資料(井田 献一朗)
hacobu
1
230
一人チームで実現する、全方位データ可視化/登壇資料(⾼橋 ⼀貴)
hacobu
1
100
チーム実績をSPACEで表現してみるチャレンジ/登壇資料(井田 献一朗)
hacobu
2
1k
2つの製品を monorepo を応用して合体させた話/登壇資料(星野 友宏)
hacobu
0
240
エンジニアとして初めてコーディング規約を作った話/登壇資料(松本 寛地)
hacobu
0
200
Featured
See All Featured
Visualization
eitanlees
143
15k
From Idea to $5000 a Month in 5 Months
shpigford
381
46k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
228
52k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.5k
Fireside Chat
paigeccino
32
3k
Creatively Recalculating Your Daily Design Routine
revolveconf
217
12k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
What's new in Ruby 2.0
geeforr
341
31k
What the flash - Photography Introduction
edds
67
11k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
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