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.5k
⽉間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
エンジニアの発信を「個人の努力」で終わらせないために/登壇資料(井田 献一朗)
hacobu
PRO
0
29
社内外から"使ってもらえる"データ基盤を支えるアーキテクチャの秘訣/登壇資料(飯塚 大地・高橋 一貴)
hacobu
PRO
0
13k
プログラミング言語を書く前に日本語を書く── AI 時代に求められる「言葉で考える」力/登壇資料(井田 献一朗)
hacobu
PRO
0
200
QAエンジニアがプロダクト専任で チームの中に入ると。。。?/登壇資料(杉森 太樹)
hacobu
PRO
1
1.1k
物流DXを支える“意味”の設計:セマンティックレイヤーとAIで挑むデータ基盤/登壇資料(飯塚 大地)
hacobu
PRO
0
410
技育祭2025【秋】 企業ピッチ/登壇資料(高橋 悟生)
hacobu
PRO
0
170
AIフレンドリーなコードベースを目指して/登壇資料(高橋 悟生)
hacobu
PRO
3
830
物流データの利活用 〜タイムスタンプを巡る3つの”ヤバい”〜/登壇資料(高橋 一貴)
hacobu
PRO
6
140
マネジメントの効力感で実現する 持続可能な開発組織/登壇資料(奥野 秀樹)
hacobu
PRO
0
1.7k
Other Decks in Technology
See All in Technology
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
Next.js 16の新機能 Cache Components について
sutetotanuki
0
210
「アウトプット脳からユーザー価値脳へ」がそんなに簡単にできたら苦労しない #RSGT2026
aki_iinuma
6
3.4k
Master Dataグループ紹介資料
sansan33
PRO
1
4.2k
「リリースファースト」の実感を届けるには 〜停滞するチームに変化を起こすアプローチ〜 #RSGT2026
kintotechdev
0
500
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
320
BidiAgent と Nova 2 Sonic から考える音声 AI について
yama3133
2
140
迷わない!AI×MCP連携のリファレンスアーキテクチャ完全ガイド
cdataj
0
170
モノタロウ x クリエーションラインで実現する チームトポロジーにおける プラットフォームチーム・ ストリームアラインドチームの 効果的なコラボレーション
creationline
0
340
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
9
19k
Digitization部 紹介資料
sansan33
PRO
1
6.4k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
Mind Mapping
helmedeiros
PRO
0
45
[SF Ruby Conf 2025] Rails X
palkan
0
680
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Test your architecture with Archunit
thirion
1
2.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
870
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
35
How STYLIGHT went responsive
nonsquared
100
6k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
530
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