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.2k
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
Sho Sasaki
December 22, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
Improving my own Ruby thereafter
sisshiki1969
1
140
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
220
速いWebフレームワークを作る
yusukebe
3
650
AHC051解法紹介
eijirou
0
640
サーバーサイドのビルド時間87倍高速化
plaidtech
PRO
0
680
AIコーディングAgentとの向き合い方
eycjur
0
250
Updates on MLS on Ruby (and maybe more)
sylph01
1
170
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
290
Kiroで始めるAI-DLC
kaonash
2
480
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
390
A Gopher's Guide to Vibe Coding
danicat
0
190
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
0
220
Featured
See All Featured
Being A Developer After 40
akosma
90
590k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Designing for Performance
lara
610
69k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Site-Speed That Sticks
csswizardry
10
800
We Have a Design System, Now What?
morganepeng
53
7.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Speed Design
sergeychernyshev
32
1.1k
Side Projects
sachag
455
43k
Building Adaptive Systems
keathley
43
2.7k
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