Slide 1

Slide 1 text

重新想像 如何做技術選型決策 [email protected] https://www.facebook.com/yftzeng.tw https://twitter.com/yftzeng Ant 2021-07-17

Slide 2

Slide 2 text

2/195 曾義峰 (aka Ant) ➔ TGO (Top Geeks' Organization) Networks 創始委員及現任學習委員 ➔ 臺灣資安社群 CHROOT 成員 ➔ 曾任資安顧問及電子票證公司顧問 ➔ 前 LeadBest Consulting Group 首席執行顧問 ➔ 開源人年會 (COSCUP) 2009 / 2012 / 2020 講師 ➔ 臺灣駭客年會 (HITCON) 2008 及 2009 講師 ➔ 臺灣 Modern Web 2015 ~ 2020 講師

Slide 3

Slide 3 text

3/195 從專業到商業

Slide 4

Slide 4 text

4/195 Security (Hacker) Law (Intellectual Property) Technology (Software Dev.) 著作權法 商標權法 專利權法 自由開放源碼授權 ... 曾於英業達及廣達電腦等 教授自由軟體授權相關課程 CTO 技術總監 總工程師 技術顧問 CHROOT 成員 台灣駭客年會兩屆講師

Slide 5

Slide 5 text

這趟旅程未必有答案,但會嘗試讓你與自己對話

Slide 6

Slide 6 text

重新 想像

Slide 7

Slide 7 text

以下,都是我對自己提出的自省

Slide 8

Slide 8 text

8/195 如何做技術選型決策 技術管理 技術模式 技術工具 人 事 物

Slide 9

Slide 9 text

9/195 如何做技術選型決策 技術管理 技術模式 技術工具 人 事 物

Slide 10

Slide 10 text

10/195 技術管理 在決策中,人是最為關鍵的因素,但是人類往往最不瞭解的就是人類自己。 《快思慢想》

Slide 11

Slide 11 text

11/195 技術管理 Management 管理 Leadership 領導

Slide 12

Slide 12 text

12/195 技術管理 關於管理與領導,你們怎麼看? Q Management 管理 Leadership 領導

Slide 13

Slide 13 text

13/195 技術管理 Credit: https://www.business2community.com/leadership/leadership-difference-boss-leader-01651799 Credit: https://www.quora.com/What-are-the-differences-between-boss-and-leader 1 2 3

Slide 14

Slide 14 text

14/195 技術管理 Credit: https://www.business2community.com/leadership/leadership-difference-boss-leader-01651799 Credit: https://www.quora.com/What-are-the-differences-between-boss-and-leader 1 2 3 Boss vs. Leader Manager vs. Leader

Slide 15

Slide 15 text

15/195 技術管理 Credit: https://www.books.com.tw/products/0010819896 Credit: https://www.books.com.tw/products/0010450965 作者: 許士軍 出版: 2019-03-01 作者: Gary Dessler & Jean Phillips 出版: 2009-07-01 ( 原 2008-08-03)

Slide 16

Slide 16 text

16/195 技術管理 Management 管理 Leadership 領導 是不是這樣比較合理呢?

Slide 17

Slide 17 text

17/195 技術管理 Management 管理 Leadership 領導

Slide 18

Slide 18 text

敏捷

Slide 19

Slide 19 text

19/195 技術管理 Credit: https://craigsmith.id.au/2016/02/03/40-agile-methods-goes-open-source/ Scrum Kanban XP TDD/BDD SAFe LeSS DevOps 1 2 3 4 5 6 7

Slide 20

Slide 20 text

20/195 Q 技術管理 是否為 ( 技術 ) 團隊導入敏捷?你是支持還是反對? 心裡浮現很多故事,可能有好有壞

Slide 21

Slide 21 text

21/195 技術管理 朋友群中是否有支持派,以及反對派? Q 回想一下朋友圈近年的分享內容

Slide 22

Slide 22 text

22/195 技術管理 有沒有觀察過,支持與反對敏捷的人,其職位或職業分布為何? 老闆 / 主管 / PM / PO / 顧問 ( 管理 or 技術 ) / 基層 / 接案? Q

Slide 23

Slide 23 text

23/195 技術管理 有沒有觀察過,新版 Scrum Guides 2020 (11 月 ) 推出時,分享的人是哪些人? Q 老闆 / 主管 / PM / PO / 顧問 ( 管理 or 技術 ) / 基層 / 接案?

Slide 24

Slide 24 text

如果與我們息息相關,為何我們表現的毫不在乎 透明、開放、回顧、衝刺 ( 上下一心 )

Slide 25

Slide 25 text

25/195 技術管理 有沒有觀察過,大家所謂的敏捷是什麼? 敏捷宣言有四點,但是否人人都不太一樣。就像在一個專案中,存在著各種不同的程式語言 Q

Slide 26

Slide 26 text

26/195 技術管理 有沒有觀察過,決定的話語權通常落在誰身上? Stakeholder ? Product Owner ? Q

Slide 27

Slide 27 text

27/195 技術管理 有沒有觀察過,決定的話語權通常落在誰身上? Stakeholder ? Product Owner ? Q 隕石開發法 Credit: https://eiki.hatenablog.jp/entry/meteo_fall

Slide 28

Slide 28 text

28/195 技術管理 你認為,一個成功的 ( 敏捷 ) 公司,是誰為公司宣傳來得有力? 高層?基層? Q

Slide 29

Slide 29 text

29/195 技術管理 宣傳 ( 敏捷 ) 成功的公司,他們說的是理論?還是證據? Q

Slide 30

Slide 30 text

30/195 技術管理

Slide 31

Slide 31 text

31/195 技術管理 Credit: https://twitter.com/ronquartel/status/1112830272871923712

Slide 32

Slide 32 text

32/195 技術管理 Credit: https://www.amazon.com/Accelerate-Software-Performing-Technology-Organizations/dp/1942788339

Slide 33

Slide 33 text

33/195 技術管理 宣傳敏捷導入成功的公司,他們說的是理論?還是證據? 營收成長?員工數成長? 人均貢獻?離職流動率? Q 多因素影響下的歸因?

Slide 34

Slide 34 text

34/195 技術管理 當敏捷追求 Customer Value ,大談 User Experience 時,你有什麼想法?或落差? Employee Happiness ?為顧客犧牲了員工?現實的落差? ( 軟體工程師 ) SSD + Screen + Flow > TDD > Value (?) Q

Slide 35

Slide 35 text

35/195 技術管理 大家怎麼分享大規模敏捷的實踐?你的想法是什麼? Q 100 人? 200 人? 300 人?

Slide 36

Slide 36 text

36/195 技術管理 Credit: https://www.agilest.org/scaled-agile/scrum-of-scrums/ Scrum of Scrum of Scrums

Slide 37

Slide 37 text

37/195 技術管理 SAFe Credit: https://www.scaledagileframework.com/

Slide 38

Slide 38 text

38/195 技術管理 Credit: https://www.agilest.org/scaled-agile/scrum-of-scrums/ Credit: https://www.scaledagileframework.com/

Slide 39

Slide 39 text

39/195 技術管理 敏捷軟體開發宣言 個人與互動 > 流程與工具 可用的軟體 > 詳盡的文件 客戶合作 > 合約協商 回應變化 > 遵循計畫 若我們回頭參照《敏捷軟體開發宣言》 Credit: https://www.agilest.org/scaled-agile/scrum-of-scrums/ Credit: https://www.scaledagileframework.com/

Slide 40

Slide 40 text

40/195 技術管理 敏捷軟體開發宣言 個人與互動 > 流程與工具 可用的軟體 > 詳盡的文件 客戶合作 > 合約協商 回應變化 > 遵循計畫 Credit: https://www.agilest.org/scaled-agile/scrum-of-scrums/ Credit: https://www.scaledagileframework.com/

Slide 41

Slide 41 text

41/195 技術管理 敏捷軟體開發宣言 個人與互動 > 流程與工具 可用的軟體 > 詳盡的文件 客戶合作 > 合約協商 回應變化 > 遵循計畫 這種結構是組織成長不得不的結果? Credit: https://www.agilest.org/scaled-agile/scrum-of-scrums/ Credit: https://www.scaledagileframework.com/

Slide 42

Slide 42 text

42/195 技術管理 自組織 阿米巴 Credit: https://www.archimetric.com/%E4%BB%80%E9%BA%BC%E6%98%AFscrum%E7%9A%84%E8%87%AA%E7%B5%84%E7%B9%94%E5%9C%98%E9%9A%8A%EF%BC%9F/ Credit: https://zh.codeprj.com/blog/bafe131.html

Slide 43

Slide 43 text

43/195 技術管理 自組織 阿米巴 Credit: https://www.archimetric.com/%E4%BB%80%E9%BA%BC%E6%98%AFscrum%E7%9A%84%E8%87%AA%E7%B5%84%E7%B9%94%E5%9C%98%E9%9A%8A%EF%BC%9F/ Credit: https://zh.codeprj.com/blog/bafe131.html 扁平化 + ≧ 9 ± 2 ! 2020 Scrum Guide ?

Slide 44

Slide 44 text

44/195 技術管理 The Fifth Discipline / 第五項修練 (1990) Credit: https://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization/dp/0385517254

Slide 45

Slide 45 text

45/195 技術管理 Credit: https://achardypm.medium.com/agile-team-organisation-squads-chapters-tribes-and-guilds-80932ace0fdc 觀眾:你怎麼不提 Spotify ?

Slide 46

Slide 46 text

46/195 技術管理 Credit: https://achardypm.medium.com/agile-team-organisation-squads-chapters-tribes-and-guilds-80932ace0fdc

Slide 47

Slide 47 text

47/195 技術管理 Credit: https://achardypm.medium.com/agile-team-organisation-squads-chapters-tribes-and-guilds-80932ace0fdc 現在還在談 Spotify 敏捷模式的趨勢? Spotify 模式是不是敏捷反模式?

Slide 48

Slide 48 text

48/195 技術管理 Pull Request 對 Agile / DevOps 是正模式還是反模式? Q

Slide 49

Slide 49 text

49/195 技術管理 Credit: https://railsware.com/blog/pull-request-review-from-a-railsware-engineers-perspective/

Slide 50

Slide 50 text

50/195 技術管理 Credit: https://wideinfo.org/welcoming-change-whilst-in-the-realm-of-agile-software-development/ Credit: https://software.af.mil/training/devops/ 敏捷 & DevOps :快速交付價值,靈活嚮應變化

Slide 51

Slide 51 text

51/195 技術管理 Credit: https://twitter.com/d_stepanovic/status/1379451260638785536

Slide 52

Slide 52 text

52/195 技術管理 Pipeline ? Flow ? Continuous Integration ? Continuous Delivery ? Interrupt & Wait time Credit: https://twitter.com/d_stepanovic/status/1379451260638785536

Slide 53

Slide 53 text

53/195 技術管理 Pull Request 實際上很常被用於不信任的文化中? Pull Request 是否為 Continuous Integration 中引入了延遲? Credit: https://twitter.com/d_stepanovic/status/1379451260638785536

Slide 54

Slide 54 text

54/195 技術管理 有比較好的解決模式嗎? Credit: https://twitter.com/d_stepanovic/status/1379451260638785536

Slide 55

Slide 55 text

55/195 技術管理 從 Agile / DevOps 角度探討 QA / Testing 的角色? Q

Slide 56

Slide 56 text

56/195 技術管理 Credit: https://software.af.mil/training/devops/

Slide 57

Slide 57 text

57/195 技術管理 Credit: https://software.af.mil/training/devops/ DevOps : Breaking Silos ( 打破壁壘 )

Slide 58

Slide 58 text

58/195 技術管理 Silos ( 壁壘 ) Credit: https://www.slideshare.net/hironoriwashizaki/quality-assuranceagile-quality Credit: https://www.visual-paradigm.com/tw/guide/software-development-process/what-is-a-software-development-lifecycle/

Slide 59

Slide 59 text

59/195 技術管理 Silos ( 壁壘 ) Credit: https://www.slideshare.net/hironoriwashizaki/quality-assuranceagile-quality Credit: https://www.visual-paradigm.com/tw/guide/software-development-process/what-is-a-software-development-lifecycle/ 組織壞味道一: Dev 覺得「測出錯誤」是 QA 的責任?

Slide 60

Slide 60 text

60/195 技術管理 Silos ( 壁壘 ) Credit: https://www.slideshare.net/hironoriwashizaki/quality-assuranceagile-quality Credit: https://www.visual-paradigm.com/tw/guide/software-development-process/what-is-a-software-development-lifecycle/ 組織壞味道二: QA 覺得 Dev 老是產出有瑕疵的程式碼?

Slide 61

Slide 61 text

61/195 技術管理 Silos ( 壁壘 ) Credit: https://www.slideshare.net/hironoriwashizaki/quality-assuranceagile-quality Credit: https://www.visual-paradigm.com/tw/guide/software-development-process/what-is-a-software-development-lifecycle/ 組織壞味道裡,你有聞到推責的氣味嗎? 以個人的角度來論,每個人說的都是 They 的錯?每個人都在浪費生命? 回到資深工程師的定義, Dev 該為產出高品質的程式碼負責,還是推責?

Slide 62

Slide 62 text

62/195 技術管理 Silos ( 壁壘 ) Credit: https://www.slideshare.net/hironoriwashizaki/quality-assuranceagile-quality Credit: https://www.visual-paradigm.com/tw/guide/software-development-process/what-is-a-software-development-lifecycle/ 如果 Dev 不認真對待測試,組織就沒有重視質量的文化

Slide 63

Slide 63 text

63/195 技術管理 Silos ( 壁壘 ) Credit: https://www.slideshare.net/hironoriwashizaki/quality-assuranceagile-quality Credit: https://www.visual-paradigm.com/tw/guide/software-development-process/what-is-a-software-development-lifecycle/ 所以 DevOps 著重在於 ... ?

Slide 64

Slide 64 text

64/195 技術管理 Credit: https://www.mabl.com/blog/shift-left-shift-right-shifting-and-why

Slide 65

Slide 65 text

65/195 技術管理 Automated testing & Continuous Testing Credit: https://www.mabl.com/blog/shift-left-shift-right-shifting-and-why

Slide 66

Slide 66 text

66/195 技術管理 Feature Flags 對 Agile / DevOps 是正模式還是反模式? Q

Slide 67

Slide 67 text

67/195 技術管理 Credit: https://www.slideshare.net/yftzeng/testing-in-production-deploy-on-fridays

Slide 68

Slide 68 text

68/195 技術管理 Credit: https://www.slideshare.net/yftzeng/testing-in-production-deploy-on-fridays 敏捷 & DevOps :快速將價值交付到顧客手上? 預設 Flag 開啟還是關閉,是否變得很重要?

Slide 69

Slide 69 text

69/195 技術管理 Credit: https://www.slideshare.net/yftzeng/testing-in-production-deploy-on-fridays 如果預設開啟,那麼與沒有 Feature Flags 有什麼差別? 還是有的,想一想

Slide 70

Slide 70 text

70/195 技術管理 作為經理或團隊負責人,確保在迭代開始時將所有任務分配給適當的個人。 重要的是每個人都知道他們在迭代中負責什麼。 Q 你覺得呢?

Slide 71

Slide 71 text

71/195 技術管理 好 省 夢點 快

Slide 72

Slide 72 text

72/195 技術管理 好 省 夢點 快

Slide 73

Slide 73 text

73/195 技術管理 Quality Cost Trade-off Speed

Slide 74

Slide 74 text

74/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼?

Slide 75

Slide 75 text

75/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 時程延長 調整範圍 加班 加人 1 2 3 4

Slide 76

Slide 76 text

76/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 時程延長 調整範圍 加班 加人 1 2 3 4 當產品 / 專案有問題時,通常只會有哪些選擇?

Slide 77

Slide 77 text

77/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 時程延長 調整範圍 加班 加人 1 2 3 4 當產品 / 專案有問題時,通常只會有哪些選擇?

Slide 78

Slide 78 text

78/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 時程延長 調整範圍 加班 加人 1 2 3 4 但通常工程師希望選擇的是?

Slide 79

Slide 79 text

79/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 加班 加人 1 2 但通常工程師希望選擇的是? 時程延長 調整範圍 3 4

Slide 80

Slide 80 text

80/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 時程延長 調整範圍 加班 加人 1 2 3 4 一個成熟的敏捷組織或團隊,應該會選擇哪個?

Slide 81

Slide 81 text

81/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 時程延長 減少浪費 加班 加人 1 2 3 5 一個成熟的敏捷組織或團隊,應該會選擇哪個? Credit: http://lukeangel.co/project-management/whats-a-workback-schedule/attachment/waterfall-v-agile-iron-triangle-v03/ Agile Lean 調整範圍 4

Slide 82

Slide 82 text

82/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 時程延長 調整範圍 減少浪費 加班 加人 1 2 3 4 5 其實,你還有第六個選擇!? Agile Lean

Slide 83

Slide 83 text

83/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 時程延長 調整範圍 減少浪費 加班 加人 離職 1 2 3 4 5 6 鄉民:塊陶啊 ~ Agile Lean

Slide 84

Slide 84 text

俗語說:奧客是一時,豬同事是八小時

Slide 85

Slide 85 text

不要想著自己對公司有多重要, 大多數人的一生中唯一遇到《要你別走》的就是體育老師 ( 給我跑起來 ~) ; 會對著你唱《愛我別走》的是海雅谷慕 ( 張震嶽 ) 。 但留下來試著解決也是種選擇 ( 認真 ~)

Slide 86

Slide 86 text

86/195 如何做技術選型決策 技術管理 技術模式 人 事 技術工具 物

Slide 87

Slide 87 text

87/195 技術模式 Credit: https://jaxenter.com/reactive-microservices-scala-akka-130360.html Credit: https://twitter.com/bibryam/status/1026465959417196544 Credit: https://docs.microsoft.com/zh-tw/dotnet/architecture/cloud-native/service-mesh-communication-infrastructure Service Mesh

Slide 88

Slide 88 text

88/195 技術模式

Slide 89

Slide 89 text

89/195 技術模式 充分理解商業的前提下,盡可能高效且低成本的解決商業問題, 甚至預測商業可能的變化而提前進行技術決斷,擴展商業的邊界。 你對系統的瞭解程度,決定了你如何架構這個系統

Slide 90

Slide 90 text

90/195 技術模式 ➊ 架構先決 無視人員、流程只講技術,是耍自傲 架構會影響公司文化、商業擴展;思維更要超越程式碼層次

Slide 91

Slide 91 text

91/195 技術模式 ➋ 沒有完美的架構,只有最適的架構 無視場景只講架構,是耍自殘 若無法舉出架構的缺陷,代表你還無法掌握 盲目套用別人的架構,並不會讓你變得跟他一樣好

Slide 92

Slide 92 text

沒有大公司的命,卻得了大公司的病

Slide 93

Slide 93 text

93/195 技術模式 ➌ 架構是演進的,預想但不過早調優 無視未來只求現有,是耍自閉 兵馬未動,糧草先行,預想下一步,下下一步,甚至下下下一步 ...

Slide 94

Slide 94 text

94/195 技術模式 ➌ 架構是演進的,預想但不過早調優 無視未來只求現有,是耍自閉 兵馬未動,糧草先行,預想下一步,下下一步,甚至下下下一步 ...

Slide 95

Slide 95 text

95/195 Premature optimization is the root of all evil Donald Knuth 過早最佳化是萬惡的根源 技術模式

Slide 96

Slide 96 text

96/195 Premature optimization is the root of all evil Donald Knuth 過早最佳化是萬惡的根源 這句話加上前後文時,解讀會更完整 技術模式

Slide 97

Slide 97 text

97/195 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% Donald Knuth 對於約佔 97% 的些微最佳化,我們應該忽略它們:過早最佳化是萬惡的根源。 剩下關鍵的 3% ,我們則不能放棄最佳化的機會。 技術模式

Slide 98

Slide 98 text

98/195 未剖析找出問題,而在架構或程式展炫技,不僅效能提升有限,還引入更多 Bugs ? 技術模式 Trade-off ( 取捨 ) → Profiling ( 剖析 ) Q

Slide 99

Slide 99 text

99/195 技術模式 某同事堅持最佳化某段函式,最後花了一個月的時間,而該函式最後確實提升了十倍效能。 但事實是如此嗎? 30ms 50ms 200ms 280ms 30ms 5ms 200ms 235ms 10x -16% 前 後

Slide 100

Slide 100 text

100/195 技術模式 你如何思考著擴展的一開始,就立足在良好的基礎上,而沒有過早最佳化? 使之正確,使之清楚,使之簡潔,使之快速。承上順序。 Q

Slide 101

Slide 101 text

禁止在麻瓜面前使用魔法 而我們很有可能就是那個麻瓜,三個月後再讀自己的程式碼

Slide 102

Slide 102 text

102/195 技術模式 網頁軟體工程師遇到效能問題時,最常使用的手段? Q

Slide 103

Slide 103 text

103/195 技術模式 Database Database Applications Applications Web Server Web Server 當網頁效能很差時,通常會 ... ?

Slide 104

Slide 104 text

104/195 技術模式 Database Database Applications Applications Web Server Web Server

Slide 105

Slide 105 text

105/195 技術模式 Database Database Applications Applications Web Server Web Server Applications Cache Applications Cache varnish redis

Slide 106

Slide 106 text

106/195 技術模式 Database Database Applications Applications Web Server Web Server Applications Cache Applications Cache varnish redis Monitoring HA ... Monitoring HA ... 快取穿透 (Cache Penetration) 快取雪崩 (Cache Avalanche) 快取擊穿 (Hotspot Invalid) Cache hit ratio Total request rate Average object size LRU reference age SLO Metrics Side-effects 快取穿透 (Cache Penetration) 快取雪崩 (Cache Avalanche) 快取擊穿 (Hotspot Invalid) Cache hit ratio Total request rate Average object size LRU reference age 99% 99% 99% 99% 99% 99% 99% 99% 97% 95% Infra SLO SLA 前 後

Slide 107

Slide 107 text

107/195 技術模式 網頁軟體工程師遇到效能問題時,第二 (!!) 常使用的手段? Q

Slide 108

Slide 108 text

108/195 技術模式 自從網路產業大談高流量高併發後, Concurrency 變成很多工程師追求的技術挑戰 衍生問題多來自對 Concurrency 的一知半解,還有引發的副作用尚無準備好解決能力 Concurrency 是一系列效能技術,專注於減少等待 (wait time)

Slide 109

Slide 109 text

如果對方案無法提供三個以上可能的問題,代表你還未準備好接受所引入的風險 Ant

Slide 110

Slide 110 text

110/195 在 Java 中, Concurrency 非常棘手困難,所以絕對不要使用它,除非你有一個重大效能問題。 即使這樣,使用最簡單的方法產生你需要的效能,也會因為 Concurrency 很快變得無法管理。 《 On Java 8 》 Bruce Eckel 技術模式

Slide 111

Slide 111 text

111/195 在 Java 中, Concurrency 非常棘手困難,所以絕對不要使用它,除非你有一個重大效能問題。 即使這樣,使用最簡單的方法產生你需要的效能,也會因為 Concurrency 很快變得無法管理。 《 On Java 8 》 Bruce Eckel 技術模式 只有 Java 這樣嗎?

Slide 112

Slide 112 text

112/195 在 Java 中, Concurrency 非常棘手困難,所以絕對不要使用它,除非你有一個重大效能問題。 即使這樣,使用最簡單的方法產生你需要的效能,也會因為 Concurrency 很快變得無法管理。 《 On Java 8 》 Bruce Eckel 技術模式 除錯?剖析?追蹤?教育訓練成本?

Slide 113

Slide 113 text

俗話說:開發一時爽,除錯火葬場

Slide 114

Slide 114 text

114/195 技術模式 網頁軟體工程師遇到效能問題時,第三 (!!) 常使用的手段? Q

Slide 115

Slide 115 text

115/195 技術模式 Database Applications Web Server Applications

Slide 116

Slide 116 text

116/195 技術模式 Database Applications Web Server KeepAlive KeepAlive Connection Pool Applications

Slide 117

Slide 117 text

117/195 技術模式 Database Applications Web Server KeepAlive KeepAlive Connection Pool Max : 200 Use : 100 Applications Use : 100

Slide 118

Slide 118 text

118/195 技術模式 Database Applications Web Server KeepAlive KeepAlive Connection Pool Max : 200 Use : 100 Applications Applications Use : 100 Use : 100

Slide 119

Slide 119 text

119/195 技術模式 Database Applications Web Server KeepAlive KeepAlive Connection Pool Max : 200 Use : 100 Applications Applications Use : 100 Use : 100 Max : 300

Slide 120

Slide 120 text

120/195 技術模式 Database Applications Web Server KeepAlive KeepAlive Connection Pool Max : 200 Use : 100 Applications Applications Use : 100 Use : 100 Max : 300 架構層級的共用變數

Slide 121

Slide 121 text

121/195 技術模式 Database Applications Web Server KeepAlive KeepAlive Connection Pool Max : 200 Use : 100 Applications Applications Use : 100 Use : 100 Max : 300 替代方案?

Slide 122

Slide 122 text

122/195 技術模式 Database Applications Web Server KeepAlive KeepAlive Max : 300 Applications Applications Middleware Connection Pool Max : 300

Slide 123

Slide 123 text

123/195 技術模式 Database Applications Web Server KeepAlive KeepAlive Max : 300 Applications Applications Middleware Connection Pool Max : 300 Monitoring HA ... ….. Metrics Infra Side-effects SLO 99% 99% 99% 99% 99% 99% 99% SLO ? 前 後

Slide 124

Slide 124 text

124/195 技術模式 Latency Memory footprint Trade-off Throughput Performance 三板斧

Slide 125

Slide 125 text

125/195 技術模式 Credit: https://nl.pinterest.com/pin/315463148894955389/ Latency Memory footprint Trade-off Throughput Throughput + Latency Throughput

Slide 126

Slide 126 text

126/195 技術模式 Credit: https://nl.pinterest.com/pin/315463148894955389/ Latency Memory footprint Trade-off Throughput Throughput + Latency Throughput Scale Up vs. Scale Out 的迷思 為何工程師覺得 Scale Out 比較高大上?

Slide 127

Slide 127 text

127/195 技術模式 Credit: https://nl.pinterest.com/pin/315463148894955389/ Latency Memory footprint Trade-off Throughput Throughput + Latency Throughput 「管理 10 台主機」 vs. 「管理 100 台主機」

Slide 128

Slide 128 text

128/195 技術模式 Credit: https://nl.pinterest.com/pin/315463148894955389/ Latency Memory footprint Trade-off Throughput Throughput + Latency Throughput 但沒說的是花了多少錢,反正錢不是出自自己口袋

Slide 129

Slide 129 text

129/195 技術模式 Credit: https://nl.pinterest.com/pin/315463148894955389/ Latency Memory footprint Trade-off Throughput Throughput + Latency Throughput 逆思考:「我從 100 台主機降為 10 台主機,但效能不變」 營運成本↓維護成本↓部署成本↓技術實力↑ Scale Out 比較難還是 Scale In 難?

Slide 130

Slide 130 text

130/195 技術模式 Credit: Systems Performance Enterprise and the Cloud

Slide 131

Slide 131 text

131/195 技術模式 Credit: Local-First Software You Own Your Data, in spite of the Cloud

Slide 132

Slide 132 text

132/195 技術模式 Credit: https://blog.amp.dev/2017/02/28/new-industry-benchmarks-for-mobile-page-speed/

Slide 133

Slide 133 text

133/195 技術模式 Microservices( 微服務 ) 適用場景? Latency Memory footprint Trade-off Throughput Q

Slide 134

Slide 134 text

134/195 技術模式 Credit: https://jaxenter.com/reactive-microservices-scala-akka-130360.html Latency Memory footprint Trade-off Throughput

Slide 135

Slide 135 text

135/195 技術模式 Credit: https://www.appcentrica.com/the-rise-of-microservices/ Monitoring ... Metrics Side-effects Infra ... ...

Slide 136

Slide 136 text

136/195 技術模式 Microservices( 微服務 ) 在企業組織中的適用場景? Credit: https://www.strategyzer.com/blog/posts/2015/7/2/6-roles-position-your-company-for-future Q

Slide 137

Slide 137 text

137/195 技術模式 CTO :「我們應該拆解成 6 個 Microservices 。」 我:『你有 6 個團隊,而且彼此討厭對方』 CTO :「你怎麼知道?」 Silos

Slide 138

Slide 138 text

138/195 技術模式 設計系統的架構受制於產生這些設計的組織的溝通結構 康威定律

Slide 139

Slide 139 text

139/195 技術模式 設計系統的架構受制於產生這些設計的組織的溝通結構 康威定律 建議何時拆微服務?

Slide 140

Slide 140 text

140/195 技術模式 邊際交付成本 ≧ 整體維護成本 何時拆微服務

Slide 141

Slide 141 text

141/195 技術模式 邊際交付成本 ≧ 整體維護成本 何時拆微服務 邊際交付成本 整體維護成本

Slide 142

Slide 142 text

142/195 技術模式 Cloud Native( 雲原生 ) 適用場景? Latency Memory footprint Trade-off Throughput Q

Slide 143

Slide 143 text

143/195 技術模式 Credit: https://twitter.com/bibryam/status/1026465959417196544 Latency Memory footprint Trade-off Throughput

Slide 144

Slide 144 text

144/195 技術模式 FaaS( 函式即服務 ) 適用場景? Latency Memory footprint Trade-off Throughput Q

Slide 145

Slide 145 text

145/195 技術模式 Serverless ≠ FaaS Serverless FaaS

Slide 146

Slide 146 text

146/195 技術模式 Credit: https://specify.io/concepts/serverless-baas-faas Latency Memory footprint Trade-off Throughput

Slide 147

Slide 147 text

147/195 技術模式 Availability Partition Tolerance Trade-off Consistency

Slide 148

Slide 148 text

148/195 技術模式 Availability Partition Tolerance Trade-off Consistency Enforced consistency HA consistency Eventual consistency PostgreSQL, MySQL, ... MongoDB, HBase, Redis, ... Dynamo, Cassandra, ...

Slide 149

Slide 149 text

149/195 技術模式 Credit: https://adtmag.com/articles/2016/08/16/nosql-toolbox.aspx

Slide 150

Slide 150 text

150/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf )

