毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
by
Sho Sasaki
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
毎日13時間もかかるバッチ処理を たった3日で60%短縮するために やったこと Sasaki Sho 2024/12/22 PHP Conference Japan 2024
Slide 2
Slide 2 text
Sasaki Sho X:@sho_ssk_ 所属:株式会社ウィルゲート 趣味:サッカー観戦
Slide 3
Slide 3 text
このLTで伝えたいこと
Slide 4
Slide 4 text
仕様変更も パフォーマンス改善に貢献できる!
Slide 5
Slide 5 text
対象のサービスについて
Slide 6
Slide 6 text
https://tact-seo.com/
Slide 7
Slide 7 text
● 検索キーワードに対して適切にページを 表示できるようにするためのツール
Slide 8
Slide 8 text
● 検索キーワードに対して適切にページを 表示できるようにするためのツール ● リリースから7年経過、技術負債や蓄積 データ量および処理の長期化が課題
Slide 9
Slide 9 text
13時間かかるバッチについて
Slide 10
Slide 10 text
対象:サイトの順位データを集計するバッチ
Slide 11
Slide 11 text
対象:サイトの順位データを集計するバッチ ● 仕様上、毎日“絶対に”完了しないといけない
Slide 12
Slide 12 text
対象:サイトの順位データを集計するバッチ ● 仕様上、毎日“絶対に”完了しないといけない ● 順位データおよびクライアント数の増加に より処理時間が長期化
Slide 13
Slide 13 text
対象:サイトの順位データを集計するバッチ ● 仕様上、毎日“絶対に”完了しないといけない ● 順位データおよびクライアント数の増加に より処理時間が長期化 ● 毎日 1億件!以上のレコードをRDSへ追加
Slide 14
Slide 14 text
このバッチの問題点 2選
Slide 15
Slide 15 text
このバッチの問題点 2選 ● 集計が完了しないと表示されない画面がある
Slide 16
Slide 16 text
このバッチの問題点 2選 ● 集計が完了しないと表示されない画面がある ● 集計中にRDSの負荷が高騰し、画面レスポン スに遅れが発生
Slide 17
Slide 17 text
このバッチの問題点 2選 ● 集計が完了しないと表示されない画面がある ● 集計中にRDSの負荷が高騰し、画面レスポン スに遅れが発生 顧客のUXに大きな悪影響
Slide 18
Slide 18 text
なんとかしよう!
Slide 19
Slide 19 text
①ロジック改修してみよう
Slide 20
Slide 20 text
①ロジック改修してみよう ● 対象コードが超レガシー
Slide 21
Slide 21 text
①ロジック改修してみよう ● 対象コードが超レガシー ● 既に数十億単位のデータが存在するテーブルの 構成変更
Slide 22
Slide 22 text
①ロジック改修してみよう ● 対象コードが超レガシー ● 既に数十億単位のデータが存在するテーブルの 構成変更 無理そう
Slide 23
Slide 23 text
②ビジネスサイドへ利用状況を確認
Slide 24
Slide 24 text
②ビジネスサイドへ利用状況を確認 ● そもそも全期間のデータ見てない
Slide 25
Slide 25 text
②ビジネスサイドへ利用状況を確認 ● そもそも全期間のデータ見てない ● 過去1年分くらい見れれば十分
Slide 26
Slide 26 text
②ビジネスサイドへ利用状況を確認 ● そもそも全期間のデータ見てない ● 過去1年分くらい見れれば十分 全期間の集計いらなくない?
Slide 27
Slide 27 text
集計期間を絞ろう!
Slide 28
Slide 28 text
やったこと
Slide 29
Slide 29 text
①表示期間を設定する画面を追加
Slide 30
Slide 30 text
①表示期間を設定する画面を追加
Slide 31
Slide 31 text
②SQLクエリへ1行追加
Slide 32
Slide 32 text
②SQLクエリへ1行追加 全期間を集計
Slide 33
Slide 33 text
②SQLクエリへ1行追加 全期間を集計 指定期間のみ集計
Slide 34
Slide 34 text
その結果
Slide 35
Slide 35 text
バッチの実行時間
Slide 36
Slide 36 text
13h → バッチの実行時間
Slide 37
Slide 37 text
13h → 5h バッチの実行時間
Slide 38
Slide 38 text
13h → 5h バッチの実行時間 60%の削減に成功! 🎉
Slide 39
Slide 39 text
圧倒的に少ない工数で対応
Slide 40
Slide 40 text
圧倒的に少ない工数で対応 40人日 →
Slide 41
Slide 41 text
40人日 → 3人日 圧倒的に少ない工数で対応
Slide 42
Slide 42 text
学んだこと
Slide 43
Slide 43 text
● 仕様変更もパフォーマンス改善に貢献でき る!
Slide 44
Slide 44 text
● 仕様変更もパフォーマンス改善に貢献でき る! ● “今”必要なデータの質と量を確認しよう
Slide 45
Slide 45 text
“柔軟に”パフォーマンス 改善していきましょう!
Slide 46
Slide 46 text
fin