技術選型無處不在,你可能需要選擇一種類庫、選擇一個框架、選擇一種語言、選擇一種元件、選擇一個架構模式、選擇一種系統方案……。
那麼如何構建一個決策或思維框架去做技術選型呢?
技術選型
如上圖所示,這是我自己總結出來的一套框架。
我把問題進行了層次結構的劃分,從以下方面考慮:
需求滿足度
:可選項對當前業務或技術需求的滿足情況,以及對未來潛在需求的支援程度,即“功能性”。非功能質量屬性
:效能
:幾乎所有框架或元件都宣稱自己是高效能。高可靠/高可用性
:是否支援叢集或主從結構,是否存在單點故障的可能。可修改性
:是否能對 BUG 快速修復,是否支援擴充套件。安全性
:是否有認證授權、追蹤審計、資料加密等等安全特性。
團隊親合度
:實施需要具體的人員,因此就有了:開發成本
:研發對所選技術的上手程度、掌握情況。運維成本
:運維管理的支撐難易。
注意,以上只是我提供的一種框架,每個維度針對不同場景都是可以改變的。例如,如果對比的是開源元件,那麼你很可能需要增加“成熟度”這一個維度。重要的不是那些條條框框,而是思考的方式。
構建自己的框架
為什麼要做技術選型?在我看來有兩個重要原因:輔助決策、達成共識。透過羅列各種指標,進行綜合性打分,可以減緩過多的主觀情緒對決策的影響。另外,技術選型也是在團隊成員間達成一致的手段,這也是一種協作、協商的機制。
你不需要生搬硬套各種技術選型的框架,更合適的方式應該是你進行“結構化”思考之後得到自己的層次結構圖,這需要一些積累與刻意練習,但並不難。一旦你掌握了結構化的思維方式之後,在處理其它問題上也會遊刃有餘。所以,請你只參考,但構建自己的框架。
(我是凌虛,關注我,無廣告,專注技術,不煽動情緒,歡迎與我交流)