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
プロダクトを成長させるために、エンジニアリングするべきこと/Product tidying up at engineering
Search
Daisuke Sato
November 22, 2019
Technology
1
150
プロダクトを成長させるために、エンジニアリングするべきこと/Product tidying up at engineering
#レガシー感謝の日
https://askul.connpass.com/event/152688/
Daisuke Sato
November 22, 2019
Tweet
Share
More Decks by Daisuke Sato
See All by Daisuke Sato
事業紹介/Joystruct
dskst
0
280
キャリア理論をもとに考えるエンジニアのキャリア/Engineer's careers based on career theory
dskst
8
2.3k
ソフトウェア開発とマネジメント/Software Development and Management
dskst
1
3.5k
エンジニアのためのマネジメント入門/Introduction to Management for Software Engineers
dskst
10
8k
FoodTechにおける商流・金流・物流の進化/Evolution of Commercial, Financial, and Logistics in FoodTech
dskst
1
710
Learning Domain-Driven Design Round-reading session 6
dskst
0
290
Learning Domain-Driven Design Round-reading session 3
dskst
1
310
KANBANをちゃんとやる/Do it properly of KANBAN
dskst
0
1.8k
組織本能の考察と適応 / Consideration and Adaption for Organizational instinct
dskst
2
1.1k
Other Decks in Technology
See All in Technology
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
3
190
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
210
Azureの基本的な権限管理の勉強会
yhana
0
530
MapLibreとAmazon Location Service
dayjournal
1
160
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
4
430
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
350
APIファーストなプロダクトマネジメントの実践 〜SaaSus Platformでの例〜 / "Practicing API-First Product Management - An Example with SaaSus Platform
oztick139
0
110
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
4
15k
Janus
bkuhlmann
1
490
Meta Quest 3 で動く桜マシマシ WebXR アプリを IBM Cloud Code Engine と Babylon.js で作った話
1ftseabass
PRO
0
120
自己改善からチームを動かす! 「セルフエンジニアリングマネージャー」のすゝめ
shoota
6
730
複雑な構成要素を持つUIとの向き合い方 〜新・支出グラフでの実例〜 / B43 TECH TALK
nakamuuu
0
140
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Become a Pro
speakerdeck
PRO
11
4.5k
GraphQLの誤解/rethinking-graphql
sonatard
50
9.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
4 Signs Your Business is Dying
shpigford
175
21k
We Have a Design System, Now What?
morganepeng
43
6.8k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
17
6.4k
Transcript
プロダクト成長させるために、 エンジニアリングするべきこと 2019.11.22 レガシー感謝の日 @dskst9
さとうだいすけ @dskst9 アスクル株式会社 エンジニアリングマネージャー エンジニアリングマネージャーってクールだよね というのを世の中に広めたい
LOHACO 「LOHACO」の由来は、Lots of Happy Communities “くらしをかるくする”をコンセプトに、暮らしを潤すこだわりの商品を、いつでもリーズナブ ルかつスピーディーにお届けする日用品ショッピングサイト
One year ago...
One year ago...
One year ago...
One year ago...
One year ago...
One year ago...
レガシーと戦った1年間のお話 • 注文コアシステムのリニューアル • レガシーをモダナイズ • プロダクトとの向き合い
私たちのレガシー LOHACOは2012年にサービス開始 • 巨大なモノリシックシステム • 溜まりに溜まった技術的負債 • なぜ動いているかわからないスパゲティ コード •
誰もしらない機能
私たちのレガシー:古え WEB App DB
私たちのレガシー:ぼちぼち古い Web App DB
私たちのレガシー:ぼちぼち古い Web App DB コア機能が ここにあるまま…!
変化に適応できない
生き残る種とは、 最も強いものではない。 最も知的なものでもない。 それは、変化に最もよく適応し たものである。 チャールズ・ダーウィン
変化に適応できない • スケールできない • 処理が遅い • 触ると事故る
変化に適応できない • スケールできない • 処理が遅い • 触ると事故る 彼みたいに、 変化を望めばいつか 対応できるのか?
彼→
キリンの首は、 最初から長かった。
アーキテクチャという骨 アーキテクチャという骨は、 望んでも伸びない太くならない。
変化に適応できるシステムを作り直す • 変化に強いソフトウェア 変更を迅速で安全に行うことができる • 変化に強いシステム システムの他の部分を変更する必要なし に、あるサービスを変更できる
変化に適応できるシステムとは 高凝集 && 低結合
高凝集 && 低結合 == 変更容易性 • レイヤード、オニオン、ヘキサゴナル、ク リーンアーキテクチャ • マイクロサービスアーキテクチャ、モジュラ
モノリス • DDD、オブジェクト指向 など、いろいろとあるが
高凝集 && 低結合 != 変更容易性
高凝集 && 低結合 != 変更容易性 複雑すぎると アンコントラーラブル
理想と現実の境界線 • 時間との戦い • 経験との戦い • 不確実性との戦い
戦いは、 正を以って合いし、 奇を以って勝つ。 孫氏
(それなりに…) 高凝集 && 低結合 == 変更容易性
(それなりに…) 高凝集 && 低結合 == 変更容易性 • クリーンなアーキテクチャ • マイクロサービス移行段階的
アーキテクチャ • DDDをまずは始める • ちゃんとしたテスト書く
ソフトウェアスタック Web App DB
骨はできた☠
次は肉
プロダクトのデトックス • 贅肉が溜まる • 老廃物が溜まる • 毒素が溜まる
何をしないか決めるのは、 何をするのかを決めるのと同 じくらい大事だ。 スティーブ・ジョブズ
65
統廃合した機能数
機能のリファクタリング • 明確なファクトを集める • 信じれる数字で会話する • 負債と呼んだものは資産かもしれない
機能のリファクタリング • 明確なファクトを集める • 信じれる数字で会話する • 負債と呼んだものは資産かもしれない 最終手段 試しに削除してみる
やりすぎると失敗する • いいじゃん、やってみよ • ってやると、意外に利用されていることもある • やりすぎ注意、明確なファクトを集めよ
作らないものづくり 成長し続けるとは 何かを作り続けることではない。
作らないものづくり 成長し続けるとは 何かを作り続けることではない。 何かを無くすことも重要である。
プロダクト成長段階 1. Early Phase: 初期段階 2. Growth Phase: 成長段階 3.
Hyper Growth Phase: 超 成長段階 4. Mature Phase: 成熟段階
プロダクト成長段階 (こんな式で計算できる)
プロダクト成長段階 さらなる製品の成長や新たな 環境における成長は 、 再びS字カーブをなぞる。
検証は プロダクトが成長する限り 続いていく
Thanks Legacy, Goodbye Legacy.