Slide 151

Slide 151 text

151/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf )

Slide 152

Slide 152 text

152/195 技術模式 Credit: https://thenewstack.io/selecting-the-right-database-for-your-microservices/

Slide 153

Slide 153 text

153/195 技術模式 Credit: https://thenewstack.io/selecting-the-right-database-for-your-microservices/ Throughput 與 Latency 雙料的架構?

Slide 154

Slide 154 text

154/195 技術模式 Credit: https://www.researchgate.net/figure/The-Lambda-Architecture-Adapted-from-20_fig3_319458470 Lambda architecture

Slide 155

Slide 155 text

155/195 技術模式 Credit: https://www.researchgate.net/figure/The-Lambda-Architecture-Adapted-from-20_fig3_319458470 Lambda architecture Throughput Latency

Slide 156

Slide 156 text

156/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴?

Slide 157

Slide 157 text

157/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴? 機房的頻寬有限且昂貴

Slide 158

Slide 158 text

158/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴? 以 CPU 為例 雲服務的 Scale Up : CPU 1→2→8→32→... 不夠還可以 Scale Out ,服務實例 1→2→3→4→...

Slide 159

Slide 159 text

159/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴? 雲服務的頻寬?

Slide 160

Slide 160 text

160/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴? Gzip/Deflate & MessagePack & FlatBuffers & ProtoBuf & ...

