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

3ヶ月で20万行を消すためにやったこと

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 3ヶ月で20万行を消すためにやったこと

Avatar for Naoto Sato

Naoto Sato

June 29, 2019
Tweet

More Decks by Naoto Sato

Other Decks in Technology

Transcript

  1. 不要なAPIをリストアップする (3/3) • 抽出されたAPI(526個) ◦ 別リージョンでのみ使われていたAPI i. メルカリでは元々全リージョン同一リポジトリだった ◦ どこからも呼び出されていないAPI

    ◦ 呼び出し元が既に使われていないAPI • 抽出されたが削除NGになったAPI(156個) ◦ 直近アクセスがないだけで使用されているAPI 526 - 156 = 370 個が削除対象
  2. プロジェクトチームを作る (1/3) • 一緒にコード削除をやってくれる仲間を探す ◦ バックエンドエンジニア x 7 ◦ フロントエンドエンジニア

    x 1 ◦ QAエンジニア x 1 • 削除手順を決める ◦ APIリストをどう管理するか ◦ どのようにQAを行うか
  3. コードを削除する (1/2) • 再度直近のアクセスログをチェックする ◦ リストを作ってから消すまでにタイムラグがあるため • Controllerを起点に再帰的に消す ◦ `git

    grep` をひたすら叩く ◦ IDEのシンボルサーチも役に立つ ◦ Controller, Service, Exception, Entity, DB table, DB schema, test, etc… ◦ 中途半端に残すと後の混乱の種になるので徹底的に消す ▪ ただしリファクタはスコープが大きくなりすぎるのでほどほどに
  4. コードを削除する (2/2) • 「デグレリスクが怖いです…」 ◦ 単体テストと結合テストがある程度書かれている前提 ◦ メルカリはテストが充実しているので思い切って削除できた ▪ 新機能実装時に必ずテストを書く文化

    ▪ QAチームによる自動e2eテストもある ◦ クリティカルな機能をさわった場合にはQAエンジニアにマニュアルのテストも お願いした ◦ 複雑度が高すぎるAPIは消さない判断もアリ
  5. 結果サマリー • 349個のAPIを削除 ◦ 3ヶ月で20万行 • Reverted 9 PRs ◦

    DBテーブルを削除したら別のサービスで使っていた ◦ 使われていたAPIを誤って消してしまい大量のエラーが発生 ◦ 突っ込んだ話はAsk the Speakerや懇親会でぜひ