【Ltech#8】レガシーシステム・プロセス改善史

499 Views

September 04, 19

スライド概要

2019/9/3 Ltech#8 LIFULL HOME'S 技術的負債との闘い
基盤開発ユニット アーキテクトグループ
冨田 昌邦

profile-image

LIFULL HOME'Sを運営する株式会社LIFULLのアカウントです。 LIFULLが主催するエンジニア向けイベント「Ltech」等で公開されたスライド等をこちらで共有しております。

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

レガシーシステム・プロセス改善史 Ltech #8 2019/09/03 株式会社LIFULL 冨田昌邦

2.

アジェンダ • • • • 自己紹介 会社・サービスの紹介 レガシーシステム改善史 まとめ © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

3.

自己紹介 とみた まさくに 冨田 昌邦 @tomiyan ● ● 2009年 株式会社ネクスト(現LIFULL)に中途入社 今年で10年目 ○ LIFULL HOME’S 不動産アーカイブ刷新 ○ 課金システム開発 ○ LIFULL HOME’S for Android/Windows Phone立ち上げ ○ LIFULL HOME’S スマートフォンサイト刷新 ○ ネイティブアプリ向けAPI刷新・サーバレス化 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

4.

会社・サービスの紹介 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

5.

会社の紹介 • • • • 株式会社LIFULL 1997年設立 従業員数1,441名(グループ会社含む) 子会社 – LIFULL Tech Vietnam Co.,Ltd. (以降LFTV) • オフショア開発・ラボ型開発を行っている – Trovit Search, S.L. • 世界最大級のアグリゲーションサイトの運営(主に不動産・住宅、中古車、求人情報) – Mitula Group Limited • 不動産・住宅、求人、自動車及びファッション分野のアグリゲーションサイトやポータルサイトの運営 – など © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

6.

サービスの紹介 今回は住宅カテゴリであるLIFULL HOME’Sについてのお話 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

7.

レガシーシステム改善史 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

8.

PCサイト リニューアル オンプレ -> AWSへ移行 2011 オンプレで実装 2014 コード肥大化 2016 API・BFF Ruby、Sinatra バージョンアップ 2018 SPサイト リニューアル マイクロサービス化 構想 2013 クラウドネイティブに 2015 ネイティブアプリ用 APIマイクロ サービス化 PC・SPサイト PHP、Symfony2 バージョンアップ リファクタリング実施 2019 2017 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

9.

2011 PCサイトリニューアル ネイティブアプリ オンプレ PCサイト 旧API ストレージ群 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

10.

2013 SPサイトリニューアル ネイティブアプリ オンプレ AWS SPサイト PCサイト BFF 旧API 新API ストレージ群 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

11.

2014 オンプレからAWSへ移行 ネイティブアプリ AWS SPサイト PCサイト BFF 旧API 新API ストレージ群 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

12.

2015 マイクロサービス化構想 ネイティブアプリ AWS SPサイト PCサイト BFF 旧API ネイティブアプリ用 BFF 新API ストレージ群 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

13.

2017 PC・SPサイト PHP、Symfony2バージョンアップ ネイティブアプリ AWS PCサイト (旧APIを吸収) SPサイト BFF ネイティブアプリ用 BFF 新API ストレージ群 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

14.

改善施策 • • • • • • • ドメイン知識のドキュメント化&勉強会 設計規約、レビュー方針の策定&ピアレビューの実施 ドキュメントの集約 アーキテクト活動・ソリューションアーキテクト 静的解析、CI 自動テストの拡充、各種バージョンアップ レガシーコードのリファクタリングをモブ設計・モブプロ © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

15.

2016 ドメイン知識のドキュメント化&勉強会 • before – – – – – • 共有の仕方は部署により異なっていた 機能追加するタイミングで伝えたり 既存のコードを調査するチームもあった 新卒はカリキュラムが充実している 中途や業務委託の方への共有が手薄 after – 自部署に2名が中途入社のメンバーがジョインしたタイミングでドキュメント化 – 誰でも閲覧・更新ができる状態に – 2名教えるのも50名教えるのもあまり変わらないので全社で募集を募り、延べ70名弱に共有し た • 課題 – 仕様の変化に追いつけない – ドキュメンテーションツールの移り変わりで散逸しそう © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