Slide 161

Slide 161 text

161/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴? 利用 CPU 換 Bandwidth

Slide 162

Slide 162 text

162/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴? 情境:可是我效能測試時,不開壓縮時表現較好

Slide 163

Slide 163 text

163/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴? 回到資源約束, CPU 容易擴充,還是 Bandwidth 容易?

Slide 164

Slide 164 text

164/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴? 測試的量體?以及環境 (Local / Testing / Stage / Production) ?

Slide 165

Slide 165 text

165/195 技術模式 Processing Intensive Capacity CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive OLTP (Write) OLAP (Read) Data warehouse Throughput Latency Memory footprint Service-level agreement Bond Performance Quality Cost Credit: ModernWeb - Modern Web Architecture Design Journey ( https://s.itho.me/modernweb/2017/day2/201-K1-Ant.pdf ) 你覺得何項資源最昂貴? Testing in Production ? 程式碼層次的除錯或可在測試環境重現,但架構層次的 ...

Slide 166

Slide 166 text

166/195 技術模式 何時資料庫才應該考慮 Sharding ? Q

Slide 167

Slide 167 text

167/195 技術模式 何時該考慮 Sharding ? Credit: https://aws.amazon.com/tw/blogs/startups/distributed-data-stores-for-mere-mortals/

Slide 168

Slide 168 text

168/195 技術模式 是不是當資料庫資料不再適合存於記憶體中時,或者遇到 CPU Bound 時? Intensive CPU intensive Memory intensive Storage/IO intensive Bandwidth intensive Credit: https://aws.amazon.com/tw/blogs/startups/distributed-data-stores-for-mere-mortals/

Slide 169

Slide 169 text

169/195 技術模式 在複雜多變的趨勢前,仍有基本的參考原則 Latency Memory footprint Trade-off Throughput Quality Cost Trade-off Speed Availability Partition Tolerance Trade-off Consistency

Slide 170

Slide 170 text

170/195 如何做技術選型決策 技術工具 物 技術管理 人 技術模式 事

Slide 171

Slide 171 text

171/195 技術工具 Credit: https://adtmag.com/articles/2016/08/16/nosql-toolbox.aspx Availability Partition Tolerance Trade-off Consistency

Slide 172

Slide 172 text

172/195 技術工具 Latency Memory footprint Trade-off Throughput 程式語言的發展趨勢?

Slide 173

Slide 173 text

173/195 技術工具 Latency Memory footprint Trade-off Throughput 程式語言的發展趨勢? 以前常看到 C10K / C100K ?現在? 系統同時承載 10K / 100K 的請求數量

Slide 174

Slide 174 text

174/195 技術工具 .Net 4.5 (2012-08), … Ruby 2.1 (2013-12), 2.2, … Java 8 (2014-03), 9, 10, 11, … Go 1.4 (2014-12), 1.5, 1.6, … Latency Memory footprint Trade-off Throughput ??? 2014-11

Slide 175

Slide 175 text

175/195 技術工具 Credit: https://trends.google.com.tw/trends/explore?date=all&q=IoT .Net 4.5 (2012-08), … Ruby 2.1 (2013-12), 2.2, … Java 8 (2014-03), 9, 10, 11, … Go 1.4 (2014-12), 1.5, 1.6, … Latency Memory footprint Trade-off Throughput 2014-11

Slide 176

Slide 176 text

176/195 技術工具 Credit: https://trends.google.com.tw/trends/explore?date=all&q=IoT .Net 4.5 (2012-08), … Ruby 2.1 (2013-12), 2.2, … Java 8 (2014-03), 9, 10, 11, … Go 1.4 (2014-12), 1.5, 1.6, … Latency Memory footprint Trade-off Throughput 2014-11

Slide 177

Slide 177 text

177/195 技術工具 Credit: https://trends.google.com.tw/trends/explore?date=all&q=IoT .Net 4.5 (2012-08), … Ruby 2.1 (2013-12), 2.2, … Java 8 (2014-03), 9, 10, 11, … Go 1.4 (2014-12), 1.5, 1.6, … Latency Memory footprint Trade-off Throughput IoT 的應用,不再強調同時承載量,而是回應速度 2014-11

Slide 178

Slide 178 text

178/195 技術工具 Credit: https://trends.google.com.tw/trends/explore?date=all&q=IoT .Net 4.5 (2012-08), … Ruby 2.1 (2013-12), 2.2, … Java 8 (2014-03), 9, 10, 11, … Go 1.4 (2014-12), 1.5, 1.6, … Latency Memory footprint Trade-off Throughput 雲時代, Scale Out 可以比較容易從 1→10→100→1,000,000 但 Scale Up 有天花板 (CPU 1→10→100→1,000,000 ?)

Slide 179

Slide 179 text

179/195 技術工具 ???

Slide 180

Slide 180 text

180/195 技術工具 Credit: https://trends.google.com.tw/trends/explore?date=all&q=IoT Credit: https://trends.google.com.tw/trends/explore?date=all&q=Edge%20Computing

Slide 181

Slide 181 text

181/195 技術工具 Credit: https://trends.google.com.tw/trends/explore?date=all&q=High%20Throughput,Low%20Latency .Net 4.5 (2012-08), … Ruby 2.1 (2013-12), 2.2, … Java 8 (2014-03), 9, 10, 11, … Go 1.4 (2014-12), 1.5, 1.6, … Latency Memory footprint Trade-off Throughput 2016-05

Slide 182

Slide 182 text

182/195 Function Constraints Trade-off Form 技術工具

Slide 183

Slide 183 text

183/195 技術工具 人力數量 經驗與價格水平 教育市場 訓練成本 特定領域 成熟度 第三方支持度 法遵 / 合規 ... ... ... 選擇何程式語言?工具?

Slide 184

Slide 184 text

184/195 技術工具 Dev Ops Sec Dev Ops Reg Dev Ops Security Regulation (License / GDPR / ...)

Slide 185

Slide 185 text

185/195 技術工具 Credit: https://www.linkedin.com/pulse/agile-scrum-gdpr-ruud-van-driel-cissp/

Slide 186

Slide 186 text

186/195 技術工具 Credit: https://owasp.org/www-project-appsec-pipeline/#tab=Pipeline_Design_Patterns

Slide 187

Slide 187 text

187/195 Elasticsearch / Kibana 的軟體授權為何?是否符點貴公司商業利益? 技術工具 Q

Slide 188

Slide 188 text

188/195 Elastic 7.11 版本之後, Elasticsearch 與 Kibana 的自由開放源碼授權, 將從 Apache 2.0 變為 SSPL (Server Side Public License) 與 Elastic License 雙重授權模式。 技術工具 Credit: https://blog.gcos.me/post/2021-02-06_opensource-is-business-model-or-not/

Slide 189

Slide 189 text

189/195 MongoDB 的軟體授權為何?是否符點貴公司商業利益? 技術工具 Q

Slide 190

Slide 190 text

190/195 MongoDB 從 2018-2019 年時,將資料庫產品的授權從 AGPL 3.0 轉變為 SSPL 技術工具 Credit: https://blog.gcos.me/post/2021-02-06_opensource-is-business-model-or-not/

Slide 191

Slide 191 text

191/195 技術工具 Credit: https://trends.google.com.tw/trends/explore?date=all&q=3D%20Printing

Slide 192

Slide 192 text

192/195 技術工具 Credit: https://trends.google.com.tw/trends/explore?date=all&q=3D%20Printing 起步到白熱化 ???

Slide 193

Slide 193 text

193/195 技術工具 Current Assignment Data Unavailable, 5,569,349 (2013-10-29 到期 ) Assigned to Stratasys, 5,587,913 (2013-12-14 到期 ) Assigned to DTM Corporation, 5,597,589 (2014-01-28 到期 ) Current Assignment Data Unavailable, 5,609,812 (2014-03-11 到期 ) Current Assignment Data Unavailable, 5,609,813 (2014-03-11 到期 ) Assigned to 3D Systems, 5,610,824 (2014-03-11 到期 ) Assigned to Stratasys, 5,503,785 (2014-06-02 到期 ) Current Assignment Data Unavailable, 5,637,169 (2014-06-10 到期 ) Assigned to DTM Corporation, 5,639,070 (2014-06-17 到期 ) Assigned to 3D Systems, 5,494,618 (2014-06-27 到期 ) Current Assignment Data Unavailable, 5,651,934 (2014-07-29 到期 ) Assigned to Jerry Zucker, 5,555,176 (2014-10-19 到期 ) Assigned to Jerry Zucker, 5,572,431 (2014-10-19 到期 ) Assigned to University of Southern California, 5,529,471 (2015-02-03 到期 ) Assigned to DTM Corporation, 5,733,497 (2015-03-20 到期 ) Assigned to 3D Systems, 5,762,856 (2015-06-09 到期 ) ... 3D 列印最主要的專利到期,包括, ♫ 選擇性雷射燒結 (selective sintering) 。 ♫ 光固化成形法 (stereolithography) 。 Credit: https://www.techdirt.com/articles/20140530/06531127408/120-smartphone-patent-tax-patent-royalties-cost-more-than-actual-hardware-your-phone.shtml

Slide 194

Slide 194 text

194/195 從專業到商業

Slide 195

Slide 195 text

[email protected] https://www.facebook.com/yftzeng.tw https://twitter.com/yftzeng 曾義峰 (Ant)