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.5k
⽉間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
ChatGPTを使ったブログ執筆と校正の実践テクニック/登壇資料(井田 献一朗)
hacobu
1
200
メンタル面でもつよつよエンジニアになる/登壇資料(井田 献一朗)
hacobu
0
200
EMの活動をひもといてみました/登壇資料(奥野 秀樹)
hacobu
0
210
マルチプロダクト戦略におけるデータ分析プロダクトのアーキテクチャ/登壇資料(三木 拓史)
hacobu
1
5.2k
bugbashを導入して検証工程をカイゼンした取り組み/登壇資料(村上 尭聖)
hacobu
0
700
物流ビッグデータのあれこれ/登壇資料(高橋 一貴)
hacobu
0
90
0→1フェーズのプロダクトのパフォーマンス分析をしてみた話/登壇資料(二瓶 亮)
hacobu
0
76
Hacobu Recruit
hacobu
0
21k
Hacobuで開発生産性を捉えるために 取り組んできたこと 〜Findy Team+ 導入から SPACE 利用まで〜/登壇資料(井田 献一朗)
hacobu
1
260
Other Decks in Technology
See All in Technology
【Developers Summit 2025】プロダクトエンジニアから学ぶ、 ユーザーにより高い価値を届ける技術
niwatakeru
2
1.4k
急成長する企業で作った、エンジニアが輝ける制度/ 20250214 Rinto Ikenoue
shift_evolve
3
1.3k
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
410
自動テストの世界に、この5年間で起きたこと
autifyhq
10
8.6k
運用しているアプリケーションのDBのリプレイスをやってみた
miura55
1
740
デスクトップだけじゃないUbuntu
mtyshibata
0
140
スタートアップ1人目QAエンジニアが QAチームを立ち上げ、“個”からチーム、 そして“組織”に成長するまで / How to set up QA team at reiwatravel
mii3king
2
1.5k
アジャイル開発とスクラム
araihara
0
170
地方拠点で エンジニアリングマネージャーってできるの? 〜地方という制約を楽しむオーナーシップとコミュニティ作り〜
1coin
1
230
Helm , Kustomize に代わる !? 次世代 k8s パッケージマネージャー Glasskube 入門 / glasskube-entry
parupappa2929
0
250
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
24
7.2k
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
550
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
GraphQLとの向き合い方2022年版
quramy
44
13k
Producing Creativity
orderedlist
PRO
344
39k
BBQ
matthewcrist
87
9.5k
Building Adaptive Systems
keathley
40
2.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Code Reviewing Like a Champion
maltzj
521
39k
Scaling GitHub
holman
459
140k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
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