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.4k
⽉間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
170
EMの活動をひもといてみました/登壇資料(奥野 秀樹)
hacobu
0
180
マルチプロダクト戦略におけるデータ分析プロダクトのアーキテクチャ/登壇資料(三木 拓史)
hacobu
1
5k
bugbashを導入して検証工程をカイゼンした取り組み/登壇資料(村上 尭聖)
hacobu
0
680
物流ビッグデータのあれこれ/登壇資料(高橋 一貴)
hacobu
0
80
0→1フェーズのプロダクトのパフォーマンス分析をしてみた話/登壇資料(二瓶 亮)
hacobu
0
69
Hacobu Recruit
hacobu
0
18k
Hacobuで開発生産性を捉えるために 取り組んできたこと 〜Findy Team+ 導入から SPACE 利用まで〜/登壇資料(井田 献一朗)
hacobu
1
250
一人チームで実現する、全方位データ可視化/登壇資料(⾼橋 ⼀貴)
hacobu
1
130
Other Decks in Technology
See All in Technology
FODにおけるホーム画面編成のレコメンド
watarukudo
PRO
2
280
embedパッケージを深掘りする / Deep Dive into embed Package in Go
task4233
1
220
GoogleのAIエージェント論 Authors: Julia Wiesinger, Patrick Marlow and Vladimir Vuskovic
customercloud
PRO
0
160
東京Ruby会議12 Ruby と Rust と私 / Tokyo RubyKaigi 12 Ruby, Rust and me
eagletmt
3
870
デジタルアイデンティティ人材育成推進ワーキンググループ 翻訳サブワーキンググループ 活動報告 / 20250114-OIDF-J-EduWG-TranslationSWG
oidfj
0
540
生成AI × 旅行 LLMを活用した旅行プラン生成・チャットボット
kominet_ava
0
160
デジタルアイデンティティ技術 認可・ID連携・認証 応用 / 20250114-OIDF-J-EduWG-TechSWG
oidfj
2
680
Cloudflareで実現する AIエージェント ワークフロー基盤
kmd09
0
290
Goで実践するBFP
hiroyaterui
1
120
[IBM TechXchange Dojo]Watson Discoveryとwatsonx.aiでRAGを実現!座学①
siyuanzh09
0
110
re:Invent 2024のふりかえり
beli68
0
110
dbtを中心にして組織のアジリティとガバナンスのトレードオンを考えてみた
gappy50
0
280
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
62
7.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Code Reviewing Like a Champion
maltzj
521
39k
Side Projects
sachag
452
42k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
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