Weitere ähnliche Inhalte
Ähnlich wie 【Ltech#8】レガシーシステム・プロセス改善史 (15)
Mehr von LIFULL Co., Ltd. (20)
Kürzlich hochgeladen (10)
【Ltech#8】レガシーシステム・プロセス改善史
- 2. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
アジェンダ
• 自己紹介
• 会社・サービスの紹介
• レガシーシステム改善史
• まとめ
- 3. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
自己紹介
冨田 昌邦
とみた まさくに
@tomiyan
● 2009年 株式会社ネクスト(現LIFULL)に中途入社
● 今年で10年目
○ LIFULL HOME’S 不動産アーカイブ刷新
○ 課金システム開発
○ LIFULL HOME’S for Android/Windows Phone立ち上げ
○ LIFULL HOME’S スマートフォンサイト刷新
○ ネイティブアプリ向けAPI刷新・サーバレス化
- 5. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
会社の紹介
• 株式会社LIFULL
• 1997年設立
• 従業員数1,441名(グループ会社含む)
• 子会社
– LIFULL Tech Vietnam Co.,Ltd. (以降LFTV)
• オフショア開発・ラボ型開発を行っている
– Trovit Search, S.L.
• 世界最大級のアグリゲーションサイトの運営(主に不動産・住宅、中古車、求人情報)
– Mitula Group Limited
• 不動産・住宅、求人、自動車及びファッション分野のアグリゲーションサイトやポータルサイトの運営
– など
- 8. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
SPサイト
リニューアル
2013
クラウドネイティブに
オンプレ
-> AWSへ移行
2014
マイクロサービス化
構想
2015
ネイティブアプリ用APIマイクロ
サービス化
PCサイト
リニューアル
2011
オンプレで実装
コード肥大化
2016
PC・SPサイト
PHP、Symfony2
バージョンアップ
2017
API・BFF
Ruby、Sinatra
バージョンアップ
2018
リファクタリング実施
2019
- 9. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
オンプレ
2011 PCサイトリニューアル
旧API
ネイティブアプリ
PCサイト
ストレージ群
- 10. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
オンプレ
2013 SPサイトリニューアル
旧API
ネイティブアプリ
PCサイト
AWS
新API
BFF
SPサイト
ストレージ群
- 11. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
AWS
2014 オンプレからAWSへ移行
旧API
ネイティブアプリ
PCサイト
新API
BFF
SPサイト
ストレージ群
- 12. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
AWS
2015 マイクロサービス化構想
旧API
PCサイト
新API
BFF
SPサイト
ストレージ群
ネイティブアプリ
ネイティブアプリ用
BFF
- 13. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
AWS
2017 PC・SPサイト PHP、Symfony2バージョンアップ
PCサイト
(旧APIを吸収)
新API
BFF
SPサイト
ストレージ群
ネイティブアプリ
ネイティブアプリ用
BFF
- 14. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
改善施策
• ドメイン知識のドキュメント化&勉強会
• 設計規約、レビュー方針の策定&ピアレビューの実施
• ドキュメントの集約
• アーキテクト活動・ソリューションアーキテクト
• 静的解析、CI
• 自動テストの拡充、各種バージョンアップ
• レガシーコードのリファクタリングをモブ設計・モブプロ
- 15. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
2016 ドメイン知識のドキュメント化&勉強会
• before
– 共有の仕方は部署により異なっていた
– 機能追加するタイミングで伝えたり
– 既存のコードを調査するチームもあった
– 新卒はカリキュラムが充実している
– 中途や業務委託の方への共有が手薄
• after
– 自部署に2名が中途入社のメンバーがジョインしたタイミングでドキュメント化
– 誰でも閲覧・更新ができる状態に
– 2名教えるのも50名教えるのもあまり変わらないので全社で募集を募り、延べ70名弱に共有し
た
• 課題
– 仕様の変化に追いつけない
– ドキュメンテーションツールの移り変わりで散逸しそう
- 16. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
2016 設計規約、レビュー方針の策定&ピアレビューの実施
• before
– 規約
• コーディング規約で命名やフォーマットに関しては明示されていた
• 設計に関しては曖昧だった
– あまりお手本にしてほしくないコードを参考にされてしまうこともあった
– レビューが特定の人に集中
– レビュー方針や観点がなかった
• after
– 設計規約、レビュー方針、観点の策定
• 設計が議論できる状態になった
• お手本にしてほしくないコードの増殖を食い止めることができた
– ピアレビュー
• いままでレビュアーではなかった人がレビュアーに
• レビューした結果をピアレビュアーが確認しレビュアーを育てる
• ジョインしたばかりの人でも安心してレビューできる状態に
• 工数が大きい(不安な)もののみピアレビューを実施
• 設計段階で行う事により手戻りの工数も減らす
- 17. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
2016-2017 静的解析、CI
• before
– PHP Mess Detector、PHP_CodeSniffer、RuboCop、JSLintを手動で実行していた
– 組織が拡大する中、手動実行では運用が続かなかった
– コードレビューでも細かいコーディング規約を指摘することが多かった
• after
– CircleCIとReviewDogを導入
– CIで実行しやすいようにJSLintをESLintに変更
– より本質的なコードレビューができるようになった
• 課題
– ボーイスカウトルールで徐々によくはなっているが、
既存のコードで循環的複雑度が高い部分は残っている
- 18. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
2016-2018 自動テストの拡充、各種バージョンアップ
• before
– OS、言語、フレームワーク、ライブラリのバージョンが開発時の状態
– 自動テストが足りない状態だった
• after
– オフショア開発(LFTV)で自動回帰テストを拡充&アプリケーションのバージョンアップ対応
– インフラチームでOS、ミドルウェアのバージョンアップ
– QAチームとテスト計画策定 E2Eテストの実施
– 事業部で探索的テストを実施
– アーキテクトチームでオフショアの成果物のレビュー、APIのE2Eテストの実施
– 結果レスポンスタイムにも寄与した
- 19. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
2017 ドキュメントの集約
• before
– 時代の経過によりドキュメンテーションツール、チケットツールやVCSを違うものに乗り換えて
いった
• MediaWiki、影舞、Redmine、Confluence、JIRA
• git-http-backend、gitlab、GitHub
– 結果、ドキュメントが散逸してしまった
• after
– 開発に関するドキュメントは各リポジトリでMarkdownで管理
– 今後別のVCSに移行したとしても大丈夫な状態に
- 20. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
2017 アーキテクト活動・ソリューションアーキテクト
• before
– ものづくりが1つの部署だったが事業別組織となり機能の重複や横断機能における不具合が
発生する懸念があった
– 事業別組織にレガシーシステムに詳しい相談相手がいないことも
• LIFULL HOME’Sのプロダクトの品質・設計などの設計の全体最適化•システムに関する心配事・相
談事など、問題の大小や内容に関わらず相談にのる•エンジニア(特に技術リーダー)の成長を支援
する
– 会社が2フロアのビルから8フロアのビルに移転し、物理的に聞きにくい状態に
• after
– 技術横断部署にレガシーシステムに詳しいアーキテクトを配置
– 1on1や夕方にフロアを巡回し、簡単な相談を行えるように
– 社内ソリューションアーキテクト制度を設け、アーキテクチャ、インフラの設計相談も行える
- 21. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
2019 レガシーコードのリファクタリングをモブ設計・モブプロ
• before
– ドメイン知識の勉強会だけでは伝わらないコードの複雑さがある
– レビュー、ピアレビューで手戻りが発生する
– フロー効率性もよくない
• after
– その場で伝えられるので手戻りが発生しない
– 相談しやすい環境に
– チームメンバーが将来的に増えたときにスケールできる(はず)
• 課題
– モブでやるか手分けしてやるかのサジ加減が難しい
– 既存の評価制度だと個人の成果や貢献がわかる前提なので改善が必要
- 23. © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
まとめ
レガシーシステム
を改善
Developer
Experienceが向上
事業
プロダクトの成長
Digital Transformationし
やすく
あらゆるLIFEを、
FULLに。