16.

2016 設計規約、レビュー方針の策定&ピアレビューの実施 • before – 規約 • • コーディング規約で命名やフォーマットに関しては明示されていた 設計に関しては曖昧だった – あまりお手本にしてほしくないコードを参考にされてしまうこともあった – レビューが特定の人に集中 – レビュー方針や観点がなかった • after – 設計規約、レビュー方針、観点の策定 • • 設計が議論できる状態になった お手本にしてほしくないコードの増殖を食い止めることができた – ピアレビュー • • • • • いままでレビュアーではなかった人がレビュアーに レビューした結果をピアレビュアーが確認しレビュアーを育てる ジョインしたばかりの人でも安心してレビューできる状態に 工数が大きい(不安な)もののみピアレビューを実施 設計段階で行う事により手戻りの工数も減らす © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

17.

2016-2017 静的解析、CI • before – PHP Mess Detector、PHP_CodeSniffer、RuboCop、JSLintを手動で実行していた – 組織が拡大する中、手動実行では運用が続かなかった – コードレビューでも細かいコーディング規約を指摘することが多かった • after – CircleCIとReviewDogを導入 – CIで実行しやすいようにJSLintをESLintに変更 – より本質的なコードレビューができるようになった • 課題 – ボーイスカウトルールで徐々によくはなっているが、 既存のコードで循環的複雑度が高い部分は残っている © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

18.

2016-2018 自動テストの拡充、各種バージョンアップ • before – OS、言語、フレームワーク、ライブラリのバージョンが開発時の状態 – 自動テストが足りない状態だった • after – – – – – – オフショア開発(LFTV)で自動回帰テストを拡充&アプリケーションのバージョンアップ対応 インフラチームでOS、ミドルウェアのバージョンアップ QAチームとテスト計画策定 E2Eテストの実施 事業部で探索的テストを実施 アーキテクトチームでオフショアの成果物のレビュー、APIのE2Eテストの実施 結果レスポンスタイムにも寄与した © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

19.

2017 ドキュメントの集約 • before – 時代の経過によりドキュメンテーションツール、チケットツールやVCSを違うものに乗り換えて いった • • MediaWiki、影舞、Redmine、Confluence、JIRA git-http-backend、gitlab、GitHub – 結果、ドキュメントが散逸してしまった • after – 開発に関するドキュメントは各リポジトリでMarkdownで管理 – 今後別のVCSに移行したとしても大丈夫な状態に © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

20.

2017 アーキテクト活動・ソリューションアーキテクト • before – ものづくりが1つの部署だったが事業別組織となり機能の重複や横断機能における不具合が 発生する懸念があった – 事業別組織にレガシーシステムに詳しい相談相手がいないことも • LIFULL HOME’Sのプロダクトの品質・設計などの設計の全体最適化•システムに関する心配事・相 談事など、問題の大小や内容に関わらず相談にのる•エンジニア(特に技術リーダー)の成長を支援 する – 会社が2フロアのビルから8フロアのビルに移転し、物理的に聞きにくい状態に • after – 技術横断部署にレガシーシステムに詳しいアーキテクトを配置 – 1on1や夕方にフロアを巡回し、簡単な相談を行えるように – 社内ソリューションアーキテクト制度を設け、アーキテクチャ、インフラの設計相談も行える © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

21.

2019 レガシーコードのリファクタリングをモブ設計・モブプロ • before – ドメイン知識の勉強会だけでは伝わらないコードの複雑さがある – レビュー、ピアレビューで手戻りが発生する – フロー効率性もよくない • after – その場で伝えられるので手戻りが発生しない – 相談しやすい環境に – チームメンバーが将来的に増えたときにスケールできる(はず) • 課題 – モブでやるか手分けしてやるかのサジ加減が難しい – 既存の評価制度だと個人の成果や貢献がわかる前提なので改善が必要 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

22.

まとめ © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

23.

まとめ 事業 プロダクトの成長 Developer Experienceが向上 あらゆるLIFEを、 FULLに。 Digital Transformationし やすく レガシーシステム を改善 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

24.

おわり 闘いはつづく © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。