$30 off During Our Annual Pro Sale. View Details »

重新想像:如何做技術選型決策 / Rethinking : Technical Decision

Yi-Feng Tzeng
September 28, 2022

重新想像:如何做技術選型決策 / Rethinking : Technical Decision

《技術管理者論壇:商業與技術的平衡》

【主題】重新想像:如何做技術選型決策

技術選型是個既『成熟』又『新鮮』的老話題。成熟的是網路充斥著各種資訊;新鮮的是技術每年推陳出新,總會帶來新變化。本場次會以全新有趣又直擊靈魂的問題引導方式,與大家一同深入技術選型的眾多領域。

這趟旅程未必有答案,畢竟複雜的問題沒有唯一解,但我提出的問題會嘗試讓你與自己對話,就請跟著我一起試著顛覆既有的認知,並重新回到更深處的思考本質。

議題包括但不限於,

➊ 只著眼於「技術」的技術選型,常以失敗告終,為何?

➋ 老技術不好嗎?新技術不行嗎?永遠會面對的兩難議題。

➌ Agile & DevOps 對技術選型與管理的影響,以及為何有些技術人討厭與排斥?

➍ 引入 Cache 不好嗎?套用 Microservices 不好嗎?轉為 Sharding 不好嗎?資料庫怎麼選?選型的本質探討。

➎ 技術人討厭 OKR?或許我們換個角度,不僅會樂於採用還可讓解決問題的實力大增。

Yi-Feng Tzeng

September 28, 2022
Tweet

More Decks by Yi-Feng Tzeng

Other Decks in Technology

