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
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
Search
Sho Sasaki
December 22, 2024
Programming
1
1.1k
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
Sho Sasaki
December 22, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
11
2.6k
セキュリティマネジャー廃止とクラウドネイティブ型サンドボックス活用
kazumura
1
190
GoのWebAssembly活用パターン紹介
syumai
3
10k
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
300
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
240
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
670
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
120
KotlinConf 2025 現地参加の土産話
n_takehata
0
100
Using AI Tools Around Software Development
inouehi
0
1.2k
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
0
3k
WindowInsetsだってテストしたい
ryunen344
1
190
生成AIで日々のエラー調査を進めたい
yuyaabo
0
610
Featured
See All Featured
A better future with KSS
kneath
239
17k
The Invisible Side of Design
smashingmag
299
51k
Agile that works and the tools we love
rasmusluckow
329
21k
What's in a price? How to price your products and services
michaelherold
245
12k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
A designer walks into a library…
pauljervisheath
206
24k
Bash Introduction
62gerente
614
210k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Producing Creativity
orderedlist
PRO
346
40k
Docker and Python
trallard
44
3.4k
Transcript
毎日13時間もかかるバッチ処理を たった3日で60%短縮するために やったこと Sasaki Sho 2024/12/22 PHP Conference Japan 2024
Sasaki Sho X:@sho_ssk_ 所属:株式会社ウィルゲート 趣味:サッカー観戦
このLTで伝えたいこと
仕様変更も パフォーマンス改善に貢献できる!
対象のサービスについて
https://tact-seo.com/
• 検索キーワードに対して適切にページを 表示できるようにするためのツール
• 検索キーワードに対して適切にページを 表示できるようにするためのツール • リリースから7年経過、技術負債や蓄積 データ量および処理の長期化が課題
13時間かかるバッチについて
対象:サイトの順位データを集計するバッチ
対象:サイトの順位データを集計するバッチ • 仕様上、毎日“絶対に”完了しないといけない
対象:サイトの順位データを集計するバッチ • 仕様上、毎日“絶対に”完了しないといけない • 順位データおよびクライアント数の増加に より処理時間が長期化
対象:サイトの順位データを集計するバッチ • 仕様上、毎日“絶対に”完了しないといけない • 順位データおよびクライアント数の増加に より処理時間が長期化 • 毎日 1億件!以上のレコードをRDSへ追加
このバッチの問題点 2選
このバッチの問題点 2選 • 集計が完了しないと表示されない画面がある
このバッチの問題点 2選 • 集計が完了しないと表示されない画面がある • 集計中にRDSの負荷が高騰し、画面レスポン スに遅れが発生
このバッチの問題点 2選 • 集計が完了しないと表示されない画面がある • 集計中にRDSの負荷が高騰し、画面レスポン スに遅れが発生 顧客のUXに大きな悪影響
なんとかしよう!
①ロジック改修してみよう
①ロジック改修してみよう • 対象コードが超レガシー
①ロジック改修してみよう • 対象コードが超レガシー • 既に数十億単位のデータが存在するテーブルの 構成変更
①ロジック改修してみよう • 対象コードが超レガシー • 既に数十億単位のデータが存在するテーブルの 構成変更 無理そう
②ビジネスサイドへ利用状況を確認
②ビジネスサイドへ利用状況を確認 • そもそも全期間のデータ見てない
②ビジネスサイドへ利用状況を確認 • そもそも全期間のデータ見てない • 過去1年分くらい見れれば十分
②ビジネスサイドへ利用状況を確認 • そもそも全期間のデータ見てない • 過去1年分くらい見れれば十分 全期間の集計いらなくない?
集計期間を絞ろう!
やったこと
①表示期間を設定する画面を追加
①表示期間を設定する画面を追加
②SQLクエリへ1行追加
②SQLクエリへ1行追加 全期間を集計
②SQLクエリへ1行追加 全期間を集計 指定期間のみ集計
その結果
バッチの実行時間
13h → バッチの実行時間
13h → 5h バッチの実行時間
13h → 5h バッチの実行時間 60%の削減に成功! 🎉
圧倒的に少ない工数で対応
圧倒的に少ない工数で対応 40人日 →
40人日 → 3人日 圧倒的に少ない工数で対応
学んだこと
• 仕様変更もパフォーマンス改善に貢献でき る!
• 仕様変更もパフォーマンス改善に貢献でき る! • “今”必要なデータの質と量を確認しよう
“柔軟に”パフォーマンス 改善していきましょう!
fin