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

Mais conteúdo relacionado

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

大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末LIFULL Co., Ltd.
 
LIFULL HOME'S高速化への道のり
LIFULL HOME'S高速化への道のりLIFULL HOME'S高速化への道のり
LIFULL HOME'S高速化への道のりLIFULL Co., Ltd.
 
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側についてLIFULL Co., Ltd.
 
「ABCs2018」LT〝Intro to Google Play Instant〟
「ABCs2018」LT〝Intro to  Google Play Instant〟「ABCs2018」LT〝Intro to  Google Play Instant〟
「ABCs2018」LT〝Intro to Google Play Instant〟LIFULL Co., Ltd.
 
【Web系ベンチャーが語るAWS利用事例】社内ソリューションアーキテクトのすすめ
【Web系ベンチャーが語るAWS利用事例】社内ソリューションアーキテクトのすすめ【Web系ベンチャーが語るAWS利用事例】社内ソリューションアーキテクトのすすめ
【Web系ベンチャーが語るAWS利用事例】社内ソリューションアーキテクトのすすめLIFULL Co., Ltd.
 
Androidアプリのマネタイズ方法|metaps pte. ltd.
Androidアプリのマネタイズ方法|metaps pte. ltd.Androidアプリのマネタイズ方法|metaps pte. ltd.
Androidアプリのマネタイズ方法|metaps pte. ltd.Katsuaki Sato
 
【Ltech#0】RubyKaigi2018報告会
【Ltech#0】RubyKaigi2018報告会【Ltech#0】RubyKaigi2018報告会
【Ltech#0】RubyKaigi2018報告会LIFULL Co., Ltd.
 
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018馮 富久
 
成功するスマートフォンアプリ戦略とは?マーケティングからマネタイズまで《基礎編》
成功するスマートフォンアプリ戦略とは?マーケティングからマネタイズまで《基礎編》成功するスマートフォンアプリ戦略とは?マーケティングからマネタイズまで《基礎編》
成功するスマートフォンアプリ戦略とは?マーケティングからマネタイズまで《基礎編》Katsuaki Sato
 
Smartphoneguidebook 111118085105-phpapp02
Smartphoneguidebook 111118085105-phpapp02Smartphoneguidebook 111118085105-phpapp02
Smartphoneguidebook 111118085105-phpapp02Alan Kuo
 
アウラント会社概要201909版
アウラント会社概要201909版アウラント会社概要201909版
アウラント会社概要201909版Hajime Ookoshi
 
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来馮 富久
 
「新規事業提案制度」10社の取り組みを比較
「新規事業提案制度」10社の取り組みを比較「新規事業提案制度」10社の取り組みを比較
「新規事業提案制度」10社の取り組みを比較GOB Incubation Partners
 
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けることLIFULL Co., Ltd.
 

Semelhante a 【Ltech#8】レガシーシステム・プロセス改善史 (15)

大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末大きめレガシープロジェクトのフロント行く末
大きめレガシープロジェクトのフロント行く末
 
LIFULL HOME'S高速化への道のり
LIFULL HOME'S高速化への道のりLIFULL HOME'S高速化への道のり
LIFULL HOME'S高速化への道のり
 
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
 
「ABCs2018」LT〝Intro to Google Play Instant〟
「ABCs2018」LT〝Intro to  Google Play Instant〟「ABCs2018」LT〝Intro to  Google Play Instant〟
「ABCs2018」LT〝Intro to Google Play Instant〟
 
【Web系ベンチャーが語るAWS利用事例】社内ソリューションアーキテクトのすすめ
【Web系ベンチャーが語るAWS利用事例】社内ソリューションアーキテクトのすすめ【Web系ベンチャーが語るAWS利用事例】社内ソリューションアーキテクトのすすめ
【Web系ベンチャーが語るAWS利用事例】社内ソリューションアーキテクトのすすめ
 
Androidアプリのマネタイズ方法|metaps pte. ltd.
Androidアプリのマネタイズ方法|metaps pte. ltd.Androidアプリのマネタイズ方法|metaps pte. ltd.
Androidアプリのマネタイズ方法|metaps pte. ltd.
 
【Ltech#0】RubyKaigi2018報告会
【Ltech#0】RubyKaigi2018報告会【Ltech#0】RubyKaigi2018報告会
【Ltech#0】RubyKaigi2018報告会
 
introduction
introductionintroduction
introduction
 
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
インターネットを活用した“国内”テレワークの実際[電子出版事業編]2018
 
成功するスマートフォンアプリ戦略とは?マーケティングからマネタイズまで《基礎編》
成功するスマートフォンアプリ戦略とは?マーケティングからマネタイズまで《基礎編》成功するスマートフォンアプリ戦略とは?マーケティングからマネタイズまで《基礎編》
成功するスマートフォンアプリ戦略とは?マーケティングからマネタイズまで《基礎編》
 
Smartphoneguidebook 111118085105-phpapp02
Smartphoneguidebook 111118085105-phpapp02Smartphoneguidebook 111118085105-phpapp02
Smartphoneguidebook 111118085105-phpapp02
 
アウラント会社概要201909版
アウラント会社概要201909版アウラント会社概要201909版
アウラント会社概要201909版
 
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
Gihyo Digital Publishing10年の歩み~専門書・専門雑誌の電子出版の過去・現在・未来
 
「新規事業提案制度」10社の取り組みを比較
「新規事業提案制度」10社の取り組みを比較「新規事業提案制度」10社の取り組みを比較
「新規事業提案制度」10社の取り組みを比較
 
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
 

Mais de LIFULL Co., Ltd.