Transcript

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

  2. 2/195 曾義峰 (aka Ant) ➔ TGO (Top Geeks' Organization) Networks

    創始委員及現任學習委員 ➔ 臺灣資安社群 CHROOT 成員 ➔ 曾任資安顧問及電子票證公司顧問 ➔ 前 LeadBest Consulting Group 首席執行顧問 ➔ 開源人年會 (COSCUP) 2009 / 2012 / 2020 講師 ➔ 臺灣駭客年會 (HITCON) 2008 及 2009 講師 ➔ 臺灣 Modern Web 2015 ~ 2020 講師
  3. 3/195 從專業到商業

  4. 4/195 Security (Hacker) Law (Intellectual Property) Technology (Software Dev.) 著作權法

    商標權法 專利權法 自由開放源碼授權 ... 曾於英業達及廣達電腦等 教授自由軟體授權相關課程 CTO 技術總監 總工程師 技術顧問 CHROOT 成員 台灣駭客年會兩屆講師
  5. 這趟旅程未必有答案,但會嘗試讓你與自己對話

  6. 重新 想像

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

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

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

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

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

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

  13. 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

  14. 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
  15. 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)
  16. 16/195 技術管理 Management 管理 Leadership 領導 是不是這樣比較合理呢?

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

  18. 敏捷

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

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

  22. 22/195 技術管理 有沒有觀察過,支持與反對敏捷的人,其職位或職業分布為何? 老闆 / 主管 / PM / PO

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

    Q 老闆 / 主管 / PM / PO / 顧問 ( 管理 or 技術 ) / 基層 / 接案?
  24. 如果與我們息息相關,為何我們表現的毫不在乎 透明、開放、回顧、衝刺 ( 上下一心 )

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

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

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

    Credit: https://eiki.hatenablog.jp/entry/meteo_fall
  28. 28/195 技術管理 你認為,一個成功的 ( 敏捷 ) 公司,是誰為公司宣傳來得有力? 高層?基層? Q

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

  30. 30/195 技術管理

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

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

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

  34. 34/195 技術管理 當敏捷追求 Customer Value ,大談 User Experience 時,你有什麼想法?或落差? Employee

    Happiness ?為顧客犧牲了員工?現實的落差? ( 軟體工程師 ) SSD + Screen + Flow > TDD > Value (?) Q
  35. 35/195 技術管理 大家怎麼分享大規模敏捷的實踐?你的想法是什麼? Q 100 人? 200 人? 300 人?

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

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

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

  39. 39/195 技術管理 敏捷軟體開發宣言 個人與互動 > 流程與工具 可用的軟體 > 詳盡的文件 客戶合作

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

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

    > 合約協商 回應變化 > 遵循計畫 這種結構是組織成長不得不的結果? Credit: https://www.agilest.org/scaled-agile/scrum-of-scrums/ Credit: https://www.scaledagileframework.com/
  42. 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

  43. 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 ?
  44. 44/195 技術管理 The Fifth Discipline / 第五項修練 (1990) Credit: https://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization/dp/0385517254

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

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

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

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

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

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

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

  52. 52/195 技術管理 Pipeline ? Flow ? Continuous Integration ? Continuous

    Delivery ? Interrupt & Wait time Credit: https://twitter.com/d_stepanovic/status/1379451260638785536
  53. 53/195 技術管理 Pull Request 實際上很常被用於不信任的文化中? Pull Request 是否為 Continuous Integration

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

  55. 55/195 技術管理 從 Agile / DevOps 角度探討 QA / Testing

    的角色? Q
  56. 56/195 技術管理 Credit: https://software.af.mil/training/devops/

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

    )
  58. 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/

  59. 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 的責任?
  60. 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 老是產出有瑕疵的程式碼?
  61. 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 該為產出高品質的程式碼負責,還是推責?
  62. 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 不認真對待測試,組織就沒有重視質量的文化
  63. 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 著重在於 ... ?
  64. 64/195 技術管理 Credit: https://www.mabl.com/blog/shift-left-shift-right-shifting-and-why

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

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

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

  68. 68/195 技術管理 Credit: https://www.slideshare.net/yftzeng/testing-in-production-deploy-on-fridays 敏捷 & DevOps :快速將價值交付到顧客手上? 預設 Flag

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    調整範圍 減少浪費 加班 加人 離職 1 2 3 4 5 6 鄉民:塊陶啊 ~ Agile Lean
  84. 俗語說:奧客是一時,豬同事是八小時

  85. 不要想著自己對公司有多重要, 大多數人的一生中唯一遇到《要你別走》的就是體育老師 ( 給我跑起來 ~) ; 會對著你唱《愛我別走》的是海雅谷慕 ( 張震嶽 )

    。 但留下來試著解決也是種選擇 ( 認真 ~)
  86. 86/195 如何做技術選型決策 技術管理 技術模式 人 事 技術工具 物

  87. 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

  88. 88/195 技術模式

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

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

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

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

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

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

  95. 95/195 Premature optimization is the root of all evil Donald

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

    Knuth 過早最佳化是萬惡的根源 這句話加上前後文時,解讀會更完整 技術模式
  97. 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% ,我們則不能放棄最佳化的機會。 技術模式
  98. 98/195 未剖析找出問題,而在架構或程式展炫技,不僅效能提升有限,還引入更多 Bugs ? 技術模式 Trade-off ( 取捨 ) →

    Profiling ( 剖析 ) Q
  99. 99/195 技術模式 某同事堅持最佳化某段函式,最後花了一個月的時間,而該函式最後確實提升了十倍效能。 但事實是如此嗎? 30ms 50ms 200ms 280ms 30ms 5ms

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

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

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

  103. 103/195 技術模式 Database Database Applications Applications Web Server Web Server

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

  105. 105/195 技術模式 Database Database Applications Applications Web Server Web Server

    Applications Cache Applications Cache varnish redis
  106. 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 前 後
  107. 107/195 技術模式 網頁軟體工程師遇到效能問題時,第二 (!!) 常使用的手段? Q

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

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

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

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

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

    On Java 8 》 Bruce Eckel 技術模式 除錯?剖析?追蹤?教育訓練成本?
  113. 俗話說:開發一時爽,除錯火葬場

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

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

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

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

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

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

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

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

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

    300 Applications Applications Middleware Connection Pool Max : 300
  123. 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 ? 前 後
  124. 124/195 技術模式 Latency Memory footprint Trade-off Throughput Performance 三板斧

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

    + Latency Throughput
  126. 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 比較高大上?
  127. 127/195 技術模式 Credit: https://nl.pinterest.com/pin/315463148894955389/ Latency Memory footprint Trade-off Throughput Throughput

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

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

    + Latency Throughput 逆思考:「我從 100 台主機降為 10 台主機,但效能不變」 營運成本↓維護成本↓部署成本↓技術實力↑ Scale Out 比較難還是 Scale In 難?
  130. 130/195 技術模式 Credit: Systems Performance Enterprise and the Cloud

  131. 131/195 技術模式 Credit: Local-First Software You Own Your Data, in

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

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

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

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

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

  137. 137/195 技術模式 CTO :「我們應該拆解成 6 個 Microservices 。」 我:『你有 6

    個團隊,而且彼此討厭對方』 CTO :「你怎麼知道?」 Silos
  138. 138/195 技術模式 設計系統的架構受制於產生這些設計的組織的溝通結構 康威定律

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

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

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

  142. 142/195 技術模式 Cloud Native( 雲原生 ) 適用場景? Latency Memory footprint

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

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

    Throughput Q
  145. 145/195 技術模式 Serverless ≠ FaaS Serverless FaaS

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

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

  148. 148/195 技術模式 Availability Partition Tolerance Trade-off Consistency Enforced consistency HA

    consistency Eventual consistency PostgreSQL, MySQL, ... MongoDB, HBase, Redis, ... Dynamo, Cassandra, ...
  149. 149/195 技術模式 Credit: https://adtmag.com/articles/2016/08/16/nosql-toolbox.aspx

  150. 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 )
  151. 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 )
  152. 152/195 技術模式 Credit: https://thenewstack.io/selecting-the-right-database-for-your-microservices/

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

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

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

  156. 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 ) 你覺得何項資源最昂貴?
  157. 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 ) 你覺得何項資源最昂貴? 機房的頻寬有限且昂貴
  158. 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→...
  159. 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 ) 你覺得何項資源最昂貴? 雲服務的頻寬?
  160. 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 & ...
  161. 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
  162. 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 ) 你覺得何項資源最昂貴? 情境:可是我效能測試時,不開壓縮時表現較好
  163. 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 容易?
  164. 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) ?
  165. 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 ? 程式碼層次的除錯或可在測試環境重現,但架構層次的 ...
  166. 166/195 技術模式 何時資料庫才應該考慮 Sharding ? Q

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

  168. 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/
  169. 169/195 技術模式 在複雜多變的趨勢前,仍有基本的參考原則 Latency Memory footprint Trade-off Throughput Quality Cost

    Trade-off Speed Availability Partition Tolerance Trade-off Consistency
  170. 170/195 如何做技術選型決策 技術工具 物 技術管理 人 技術模式 事

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

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

  173. 173/195 技術工具 Latency Memory footprint Trade-off Throughput 程式語言的發展趨勢? 以前常看到 C10K

    / C100K ?現在? 系統同時承載 10K / 100K 的請求數量
  174. 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
  175. 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
  176. 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
  177. 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
  178. 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 ?)
  179. 179/195 技術工具 ???

  180. 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

  181. 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
  182. 182/195 Function Constraints Trade-off Form 技術工具

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

    / 合規 ... ... ... 選擇何程式語言?工具?
  184. 184/195 技術工具 Dev Ops Sec Dev Ops Reg Dev Ops

    Security Regulation (License / GDPR / ...)
  185. 185/195 技術工具 Credit: https://www.linkedin.com/pulse/agile-scrum-gdpr-ruud-van-driel-cissp/

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

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

  188. 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/
  189. 189/195 MongoDB 的軟體授權為何?是否符點貴公司商業利益? 技術工具 Q

  190. 190/195 MongoDB 從 2018-2019 年時,將資料庫產品的授權從 AGPL 3.0 轉變為 SSPL 技術工具

    Credit: https://blog.gcos.me/post/2021-02-06_opensource-is-business-model-or-not/
  191. 191/195 技術工具 Credit: https://trends.google.com.tw/trends/explore?date=all&q=3D%20Printing

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

  193. 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
  194. 194/195 從專業到商業

  195. yftzeng@gmail.com https://www.facebook.com/yftzeng.tw https://twitter.com/yftzeng 曾義峰 (Ant)