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

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

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

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

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回/日