Upgrade to Pro — share decks privately, control downloads, hide ads and more …

重新想像:如何做技術選型決策 / 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. 2/195 曾義峰 (aka Ant) ➔ TGO (Top Geeks' Organization) Networks

    創始委員及現任學習委員 ➔ 臺灣資安社群 CHROOT 成員 ➔ 曾任資安顧問及電子票證公司顧問 ➔ 前 LeadBest Consulting Group 首席執行顧問 ➔ 開源人年會 (COSCUP) 2009 / 2012 / 2020 講師 ➔ 臺灣駭客年會 (HITCON) 2008 及 2009 講師 ➔ 臺灣 Modern Web 2015 ~ 2020 講師
  2. 4/195 Security (Hacker) Law (Intellectual Property) Technology (Software Dev.) 著作權法

    商標權法 專利權法 自由開放源碼授權 ... 曾於英業達及廣達電腦等 教授自由軟體授權相關課程 CTO 技術總監 總工程師 技術顧問 CHROOT 成員 台灣駭客年會兩屆講師
  3. 23/195 技術管理 有沒有觀察過,新版 Scrum Guides 2020 (11 月 ) 推出時,分享的人是哪些人?

    Q 老闆 / 主管 / PM / PO / 顧問 ( 管理 or 技術 ) / 基層 / 接案?
  4. 34/195 技術管理 當敏捷追求 Customer Value ,大談 User Experience 時,你有什麼想法?或落差? Employee

    Happiness ?為顧客犧牲了員工?現實的落差? ( 軟體工程師 ) SSD + Screen + Flow > TDD > Value (?) Q
  5. 39/195 技術管理 敏捷軟體開發宣言 個人與互動 > 流程與工具 可用的軟體 > 詳盡的文件 客戶合作

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

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

    > 合約協商 回應變化 > 遵循計畫 這種結構是組織成長不得不的結果? Credit: https://www.agilest.org/scaled-agile/scrum-of-scrums/ Credit: https://www.scaledagileframework.com/
  8. 52/195 技術管理 Pipeline ? Flow ? Continuous Integration ? Continuous

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

    中引入了延遲? Credit: https://twitter.com/d_stepanovic/status/1379451260638785536
  10. 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 該為產出高品質的程式碼負責,還是推責?
  11. 76/195 技術管理 Quality Cost Trade-off Speed 當產品 / 專案有問題時,通常我們的選擇有什麼? 時程延長

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

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

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

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

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

    調整範圍 減少浪費 加班 加人 離職 1 2 3 4 5 6 鄉民:塊陶啊 ~ Agile Lean
  18. 95/195 Premature optimization is the root of all evil Donald

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

    Knuth 過早最佳化是萬惡的根源 這句話加上前後文時,解讀會更完整 技術模式
  20. 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% ,我們則不能放棄最佳化的機會。 技術模式
  21. 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 前 後
  22. 118/195 技術模式 Database Applications Web Server KeepAlive KeepAlive Connection Pool

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

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

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

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

    300 Applications Applications Middleware Connection Pool Max : 300
  27. 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 ? 前 後
  28. 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 比較高大上?
  29. 128/195 技術模式 Credit: https://nl.pinterest.com/pin/315463148894955389/ Latency Memory footprint Trade-off Throughput Throughput

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

    + Latency Throughput 逆思考:「我從 100 台主機降為 10 台主機,但效能不變」 營運成本↓維護成本↓部署成本↓技術實力↑ Scale Out 比較難還是 Scale In 難?
  31. 137/195 技術模式 CTO :「我們應該拆解成 6 個 Microservices 。」 我:『你有 6

    個團隊,而且彼此討厭對方』 CTO :「你怎麼知道?」 Silos
  32. 148/195 技術模式 Availability Partition Tolerance Trade-off Consistency Enforced consistency HA

    consistency Eventual consistency PostgreSQL, MySQL, ... MongoDB, HBase, Redis, ... Dynamo, Cassandra, ...
  33. 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 )
  34. 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 )
  35. 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 ) 你覺得何項資源最昂貴?
  36. 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 ) 你覺得何項資源最昂貴? 機房的頻寬有限且昂貴
  37. 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→...
  38. 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 ) 你覺得何項資源最昂貴? 雲服務的頻寬?
  39. 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 & ...
  40. 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
  41. 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 ) 你覺得何項資源最昂貴? 情境:可是我效能測試時,不開壓縮時表現較好
  42. 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 容易?
  43. 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) ?
  44. 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 ? 程式碼層次的除錯或可在測試環境重現,但架構層次的 ...
  45. 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/
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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 ?)
  51. 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
  52. 184/195 技術工具 Dev Ops Sec Dev Ops Reg Dev Ops

    Security Regulation (License / GDPR / ...)
  53. 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/
  54. 190/195 MongoDB 從 2018-2019 年時,將資料庫產品的授權從 AGPL 3.0 轉變為 SSPL 技術工具

    Credit: https://blog.gcos.me/post/2021-02-06_opensource-is-business-model-or-not/
  55. 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