20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのことLIFULL Co., Ltd.
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性LIFULL Co., Ltd.
 
Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方LIFULL Co., Ltd.
 
LIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL についてLIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL についてLIFULL Co., Ltd.
 
Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術LIFULL Co., Ltd.
 
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷LIFULL Co., Ltd.
 
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっているLIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっているLIFULL Co., Ltd.
 
SaPID を導入するまでとそれから
SaPID を導入するまでとそれからSaPID を導入するまでとそれから
SaPID を導入するまでとそれからLIFULL Co., Ltd.
 
3D間取りを支える技術
3D間取りを支える技術3D間取りを支える技術
3D間取りを支える技術LIFULL Co., Ltd.
 
LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発LIFULL Co., Ltd.
 
大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構え大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構えLIFULL Co., Ltd.
 
スクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみスクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみLIFULL Co., Ltd.
 
実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニア実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニアLIFULL Co., Ltd.
 
エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由LIFULL Co., Ltd.
 
「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術LIFULL Co., Ltd.
 
ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標LIFULL Co., Ltd.
 
Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏LIFULL Co., Ltd.
 
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったことLIFULL Co., Ltd.
 
ウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめましたウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめましたLIFULL Co., Ltd.
 
新しい検索体験とデザインシステム
新しい検索体験とデザインシステム新しい検索体験とデザインシステム
新しい検索体験とデザインシステムLIFULL Co., Ltd.
 

Mais de LIFULL Co., Ltd. (20)

20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
20220319_新卒から活躍し続けるエンジニアが大切にしている5つのこと
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
 
Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方Kubernetesセキュリティの歩き方
Kubernetesセキュリティの歩き方
 
LIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL についてLIFULLの全社アプリケーション実行基盤 KEEL について
LIFULLの全社アプリケーション実行基盤 KEEL について
 
Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術Kubernetesクラスタバージョンアップを支える技術
Kubernetesクラスタバージョンアップを支える技術
 
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷
 
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっているLIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
LIFULLでは新卒エンジニアに 丸一日のテスト研修を行なっている
 
SaPID を導入するまでとそれから
SaPID を導入するまでとそれからSaPID を導入するまでとそれから
SaPID を導入するまでとそれから
 
3D間取りを支える技術
3D間取りを支える技術3D間取りを支える技術
3D間取りを支える技術
 
LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発LIFULL HOME'Sのおとり広告予測モデルの開発
LIFULL HOME'Sのおとり広告予測モデルの開発
 
大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構え大企業でアジャイル開発を推進できる条件とその心構え
大企業でアジャイル開発を推進できる条件とその心構え
 
スクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみスクラムを利用したアジャイルオフショア開発のとりくみ
スクラムを利用したアジャイルオフショア開発のとりくみ
 
実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニア実践 マーケティングテクノロジーエンジニア
実践 マーケティングテクノロジーエンジニア
 
エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由エンジニア × マーケティングテクノロジー が必要な理由
エンジニア × マーケティングテクノロジー が必要な理由
 
「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術「空飛ぶホームズくん」を実現するVR技術
「空飛ぶホームズくん」を実現するVR技術
 
ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標ニオイセンサで思索する街の新たな指標
ニオイセンサで思索する街の新たな指標
 
Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏Well-beingを測る「LIFE WILL」開発の舞台裏
Well-beingを測る「LIFE WILL」開発の舞台裏
 
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
㊗ LINE新着物件通知 リリース!! PJ進行に沿って話す、 PjM/PdMとして やったこと
 
ウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめましたウェブアクセシビリティ推進活動はじめました
ウェブアクセシビリティ推進活動はじめました
 
新しい検索体験とデザインシステム
新しい検索体験とデザインシステム新しい検索体験とデザインシステム
新しい検索体験とデザインシステム
 

【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刷新・サーバレス化
  • 4. © LIFULL Co.,Ltd.  本書の無断転載、複製を固く禁じます。 会社・サービスの紹介
  • 5. © LIFULL Co.,Ltd.  本書の無断転載、複製を固く禁じます。 会社の紹介 • 株式会社LIFULL • 1997年設立 • 従業員数1,441名(グループ会社含む) • 子会社 – LIFULL Tech Vietnam Co.,Ltd. (以降LFTV) • オフショア開発・ラボ型開発を行っている – Trovit Search, S.L. • 世界最大級のアグリゲーションサイトの運営(主に不動産・住宅、中古車、求人情報) – Mitula Group Limited • 不動産・住宅、求人、自動車及びファッション分野のアグリゲーションサイトやポータルサイトの運営 – など
  • 6. © LIFULL Co.,Ltd.  本書の無断転載、複製を固く禁じます。 サービスの紹介 今回は住宅カテゴリであるLIFULL HOME’Sについてのお話
  • 7. © LIFULL Co.,Ltd.  本書の無断転載、複製を固く禁じます。 レガシーシステム改善史
  • 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 – その場で伝えられるので手戻りが発生しない – 相談しやすい環境に – チームメンバーが将来的に増えたときにスケールできる(はず) • 課題 – モブでやるか手分けしてやるかのサジ加減が難しい – 既存の評価制度だと個人の成果や貢献がわかる前提なので改善が必要
  • 22. © LIFULL Co.,Ltd.  本書の無断転載、複製を固く禁じます。 まとめ
  • 23. © LIFULL Co.,Ltd.  本書の無断転載、複製を固く禁じます。 まとめ レガシーシステム を改善 Developer Experienceが向上 事業 プロダクトの成長 Digital Transformationし やすく あらゆるLIFEを、 FULLに。
  • 24. © LIFULL Co.,Ltd.  本書の無断転載、複製を固く禁じます。 闘いはつづく おわり