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
PRO
May 20, 2024
Technology
2
3.3k
⽉間17億レコードを処理する動態管理システムのアーキテクチャ/登壇資料(三⽊ 拓史)
「アーキテクチャを突き詰める Online Conference」
2024年5月22日(水)12:00〜19:00
https://findy.connpass.com/event/314782/
Hacobu
PRO
May 20, 2024
Tweet
Share
More Decks by Hacobu
See All by Hacobu
プログラミング言語を書く前に日本語を書く── AI 時代に求められる「言葉で考える」力/登壇資料(井田 献一朗)
hacobu
PRO
0
160
QAエンジニアがプロダクト専任で チームの中に入ると。。。?/登壇資料(杉森 太樹)
hacobu
PRO
1
710
物流DXを支える“意味”の設計:セマンティックレイヤーとAIで挑むデータ基盤/登壇資料(飯塚 大地)
hacobu
PRO
0
96
技育祭2025【秋】 企業ピッチ/登壇資料(高橋 悟生)
hacobu
PRO
0
140
AIフレンドリーなコードベースを目指して/登壇資料(高橋 悟生)
hacobu
PRO
3
770
物流データの利活用 〜タイムスタンプを巡る3つの”ヤバい”〜/登壇資料(高橋 一貴)
hacobu
PRO
6
120
マネジメントの効力感で実現する 持続可能な開発組織/登壇資料(奥野 秀樹)
hacobu
PRO
0
1.4k
「拠点横断アナリティクス」リリースまでの3ヶ月/登壇資料(飯塚 大地)
hacobu
PRO
0
210
Hacobu COMPANY DECK
hacobu
PRO
0
19k
Other Decks in Technology
See All in Technology
Black Hat USA 2025 Recap ~ クラウドセキュリティ編 ~
kyohmizu
0
540
なぜThrottleではなくDebounceだったのか? 700並列リクエストと戦うサーバーサイド実装のすべて
yoshiori
13
4.6k
Introducing RFC9111 / YAPC::Fukuoka 2025
k1low
1
250
個人から巡るAI疲れと組織としてできること - AI疲れをふっとばせ。エンジニアのAI疲れ治療法 ショートセッション -
kikuchikakeru
1
280
[CV勉強会@関東 ICCV2025 読み会] World4Drive: End-to-End Autonomous Driving via Intention-aware Physical Latent World Model (Zheng+, ICCV 2025)
abemii
0
230
マイクロリブート ~ACEマインドセットで実現するアジャイル~
sony
1
390
アジャイル社内普及ご近所さんマップを作ろう / Let's create an agile neighborhood map
psj59129
1
130
What's the recommended Flutter architecture
aakira
3
1.8k
自己的售票系統自己做!
eddie
0
460
レビュー負債を解消する ― CodeRabbitが支えるAI駆動開発
moongift
PRO
0
390
JAWS-UG SRE支部 #14 LT
okaru
0
110
身近なCSVを活用する!AWSのデータ分析基盤アーキテクチャ
koosun
0
1.3k
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
670
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Balancing Empowerment & Direction
lara
5
750
Agile that works and the tools we love
rasmusluckow
331
21k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Designing for Performance
lara
610
69k
Site-Speed That Sticks
csswizardry
13
960
Six Lessons from altMBA
skipperchong
29
4.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Transcript
Confidential 月間17億レコードを処理する 動態管理システムのアーキテクチャ アーキテクチャを突き詰める Online Conference 2024年05月22日 テクノロジー本部CTO室 三木拓史
Copyright Hacobu, Inc. 2 自己紹介 • テクノロジー本部 CTO室 室長 三木
拓史 • Hacobuでの活動 • 動態管理サービス MOVO Fleet のフルリプレースをリード • データ基盤立ち上げ • 配送案件管理サービスMOVO Vista プロダクトエンジニア • CTO室として共通プラットフォーム、データ基盤、PoC開発
会社紹介
Copyright Hacobu, Inc. 4 Hacobu概要 ミッション:運ぶを最適化する 2015年6月 約130名 約46億円 創業
従業員数 累計資金調達額
Copyright Hacobu, Inc. 5 Hacobuの事業
Copyright Hacobu, Inc. 6 物流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. 7 物流DXツール MOVO(ムーボ) 自社および外部のアプリケーションの利用を通じて、企業や業界の枠を超えて物流情報を同じ規格でデジタルにやりとりで きるプラットフォームとなり、蓄積されたビッグデータで「運ぶを最適化する」ことを目指しています 工場/出荷元 物流拠点
納品先 自社アプリケーション 外部アプリケーション ERP S/4 Hana WMS、WCS 配車システム 物流情報プラットフォーム 共通認証 共通機能群 共通マスタ 共通トランザクション TMS、SCPなど、 その他各社の システム 日野コネクト 東京海上 法人ドライブエージェント API API API API API 配送案件管理 トラック予約受付 動態管理 スマホアプリ
Copyright Hacobu, Inc. 8 ビッグバンフルリプレイス 認証基盤 認証 サービス 新システムへ無停止移行 通知
サービス 共通データ サービス クラウド機能 サービス 共通基盤をマイクロサービス化 デザインからAWS構成まで含めて再設計
Copyright Hacobu, Inc. 9 ビッグバンフルリプレイス 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. 11 動態管理サービス 「MOVO Fleet」 通信型GPSトラッカーで車両の位置情報や予実を管理
Copyright Hacobu, Inc. 12 導入事例︓三菱食品様 全国3,500台にMOVO Fleetを導入し、最適な配送網の構築に取り組まれている https://hacobu.jp/news/5903/
Copyright Hacobu, Inc. 13 プレスリリース︓三菱ふそうの「Truckonnect®」と動態管理サービス「MOVO Fleet」、車両データの連携を開始 https://hacobu.jp/news/10145/
Copyright Hacobu, Inc. 14 位置情報に関わるアーキテクチャの図 外部連携先 ... ... ... ...
...
概要と位置情報の保存
Copyright Hacobu, Inc. 16 lambdaでやっていることの概要 • 大きく4つの処理を行なってる • 位置情報の保存(dynamoDBへのinsert) •
ジオフェンスの判定と継続時間の計算 • 他2つ • それぞれの処理に対してlambda が1種類 • 1つのシャードに対して拡張ファンアウトにより4種類 のlambdaがそれぞれデータ処理 • 現状12本のシャードで運用 ... ... ... ... 4種類のlambda Kinesisシャードを 12本用意 ...
Copyright Hacobu, Inc. 17 位置情報の保存 • デバイスが5sに一度、位置情報をuploadする • 三菱食品様を例にすると •
3500台が5sにリクエストを飛ばしてくる • 1日8時間稼働で2000万リクエスト • 外部システムとのデータ連携も • Kinesisでバッファ • Lambda側で障害があってもkinesisに貯めておけるのでデータロス トだけは避けることができる • 何度か助けられた • DynamoDBに保存
Copyright Hacobu, Inc. 18 軌跡の活用 • 位置情報はDynamoDBに保存している • ある車両を指定し、時間幅を指定した位置情報のまとまり(=軌跡)を取得してブラウザに表 示したりする
• 1車両90日間50万レコードがいつでも参照される可能性がある • 車両IDがパーティションキー • 時刻がソートキー
ジオフェンス処理
Copyright Hacobu, Inc. 20 Wikipedia での解説 ジオフェンシング(英︓ Geofencing)とは実世界の地理に対応した仮想的な境界線で囲 まれたエリアへの出入りや一定時間以上の滞在をトリガーにアクションを行う技術である。 主に
セキュリティや広告、通知を用いたサービスに用いられている。 https://ja.wikipedia.org/wiki/ジオフェンシング
Copyright Hacobu, Inc. 21 ジオフェンス • ある地点を中心にして、半径R[m]の範囲に、基準時間以上滞在している場合にそれを記 録する • 地点
x 進入時間 x 退出時間が実績になる • 車両ごとに時系列順で処理を行う必要がある 進入時間 退出時間 滞在時間
Copyright Hacobu, Inc. 22 ジオフェンス処理のフロー 進入時間 退出時間 滞在時間 地点外 地点内
基準時間 未満 実績生成 退出 1.進入 5.退出 3.基準時間経過後 進入判定を記録 4.退出時間 を記録 2.進入時間を記録 基準未満で退出
Copyright Hacobu, Inc. 23 ジオフェンス処理のシステム構成 • 「車両ごとに」 • -> 車両IDをキーにしてkinesisシャードへ分配
• -> シャードごとにジオフェンス処理を行うlambda は1つ • 同一の車両に関するレコードは常に同一のlambdaが処理する ... ... ... ... ... ある車両Aに関 するデータは常 にここを通る
Copyright Hacobu, Inc. 24 ジオフェンス処理 - job編 - • 3の処理は進入時間からの経過時間で記録したい
• トラックのエンジンが切られるなどして、位置情報のuploadが止まることがある • 位置情報のuploadが止まっても、一定以上の滞在時間が経過したら実績を作りたい 地点外 地点内 基準時間 未満 実績生成 退出 1.進入 5.退出 3.基準時間経過後 進入判定を記録 4.退出時間 を記録 2.進入時間を記録 基準未満で退出 ここの処理を、位置情報uploadという イベントがなくても実行したい
Copyright Hacobu, Inc. 25 ジオフェンス処理 - job編 - ... ...
... ... ... データが流れない マイクロバッチで データ監視&補正
性能改善
Copyright Hacobu, Inc. 27 lambdaの性能改善 • Lambdaの処理に時間がかかるようになり、kinesisにデータがたまるようになってきてしまった • 画面への反映が遅れたり、遅延判定ができなかったり •
とはいえ地点情報がロストしないのはkinesisを使って良かったところ • 役割の分離 && シャード分割 • 地点情報の保存、ジオフェンス処理、その他2つを分離した • Kinesisからファンアウトしてそれぞれlambdaを実行 • シャードを分割し並列に実行することで性能改善を図った ... ... ... ... ...
Copyright Hacobu, Inc. 28 lambdaの性能改善 結局のところ、当時はDBでインデックスを追加するのが一番効いた
Copyright Hacobu, Inc. 29 まとめ • トラック毎にデータが流れる経路を固定することで正しくデータ処理 • lambdaの役割分割とkinesisシャード分割で並列処理 •
オンライン処理では実現できない要件にマイクロバッチで対応 外部連携先 ... ... ... ... ...
Copyright Hacobu, Inc. 30 採用情報 SRE / Backend / Frontend
/ EM / QA を積極採用中です! https://career.hacobu.jp/
None