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.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
Sho Sasaki
December 22, 2024
Other Decks in Programming
See All in Programming
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.8k
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
740
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
300
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
290
メールのエイリアス機能を履き違えない
isshinfunada
0
240
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
150
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
610
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
340
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
290
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.6k
Featured
See All Featured
So, you think you're a good person
axbom
PRO
2
2.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
470
The Cult of Friendly URLs
andyhume
79
7k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Design in an AI World
tapps
1
280
AI: The stuff that nobody shows you
jnunemaker
PRO
9
920
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Limits of Empathy - UXLibs8
cassininazir
1
600
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
A Modern Web Designer's Workflow
chriscoyier
698
190k
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