Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
過去の失敗からリアーキテクチャをやらないと判断した理由
Search
nyo_taro
June 18, 2024
0
100
過去の失敗からリアーキテクチャをやらないと判断した理由
nyo_taro
June 18, 2024
Tweet
Share
More Decks by nyo_taro
See All by nyo_taro
RailsをPdM視点で見てみた
nyo_taro
0
26
プロダクト価値を考えるための情報透明化とチーム文化づくり
nyo_taro
1
200
最新のRailsでPostgreSQLを使う良さ
nyo_taro
0
420
ドキュメントファーストの非同期文化で知ったこと
nyo_taro
1
250
チームで品質を高めながらSaaS開発を続けるためにやったこと.pdf
nyo_taro
0
44
Featured
See All Featured
Thoughts on Productivity
jonyablonski
67
4.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Side Projects
sachag
452
42k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Large-scale JavaScript Application Architecture
addyosmani
510
110k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
510
Designing for Performance
lara
604
68k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Transcript
過去の失敗からリアーキテクチャをやらないと判断 した理由 @nyo_taro
井上 翔太朗(@nyo_taro) セールステックのPM/EM 特徴 ・JOB理論/DDD ・好きなエディタはVSCode ・コーヒーは最近浅煎りの酸味系 自己紹介 @nyo_taro
スタート期に大規模なリアーキテクチャの判断の事例として、失敗を共有させ ていただきます。 ※リファクタリングなどの取り組みや負債解消をやらない話ではありません 前提 @nyo_taro
@nyo_taro
@nyo_taro
@nyo_taro
@nyo_taro
@nyo_taro
私の過去のリアーキテクチャで失敗 BALES CLOUDの歴史的な技術的負債 リアーキテクトするかの判断 今回のはなすこと @nyo_taro
私の過去のリアーキテクチャでの失敗 @nyo_taro
このような開発があった 作っているプロダクト 予約管理システム 使用している技術 JQueryとCoffeeScriptの組み合わせ 泥団子化したPHP 体制 PM:1人 エンジニア:2人 @nyo_taro
このときのプロダクトの技術的負債 スパゲッティコード 仕様書やテストがないので、挙動がわからない etc... とはいえ、プロダクトはユーザーから求められる機能は多くあったので、新機 能追加は必要だった @nyo_taro
当時の決断: リアーキテクトをする 新たな機能追加がしやすいようにドメインを整理する 現在の機能を新しい技術に移行し、保守性をあげる JQueryとCoffeeScript = > AngularJS 泥団子化したPHP =>
ASP.NET MVC @nyo_taro
開発生産性は上がったが.. プロダクト価値の向上につながるリアーキテクトにならなかった @nyo_taro
失敗した理由 プロダクトの状態を理解していない コアドメインとして今後アップデートするものはなにか? プロダクトはどのフェーズか?でどの立ち位置か? 課題や解決した先の価値を理解していない どんな技術的な課題を解決したいのか? 理想の構造とはどんな構造なのか? @nyo_taro
リアーキテクチャの定義 既存のシステムやプログラムの内部構造を変更すること。 外部から見たシステムの動作には影響を与えない。 コードの内部構造のみを変える。 @nyo_taro
リアーキテクトの目的(個人的な解釈) 取得したドメイン知識と現状のシステムとの構造的な乖離の解消 現アーキテクチャの構造変化による、新たな価値への挑戦が可能な状態に 開発生産性、体験の向上 @nyo_taro
当時のBALES CLOUDの技術的負債 @nyo_taro
@nyo_taro
プロトタイプ時期の技術的負債 初期はまだ市場理解などのドメイン理解も浅かったため、誤った抽象度での設 計や機能開発が行われていていた 様々な場当たり的な機能追加による負債 その場対応のコードにより複雑性が増し、新機能追加やバグ修正が困難になっ ていた @nyo_taro
スタート期に何をもってリアーキテクトすると判断するか? @nyo_taro
プロダクトの状態を定量/定性で計測する プロダクト価値 ユーザーインタビュー/NPS ノーススターメトリクス プロダクト品質・信頼性 SLI/SLO/エラーバジェット コード品質(循環的複雑度,認知的複雑度,保守的複雑度) プロダクトチーム FourKey、SPACE @nyo_taro
コアドメイン周りがその場実装により複雑度が高くなっている この複雑度の高さにより下記が発生していた テスト容易性の低下 バグが発生しやすい状態 全体の開発速度の低下 @nyo_taro
計測結果からやったこと 再度ドメインの整理とリファクタリング より負債を解消しやすくするためののupdate @nyo_taro
@nyo_taro
今後 構造的複雑度の計測により、依存関係の問題を可視化する 依存を剥がしつつモジュラーモノリスへの移行を段階的に行っていく @nyo_taro
まとめ プロダクト価値や技術的課題の理解が曖昧だとリアーキテクトは失敗する 可能性が高い 計測することで、リアーキテクトするかの判断材料は増える 定性と定量をもとに改善すべき場所とその価値を見極める @nyo_taro