Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 ....
Transcript of Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 ....
![Page 2: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/2.jpg)
2/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
自介
![Page 3: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/3.jpg)
3/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
自介
懂一點程式開發
![Page 4: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/4.jpg)
4/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
自介
台灣駭客年會 2 次的演講經驗
待過 3 年資訊安全產業
![Page 5: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/5.jpg)
5/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
自介
涉獵一點著作權、商標權及專利權
撰寫過數篇發明專利
![Page 6: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/6.jpg)
6/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
目前負責四間新創公司的技術選型
協助數間友人新創公司的架構討論無償
自介
![Page 7: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/7.jpg)
7/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
目前負責四間新創公司的技術選型
協助數間友人新創公司的架構討論無償
自介
血淚史
![Page 8: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/8.jpg)
8/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
目前負責四間新創公司的技術選型
協助數間友人新創公司的架構討論
自介
![Page 9: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/9.jpg)
9/120
技術選型
技術選型,選擇對公司或團隊最佳的技術組合
![Page 10: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/10.jpg)
10/120
技術選型
技術選型,選擇對公司或團隊最佳的技術組合理想
![Page 11: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/11.jpg)
11/120
技術選型
所謂技術選型,大多數情況仍由關鍵人物決定偏好例如 CTO或架構師
現實
![Page 12: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/12.jpg)
12/120
技術選型
所謂技術選型,大多數情況仍由關鍵人物決定偏好例如 CTO或架構師
現實
這是我遇過最多的抱怨!
![Page 13: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/13.jpg)
13/120
技術選型
所謂技術選型,大多數情況仍由關鍵人物決定偏好例如 CTO或架構師
現實
很多人認為【空降神兵】能解決問題。
但有時解決的反而是《提出問題的人》。公司內部?顧問?接案 / 外包?
![Page 14: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/14.jpg)
14/120
技術選型
所謂技術選型,大多數情況仍由關鍵人物決定偏好例如 CTO或架構師
現實
天降神兵: .NET 不行,全部改 Java 。
天降神兵: PHP 開發太慢,全部改 RoR 。
天降神兵: AngularJS 沒人用,全部改 VueJS 。
這些決策未必錯,但問題是《為什麼》
以及更重要的:有無《信服人的理由》
![Page 15: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/15.jpg)
15/120
偶爾任性是可愛,一天到晚任性是妖孽~ ANT ~
![Page 16: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/16.jpg)
16/120
➊架構先決 無視人員、流程只講技術,是耍性子
架構會影響公司文化、商業擴展;思維更要超越程式碼層次CTO/ 架構師不該只懂技術
![Page 17: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/17.jpg)
17/120
➋沒有完美的架構,只有最適的架構無視場景只講架構,是耍流氓
若無法舉出架構的缺陷,代表你還無法掌握盲目套用別人的架構,並不會讓你變得跟他一樣好
沒有一個架構能適用所有場景
![Page 18: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/18.jpg)
18/120
➌架構是演進的,預想但不過早調優無視未來只求急行軍,是耍短視
兵馬未動,糧草先行,預想下一步,下下一步,甚至下下下一步 ...歡迎進入八奇的思考領域
![Page 19: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/19.jpg)
19/120
Costreduction
Flexibility
Time to market
Businessdebt
Prematuredebt
Scalabilitydebt
Optimum
![Page 20: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/20.jpg)
20/120
Costreduction
Flexibility
Time to market
Businessdebt
Prematuredebt
Scalabilitydebt
Optimum
省 好
快
![Page 21: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/21.jpg)
21/120
Costreduction
Flexibility
Time to market
Businessdebt
Prematuredebt
Scalabilitydebt
Optimum
Architectural debt
{ }省 好
快
架構債
![Page 22: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/22.jpg)
22/120
有經驗的技術團隊
![Page 23: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/23.jpg)
23/120
有經驗的技術團隊
喜歡採用最新、最好、最大的架構
![Page 24: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/24.jpg)
24/120
You Are Not GoogleFacebookAmazon
別為了高大尚,而迷失自我
![Page 25: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/25.jpg)
25/120
欠缺架構經驗的團隊
![Page 26: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/26.jpg)
26/120
Non-reusable CodeNon-HA / NonScalabilityLegacy Code
債築債
問題
![Page 27: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/27.jpg)
27/120
(起初 )不缺錢的團隊
![Page 28: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/28.jpg)
28/120
Fund raising !or
Burnout !?利逐債
奔耗
![Page 29: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/29.jpg)
29/120
Cost reduction Flexibility
Time to market
Businessdebt
Prematuredebt
Scalabilitydebt
Optimum
Architectural debt
![Page 30: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/30.jpg)
30/120
Cost reduction Flexibility
Time to market
Businessdebt
Prematuredebt
Scalabilitydebt
Optimum
延展性不足以支撐業務成長
架構升級積重難返
約束 (硬限制 )未滿足
Architectural debt
徵兆
![Page 31: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/31.jpg)
31/120
救世主 ?
![Page 32: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/32.jpg)
32/120
![Page 33: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/33.jpg)
33/120
Agile? 敏捷教練?
![Page 34: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/34.jpg)
34/120
Architect? 架構師?
Agile? 敏捷教練?
![Page 35: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/35.jpg)
35/120
Agile Architect
Agile與Architect 是有交集的
![Page 36: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/36.jpg)
36/120
Good architecture brings agility
好的架構帶來敏捷
- Saugatuck -
![Page 37: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/37.jpg)
37/120
Minimum Viable Product最小可行產品
![Page 38: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/38.jpg)
38/120
MVP 若沒有控制好,技術債將迅速增長
Minimum Viable Product
先前程式少能復用遺舊程式難以去除架構變動牽扯不清
最小可行產品
![Page 39: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/39.jpg)
39/120
E = mc2
![Page 40: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/40.jpg)
40/120
E = mc2
Errors = (more code)2
![Page 41: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/41.jpg)
41/120
E = mc2
錯誤隨著程式碼數量呈平方次成長
Errors = (more code)2
![Page 42: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/42.jpg)
42/120
最後廢碼定理程式廢碼產生的速率,隨著接近專案最後死線呈等比倍增
![Page 43: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/43.jpg)
43/120
真相只有一個,但死相可以有很多個
~ ANT ~
![Page 44: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/44.jpg)
44/120
Minimum Viable Product
Debt
Time
Debt Ceiling
理想與現實
Debt Baseline
![Page 45: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/45.jpg)
45/120
Minimum Viable Product
Debt
Time
Debt Ceiling
理想與現實
理想
Debt Baseline
![Page 46: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/46.jpg)
46/120
Debt
Time
Debt Ceiling
Minimum Viable Product理想與現實
現實
Debt Baseline
![Page 47: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/47.jpg)
47/120
Debt
Time
Debt Ceiling
Minimum Viable Product
Pivot?
理想與現實
現實
Debt Baseline
Pivot?
Pivot?
![Page 48: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/48.jpg)
48/120
Pivot聽起來很稀鬆平常,就像放屁一樣,但只有蠟筆小新放屁會飛
~ Ricky Chen ~
![Page 49: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/49.jpg)
49/120
Minimum Viable Product
市場驗證成功後,我再拿投資人的錢來技術轉型就好了。
大家可能聽過一些說法:
事實上,迅速成長的公司,沒太多時間進行技術轉型。
再加上之前為了快速驗證MVP 所遺留的技術債。
只會讓技術轉型變得遙不可及。
![Page 50: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/50.jpg)
50/120
Minimum Viable Product
現有團隊不行,我砸錢找大神 (大牛 )重構系統總可以吧。
於是:
![Page 51: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/51.jpg)
51/120
Minimum Viable Product
強烈的既視感?
![Page 52: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/52.jpg)
52/120
更重要的是
有考慮過大神 (大牛 )的感受嗎?架構重構是個苦工,很多時候他們也是千百個不願意
![Page 53: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/53.jpg)
53/120
空中換引擎
落地換引擎
技術難度高。
但迅速成長的公司,仍然有很多需求待開發。同時還要處理累積的技術債,很可能因債築債而嚴重惡化。
技術難度低。
但商業模式是否能夠允許新功能推進緩慢或無進展?
空中小修地面重建
資源投入巨大。
不是現行團隊拆分戰力,就是要另招一批團隊開發新引擎。但若問題本質不解決,新引擎未來也會遭遇一樣的問題。
![Page 54: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/54.jpg)
54/120
架構債
非技術上 技術上
![Page 55: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/55.jpg)
55/120
架構債
非技術上 技術上
需求的坑
![Page 56: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/56.jpg)
56/120
架構債
非技術上 技術上
需求的坑 程式的坑
![Page 57: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/57.jpg)
57/120
架構債
非技術上 技術上
需求的坑 程式的坑
![Page 58: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/58.jpg)
58/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
![Page 59: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/59.jpg)
59/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
{Agile, Scrum, Kanban, DevOps, TDD, BDD, ...
![Page 60: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/60.jpg)
60/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
{Conceptual IntegrityConceptual debt
Agile, Scrum, Kanban, DevOps, TDD, BDD, ...( 概念完整性 )
![Page 61: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/61.jpg)
61/120
架構之始,在於需求
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
![Page 62: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/62.jpg)
62/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
我以為你知道!
這本來就是要的,只是我忘了講!
我要的不是這樣!
我要的你應該要替我想到,我又不懂技術
你沒跟我說過。
怪我囉。
可是需求書是這樣 /需求書不明確
你 !!!
出了問題時
需求方 開發方
![Page 63: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/63.jpg)
63/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
我以為你知道!
這本來就是要的,只是我忘了講!
我要的不是這樣!
我要的你應該要替我想到,我又不懂技術
你沒跟我說過。
怪我囉。
可是需求書是這樣 /需求書不明確
你 !!!
程式還是要趕,
班還是照加。
出了問題時
需求方 開發方
![Page 64: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/64.jpg)
64/120
需求永遠是不明確的
但我們能做的是讓架構更具彈性
![Page 65: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/65.jpg)
65/120
需求永遠是不明確的
但我們能做的是讓架構更具彈性
被動 主動
需求方 開發方 需求方 開發方
![Page 66: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/66.jpg)
66/120
被動 主動
Dependency inversion principle依賴反轉原則
需求方 開發方 需求方 開發方
需求永遠是不明確的
但我們能做的是讓架構更具彈性
![Page 68: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/68.jpg)
68/120
Business
License
Elastic business
Workload
Technology
Scale-upApplicationConnectionDatabaseFile systemOS KernelHardware
Scale-outReplicationClusteringShardingDisaster RecoveryMulti Regional Resiliency
CONSILIENCE
Architecture
and more ...
引用去年簡報
![Page 69: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/69.jpg)
69/120
當業務需求變更程式設計時
預想但不過早調優
總工程師不該把每次新需求都認為獨立需求(多想二分鐘,團隊可以不必自虐)
Elastic business引用去年簡報
![Page 70: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/70.jpg)
70/120
預想但不過早調優
![Page 71: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/71.jpg)
71/120
Premature optimization is the root of all evil.過早最佳化是萬惡的根源
![Page 72: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/72.jpg)
72/120
Premature optimization is the root of all evil.過早最佳化是萬惡的根源
手拿菜刀砍電線,一路火花帶閃電
![Page 73: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/73.jpg)
73/120
Premature optimization is the root of all evil.過早最佳化是萬惡的根源
手拿菜刀砍電線,一路火花帶閃電
![Page 74: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/74.jpg)
74/120
We should forget about small efficiencies,
say about 97% of the time:
Premature optimization is the root of all evil.
Yet we should not pass up our opportunities in that critical 3%.
![Page 75: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/75.jpg)
75/120
We should forget about small efficiencies,
say about 97% of the time:
Premature (micro) optimization is the root of all evil.
Yet we should not pass up our opportunities in that critical 3%.
![Page 76: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/76.jpg)
76/120
Premature (micro) optimization is the root of all evil.
Do some { Architectural optimizations, Algorithms, … } early.
![Page 77: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/77.jpg)
77/120
Premature (micro) optimization is the root of all evil.
Do some { Architectural optimizations, Algorithms, … } early.
程式與架構需懂得區分【架構】異動會牽扯組件邊界,影響巨大
![Page 78: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/78.jpg)
78/120
Premature (micro) optimization is the root of all evil.
Do some { Architectural optimizations, Algorithms, … } early.
即未來需求變更時,屬程式異動,還是架構異動?
程式與架構需懂得區分【架構】異動會牽扯組件邊界,影響巨大
簡言之,如果需求發生異動,需花多久時間滿足?
![Page 79: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/79.jpg)
79/120
狀態
原表格設計
Elastic business
id name ... is_deleted
1 Apple ... 0
2 Banana ... 1
引用去年簡報
![Page 80: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/80.jpg)
80/120
狀態
新業務需要儲存「鎖定」狀態
Elastic business
id name ... is_deleted
1 Apple ... 0
2 Banana ... 1
id name ... is_deleted is_locked
1 Apple ... 0 1
2 Banana ... 1 0
引用去年簡報
![Page 81: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/81.jpg)
81/120
狀態
其實若狀態是沒交集的,則可以合併
Elastic business
id name ... status
1 Apple ... 2
2 Banana ... 0
id name ... is_deleted is_locked
1 Apple ... 0 1
2 Banana ... 1 0
{ 0: deleted, 1: enabled, 2: locked }
引用去年簡報
![Page 82: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/82.jpg)
82/120
標籤雲
原表格設計
Elastic business
id name tag1
1 Apple admin
2 Banana reporter
3 Cherry reporter
SELECT * FROM {Table}WHERE tag1 = ‘admin’
引用去年簡報
![Page 83: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/83.jpg)
83/120
標籤雲
新增標籤
Elastic business
id name tag1 tag2 tag3
1 Apple admin reporter programmer
2 Banana reporter programmer NULL
3 Cherry reporter admin NULL
SELECT * FROM {Table}WHERE (tag1 = ‘admin’ OR tag2 = ‘admin’ OR tag3 = ‘admin’) AND (tag1 = ‘reporter’ OR tag2 = ‘reporter’ OR tag3 = ‘reporter’)
SELECT * FROM {Table}WHERE ‘admin’ IN (tag1, tag2, tag3) AND ‘reporter’ IN (tag1, tag2, tag3)
ALTER TABLE !!
引用去年簡報
![Page 84: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/84.jpg)
84/120
Tag
Elastic business
id tag
1 admin
1 reporter
1 programmer
2 reporter
... ...
新增標籤 (另他法 )
標籤雲
id name X X X
1 Apple X X X
2 Banana X X X
SELECT * FROM {Table} INNER JOIN ‘Tag’ AS t1 USING (id) INNER JOIN ‘Tag’ AS t2 USING (id)WHERE t1.tag = ‘admin’ AND t2.tag = ‘reporter’
引用去年簡報
![Page 85: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/85.jpg)
85/120
Elastic business
或是M:N
標籤雲
id name
1 Apple
2 Banana
id tag_id
1 1
1 2
1 3
2 2
2 3
tag_id name
1 admin
2 reporter
3 programmer
引用去年簡報
![Page 86: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/86.jpg)
86/120
Elastic business廣告需求
營運有新的需求,受眾在一天內不要看到相同廣告。
瞭解,預計一個工作天。
第一天
引用去年簡報
![Page 87: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/87.jpg)
87/120
Elastic business廣告需求
營運有新的需求,受眾在小時內不要看到相同廣告。
瞭解,預計二個工作天。
第二天
時間粒度不同
引用去年簡報
![Page 88: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/88.jpg)
88/120
Elastic business廣告需求
營運有新的需求,受眾在一天內不要看到同類廣告。
瞭解,預計八個工作天。
第三天
目標粒度不同
不能一次講清楚嗎?
引用去年簡報
![Page 89: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/89.jpg)
89/120
Elastic business廣告需求
受眾在M時間內不要看到 N廣告
預想
該需求的延伸會是什麼?
M → 年 /季 /月 /週 / 時 /分 /秒N → 相同 /同類看到的次數? 1/2/3...裝置有別?區域?廣告主屬性?
引用去年簡報
![Page 90: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/90.jpg)
90/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
KISS(Keep it simple, stupid!)DRY(Don't repeat yourself)SOLID Principles...
略過
![Page 91: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/91.jpg)
91/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
設計:權衡需求與實現的藝術
![Page 92: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/92.jpg)
92/120
Business
License
Elastic business
Workload
Technology
Scale-upApplicationConnectionDatabaseFile systemOS KernelHardware
Scale-outReplicationClusteringShardingDisaster RecoveryMulti Regional Resiliency
CONSILIENCE
Architecture
and more ...
引用去年簡報
![Page 93: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/93.jpg)
93/120
Workload
Processing Intensive Capacity
CPU intensive
Memory intensive
Storage/IO intensive
Bandwidth intensive
OLTP
OLAP
Data warehouse
Throughput
Latency
Memory footprint
Service-level agreement
Bond
Performance
Security
Cost restriction
引用去年簡報
![Page 94: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/94.jpg)
94/120
Workload
Processing Intensive Capacity
CPU intensive
Memory intensive
Storage/IO intensive
Bandwidth intensive
OLTP
OLAP
Data warehouse
Throughput
Latency
Memory footprint
Service-level agreement
Bond
Performance
Security
Cost restriction
引用去年簡報
![Page 95: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/95.jpg)
95/120
WorkloadCapacity
Latency Memoryfootprint
Trade-off
Throughput
引用去年簡報
![Page 96: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/96.jpg)
96/120
WorkloadCapacity
High throughput Low latency
引用去年簡報
![Page 97: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/97.jpg)
97/120
WorkloadCapacity
High throughput Low latency
重點在於找出需求的【硬限制】
引用去年簡報
![Page 98: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/98.jpg)
98/120
遇到瓶頸還不是最慘,慘得是過了瓶頸,還有瓶蓋~ Anonymous ~
![Page 99: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/99.jpg)
99/1202015
千萬人同時在線電子商務、線上出版媒體
低延遲回應廣告平台 RTB(30ms)
高頻交易 (0.5~3ms)
多人線上遊戲 (30fps: 100~150ms, 60fps: 60~70ms)
醫療等關鍵設備
![Page 100: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/100.jpg)
100/120
WorkloadCapacity
Low latency
非指PHP 無法做到低延遲 (例如30ms),而是
我們願意 (只能 )花多少資源(資金硬限制),以及
我們手中工程師的數量與實力(人力硬限制)。很多事情 (例如 latency)不是靠 Scale Out 能解決
高手人數?訓練成本?
![Page 101: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/101.jpg)
101/120
WorkloadCapacity
Low latency
此時, PHP相較C/C++/Go通常會更辛苦。
伺服器規格需求較高?較多?
工程師技能要求較高?
徵聘更強的工程師?
案主:不好意思,我只能給你兩台一般的伺服器
PHP Extension ? Swoole ?奇技淫巧?未來徵人的訓練成本?
高手為什麼要來?有無足夠的產品吸引力?足夠的給薪條件?
![Page 102: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/102.jpg)
102/120Ref: http://eugenedvorkin.com/seven-micro-services-architecture-advantages/
![Page 103: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/103.jpg)
103/120
Monolith
Microservices
SOA
Nanoservices
Picoservices
SOA
![Page 104: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/104.jpg)
104/120
Monolith
Microservices
SOA
Nanoservices
Picoservices
SOA
有沒有能力駕馭微服務、奈米服務、微微服務?
![Page 105: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/105.jpg)
105/120
MonolithFirst
《單體》優先的技術選型
~ Martin Fowler (ThoughtWorks的首席科學家) ~
Ref: https://martinfowler.com/bliki/MonolithFirst.html
對於《微服務》,他注意到了這兩種問題,
➊幾乎所有成功的微服務案例,都是從過大的《單體》拆分的。
➋幾乎所有他見過一開始就投入《微服務》的案例,最後都遭遇嚴重麻煩。
![Page 106: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/106.jpg)
106/120
MonolithFirst
網友提出不同見解
~ krisdol ~
Ref: https://news.ycombinator.com/item?id=9652893
Fowler 遇到的案例都是出問題的公司。 ThoughtWorks是一家顧問公司,也就是說,他們會在某個公司出現問題時提供幫助。
簡言之, Fowler 所見都是不對的組織採用了錯誤的架構,也就是他會見到一開始採用《微服務》而失敗的公司,但不會見到成功的。
![Page 107: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/107.jpg)
107/120
MonolithFirst
網友提出不同見解
~ room271 ~
Ref: https://news.ycombinator.com/item?id=9652893
當你是顧問時,一開始很容易提倡採用《單體》,因為你會在《單體》出現問題前,就已經完成專案離開了。
已有兩年《微服務》經驗的他,提出了兩個見解:
➊當公司或團隊很小時,除非你們技藝超群,否則不建議採用《微服務》。
➋當公司或團隊很大時,採用《微服務》有助於解隅組織並促進敏捷。
![Page 108: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/108.jpg)
108/120Ref: https://www.slideshare.net/ufried/towards-complex-adaptive-architectures (p37)
組織會影響架構
![Page 109: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/109.jpg)
109/120
Monolith
Microservices
SOA
Nanoservices
Picoservices
SOA
![Page 110: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/110.jpg)
110/120
救世主 ?
![Page 111: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/111.jpg)
111/120
![Page 112: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/112.jpg)
112/120
Serverless
Serverless ≠ Architectureless
![Page 113: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/113.jpg)
113/120
Serverless
Serverless ≠ Architectureless
Ref: https://martinfowler.com/articles/serverless.html
![Page 114: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/114.jpg)
114/120
Serverless
Serverless ≠ Architectureless
Ref: https://aws.amazon.com/serverless/
![Page 115: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/115.jpg)
115/120
➊架構先決
➋沒有完美的架構,只有最適的架構
➌架構是演進的,預想但不過早調優
![Page 116: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/116.jpg)
116/120
Sacrificial Architecture (犧牲的架構 )
~ Martin Fowler ~
即使捨棄現有架構,重構組件新架構,也未必是一件失敗的事
重點是【為什麼】、【新架構怎麼執行】及【何時執行】
簡言之,如果清楚明白打掉重練比較好,就勇敢執行吧!
Ref: http://www.infoq.com/news/2014/11/sacrificial-architecture
![Page 117: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/117.jpg)
117/120
Sacrificial Architecture (犧牲的架構 )
~ Martin Fowler ~
即使捨棄現有架構,重構組件新架構,也未必是一件失敗的事
重點是【為什麼】、【新架構怎麼執行】及【何時執行】
簡言之,如果清楚明白打掉重練比較好,就勇敢執行吧!
Ref: http://www.infoq.com/news/2014/11/sacrificial-architecture
但免不了的,還是要面臨這些問題
![Page 118: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/118.jpg)
118/120
空中換引擎
落地換引擎
技術難度高。
但迅速成長的公司,仍然有很多需求待開發。同時還要處理累積的技術債,很可能因債築債而嚴重惡化。
技術難度低。
但商業模式是否能夠允許新功能推進緩慢或無進展?
空中小修地面重建
資源投入巨大。
不是現行團隊拆分戰力,就是要另招一批團隊開發新引擎。但若問題本質不解決,新引擎未來也會遭遇一樣的問題。
![Page 119: Ant ModernWeb-Modern Web Architecture Design Journey · 沒有一個架構能適用所有場景 . 18/120 架構是演進的,預想但不過早調優 ... 更重要的是 有考慮過大神(大牛)的感受嗎?](https://reader036.fdocument.pub/reader036/viewer/2022070715/5ed76c3b2a2f0d6edb31ef66/html5/thumbnails/119.jpg)
119/120
共 勉 之