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