Upgrade to Pro — share decks privately, control downloads, hide ads and more …

タウンワーク90万原稿の掲載を支えるレガシーバッチパフォーマンスチューニング #devsumi...

タウンワーク90万原稿の掲載を支えるレガシーバッチパフォーマンスチューニング #devsumi #devisumiD

2019/02/15 Developers Summit 2019での、森廣の講演資料になります

Avatar for Recruit Technologies

Recruit Technologies

February 15, 2019
Tweet

More Decks by Recruit Technologies

Other Decks in Technology

Transcript

  1. 自己紹介 森廣 隆行 株式会社リクルートテクノロジーズ ITエンジニアリング本部 プロダクトエンジニアリング部 リクルートジョブズグループ 2 ▪経歴 Sier(2006/4

    〜 2010/3) 金融系業務基幹システム運用保守開発 ナビアプリ(2010/4 〜 2015/9) 自社アプリ開発(サーバサイド、フロントエンド) リクルートテクノロジーズ(2015/10 〜) フロム・エーナビ運用保守開発(2015/10〜 2017/9) リクルートジョブズ全体領域アーキテクト(2017/10〜) ▪主な役割 リクルートジョブズ領域における サーバサイド(Java)、フロントエンド (JavaScript)開発責任者
  2. 背景 7 原稿入稿処理はリボンモデルの根幹を支える部分であり、 これがないとビジネスが成り立たないため必然的に「当た り前品質」を求められています。 カスタマー 営業 売上 〜 〜

    〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 原稿作成 クライアント 検索サービス 0¥ マッチング 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 入稿 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 掲載 まいどありー♪ 開発者 掲載します いいバイトあるかなー 入稿システム
  3. 背景 8 「商品の追加」、「掲載情報の追加」など新規案件におい て「当たり前品質」を優先するあまり既存処理に手を加え るのではなく新規追加というディフェンシブな対応が取ら れていきました。 カスタマー 営業 売上 〜

    〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 原稿作成 クライアント 検索サービス 0¥ マッチング 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 入稿 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 掲載 新規商品追加だ! うぅ、、まじか。。 なんとかするか 開発者 入稿システム
  4. 原稿情報入稿ジョブフロー 17 クライアント 日中帯 原稿反映 処理 タウンワーク 原稿取込 処理 Solr反映

    処理 原稿テーブル 保管テーブル 問題① 問題② 問題③ 原稿入稿システム 4回/日
  5. 問題その① 18 クライアント 日中帯 原稿反映 処理 タウンワーク 原稿取込 処理 Solr反映

    処理 原稿テーブル 保管テーブル 問題① 原稿入稿システム 4回/日
  6. 問題その① 21 クライアント 原稿反映 処理 ②一週間分まと めて処理 保管テーブル フリーペーパー Web掲載

    印刷 配送 原稿入稿システム 月曜朝掲載開始 日曜夜開始 原稿入稿システム 月曜〜金曜日
  7. 問題その① 22 原稿反映処理 新規掲載原稿 掲載停止原稿 掲載修正原稿 入稿処理 停止処理 停止予約処理 修正処理

    クライアント 連携テーブル ③ここが多い! 保管テーブル 日曜日夜開始 月曜〜金曜日
  8. 問題その① 23 クライアント 連携テーブル 保管テーブル 原稿反映処理 新規掲載原稿 掲載停止原稿 掲載修正原稿 停止処理

    停止予約処理 修正処理 編集処理 反映処理 ④画像加工、コード 変換など 日曜日夜開始 月曜〜金曜日
  9. 問題その① 24 クライアント 連携テーブル 原稿反映処理 新規掲載原稿 掲載停止原稿 掲載修正原稿 停止処理 停止予約処理

    修正処理 編集 処理 反映処理 ⑤入稿時に処理 保管テーブル 日曜日夜開始 月曜〜金曜日
  10. 問題その① 結果 25 原稿入稿システム クライアント 日曜日夜開始 日中帯 原稿反 映処理 タウンワーク

    原稿取込 処理 Solr反映 処理 原稿テーブル 処理量を分散 編 集 保管テーブル
  11. 問題その② 26 クライアント 4回/日 日中帯 原稿反 映処理 タウンワーク 原稿取込 処理

    Solr反映 処理 原稿テーブル 編 集 保管テーブル 問題② 原稿入稿システム
  12. 問題その② 28 連携テーブル 原稿取込処理 掲載原稿 登録処理 原稿テーブル 原稿反映処理 新規掲載原稿 掲載停止原稿

    掲載修正原稿 タウンワーク開発チーム 原稿入稿開発チーム ①開発チームが別
  13. 問題その② 29 連携テーブル 原稿取込処理 掲載原稿 登録処理 原稿テーブル 原稿反映処理 新規掲載原稿 掲載停止原稿

    掲載修正原稿 タウンワーク開発チーム 原稿入稿開発チーム ②タウンチーム に連携されていない
  14. 問題その② 30 連携テーブル 原稿取込処理 掲載原稿 登録処理 DELETE ⇒ INSERT 原稿テーブル

    ③すべて同じ処理 原稿反映処理 新規掲載原稿 掲載停止原稿 掲載修正原稿 タウンワーク開発チーム 原稿入稿開発チーム
  15. 問題その② 31 原稿取込処理 原稿テーブル 原稿反映処理 新規掲載原稿 掲載停止原稿 掲載修正原稿 新規掲載原稿 掲載停止原稿

    掲載修正原稿 INSERT UPDATE DELETE ⇒ INSERT 連携テーブル ④処理毎に分割 タウンワーク開発チーム 原稿入稿開発チーム
  16. 問題その② 32 原稿取込処理 原稿テーブル 原稿反映処理 新規掲載原稿 掲載停止原稿 掲載修正原稿 新規掲載原稿 掲載停止原稿

    掲載修正原稿 連携テーブル マ ス タ ー チ ェ ッ ク マ ス タ ー チ ェ ッ ク 削除 削除 両方から同じ処理 両方から同じ処理 タウンワーク開発チーム 原稿入稿開発チーム
  17. 問題その② 結果 33 クライアント 日中帯 原稿反 映処理 タウンワーク Solr反映 処理

    原稿テーブル マスターチェック 削除 編 集 新規 停止 修正 保管テーブル チーム間で役割分担 情報共有を密に 原稿入稿システム 4回/日
  18. 問題その③ 34 クライアント 日中帯 原稿反 映処理 タウンワーク Solr反映 処理 原稿テーブル

    編 集 新規 停止 修正 保管テーブル 問題③ マスターチェック 削除 原稿入稿システム 4回/日
  19. 53 SQL B OracleRAC構成 頂戴ー A B C A B

    C どうぞー 問題その③-2 キャッシュフュージョンとは
  20. 問題その③-2 55 バッチ1 バッチ2 バッチ3 A B C OracleRAC構成 A

    B C 今処理中だ から無理! 待ちま す 待つよ
  21. 問題その③-2 56 バッチ1 バッチ2 バッチ3 A B C OracleRAC構成 A

    B C データ変更無 いから直接読 み込んで まーだ ー? まだー?
  22. 問題その③-3 データフロー データフロー 62 バッチ バッチ バッチ バッチ バッチ バッチ

    バッチ バッチ バッチ バッチ 原稿テーブル バッチ マスターテーブル Solr ファイル 画像 アクセス履歴 さっきの SQL
  23. 問題その③-3 64 バッチ バッチ バッチ バッチ バッチ バッチ バッチ バッチ

    バッチ バッチ 原稿テーブル バッチ マスターテーブル 中間テーブル Solr ファイル 画像 アクセス履歴 さっきの SQL
  24. 問題その③-3 68 バッチ バッチ バッチ バッチ 原稿テーブル バッチ Solr ファイル

    画像 アクセス履歴 バッチ ③ここに影響が出てしまう
  25. 問題その③-3 71 バッチ バッチ バッチ バッチ バッチ バッチ バッチ バッチ

    バッチ バッチ 原稿テーブル バッチ マスターテーブル ⑤中間テーブル多すぎ Solr ファイル 画像 アクセス履歴 さっきの SQL
  26. 問題その③-3 72 バッチ バッチ バッチ バッチ バッチ バッチ バッチ バッチ

    原稿テーブル バッチ マスターテーブル Solr ファイル 画像 アクセス履歴 バッチ バッチ ⑥オンラインから常時アクセス さっきの SQL
  27. 問題その③-3 73 バッチ バッチ バッチ バッチ バッチ バッチ バッチ バッチ

    原稿テーブル バッチ マスターテーブル Solr ファイル 画像 アクセス履歴 ⑦原稿テーブルから 大量データ取得 バッチ バッチ さっきの SQL
  28. 問題その③-3 74 バッチ バッチ バッチ バッチ バッチ バッチ バッチ バッチ

    原稿テーブル バッチ マスターテーブル Solr ファイル 画像 アクセス履歴 バッチ バッチ ⑧何故か原稿テーブ ル更新 さっきの SQL
  29. 問題その③-3 76 バッチ バッチ バッチ バッチ バッチ バッチ バッチ バッチ

    原稿テーブル バッチ マスターテーブル Solr ファイル 画像 アクセス履歴 バッチ バッチ 削除 削除 さっきの SQL
  30. 問題その③-3 77 バッチ バッチ バッチ バッチ バッチ バッチ 原稿テーブル バッチ

    マスターテーブル Solr ファイル 画像 アクセス履歴 バッチ バッチ バッチ バッチ バッチ 4回/日 4回/日 1回/日 オンライン オフライン 分離 さっきの SQL
  31. 最終形態 79 クライアント 日中帯 原稿反 映処理 タウンワーク Solr反映 処理 原稿テーブル

    編 集 新規 停止 修正 保管テーブル レスポン ス速度UP マスターチェック 削除 原稿入稿システム 4回/日