如何做好技術(shù)選型

作者:xcbeyond
瘋狂源自夢想,技術(shù)成就輝煌!微信公眾號:《程序猿技術(shù)大咖》號主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗,樂于技術(shù)輸出、分享,現(xiàn)階段從事微服務(wù)架構(gòu)項目的研發(fā)工作,涉及架構(gòu)設(shè)計、技術(shù)選型、業(yè)務(wù)研發(fā)等工作。對于Java、微服務(wù)、數(shù)據(jù)庫、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗。 









  至于一個技術(shù)框架該怎么用,它適用于什么場景,筆者建議可以直接閱讀官方或?qū)?yīng)的github上的文檔,有需要時還可以閱讀下關(guān)注點的源碼,這樣對正確的理解它,是很有必要的,畢竟官方發(fā)布的東西是相對權(quán)威的,其他地方的資料或許存在片面性,對大家的使用、理解存在一定的誤導(dǎo)。

在軟件開發(fā)領(lǐng)域,幾乎每天都有新的技術(shù)框架誕生、更新,一些新的概念更是層出不窮,技術(shù)選型時,難免讓人無從抉擇。對于技術(shù)選型,我個人有以下幾點建議:

?
1.有需求,再引入

在語言、技術(shù)架構(gòu)豐富的今天,各類組件/技術(shù)很多很多,但并不意味著所有的都應(yīng)該引入你的項目,倘若單純?yōu)榱烁采w全技術(shù)?;蚪M件而全部引入,這將是一種很不明智的選擇。后續(xù)將會成為你項目的累贅,讓你苦不堪言。

只要你記住這六個字:“有需求,再引入”,就OK了。伴隨著項目體系架構(gòu)的完善、功能的健全,當有某方面的需求時,在逐步考慮是否引入某些技術(shù)組件。

?
2.選擇最熟悉、使用最多的技術(shù)

“一個新項目里最好不要使用超過30%的新技術(shù)”,我覺得這句話是有一定道理的。對于你完全不知道、不了解的技術(shù),你是無法預(yù)估、掌控在使用過程中會出現(xiàn)的任何風(fēng)險,一旦出現(xiàn)問題,短時間內(nèi)解決不了,你將會變得很難堪。

在這里不是說拒絕使用、接觸新技術(shù),新技術(shù)是值得大家去追捧、了解、學(xué)習(xí),一些新技術(shù)在很大程度上能給我們帶來前所未有的利處,解決其他技術(shù)框架解決不了的問題。這里所說的“新技術(shù)”,是指沒有經(jīng)過充分的考察、技術(shù)驗證、存在種種疑惑的技術(shù),而是一味的拿來主義,這樣的風(fēng)險可想而知。

確保選擇的技術(shù),是業(yè)界使用最多的、被大家認可的技術(shù),即使出現(xiàn)了問題,也能應(yīng)對自如。至少在團隊內(nèi)部小范圍是非常認可的。

?
3.強大社區(qū)支撐的技術(shù)

GitHub上star的數(shù)量是一個重要指標,同時參考近年來代碼、文檔、issues等更新頻率,各大技術(shù)博客是否有相關(guān)技術(shù)分享記載,這些都是能夠說明該技術(shù)是否活躍、受歡迎程度、使用人群多少等。

擁有強大社區(qū)支持的技術(shù),在選型后,倘若使用出現(xiàn)疑問、問題、bug等,能夠有地方可提、可修復(fù)、可深究探討,畢竟現(xiàn)在的技術(shù)社區(qū)都是足夠開放的。

慎選個人開源的技術(shù)框架、組件等,里面到底有多少坑,沒幾個人能說清楚的,況且說不定哪天就不復(fù)存在了呢。

?
4.從業(yè)務(wù)、項目規(guī)模出發(fā)

任何技術(shù)的出發(fā)點都是為最終業(yè)務(wù)而服務(wù)的,不同業(yè)務(wù)、不同項目規(guī)模,對技術(shù)的要求指標都是不同的。處于初創(chuàng)期的業(yè)務(wù),選型的基準是相對靈活,畢竟業(yè)務(wù)相對簡單,支撐業(yè)務(wù)不是很大,只要夠用、開發(fā)效率足夠高就好。處于復(fù)雜業(yè)務(wù)而重構(gòu)的項目,選型就需謹慎,往往伴隨著一些復(fù)雜需求誕生、規(guī)模大小的不確定性,不得不考慮選型技術(shù)可能伴隨著一些小修小補或者螺旋式上升的重構(gòu),則需選型便于適配、切換、替換,耦合度低的技術(shù)。

正因為技術(shù)選型和業(yè)務(wù)相關(guān),我們能夠觀察到一些很明顯的現(xiàn)象:新技術(shù)往往被早期創(chuàng)業(yè)團隊或大公司的新興業(yè)務(wù)使用;中大型公司的核心業(yè)務(wù)則更傾向于用一些穩(wěn)定了幾年的技術(shù);一個公司如果長期使用一種技術(shù),就會傾向于一直使用下去,甚至連版本都不更新的使用下去。

學(xué)會從業(yè)務(wù)端思考。首先我們需要充分地理解業(yè)務(wù),理解用戶需求,理解當下需要解決的首要問題,以及可能的風(fēng)險有哪些,再將目標進行分解,進行具體的技術(shù)選型、模型設(shè)計、架構(gòu)設(shè)計。

?
5.先驗證后使用

對于未經(jīng)驗證的新技術(shù)、新理念的引入一定要慎重,一定要在全方位的驗證過后,再大規(guī)模的使用,最終確定選型。新技術(shù)、新理念的出現(xiàn),自然有它的誘惑,慎重并不代表保守,技術(shù)總是在不斷前進,擁抱變化本身沒有問題,但是引入不成熟的技術(shù)看似能帶來短期的收益,但是它的風(fēng)險或者是后期的成本可能遠遠大于收益。

驗證后,才有說服力,用著更放心。

?

每種技術(shù)架構(gòu)都有其優(yōu)缺點,存在即合理,不同的業(yè)務(wù)場景下使用不同的應(yīng)用架構(gòu)、技術(shù)框架,不一定說最新的架構(gòu)、技術(shù)就是最適合你的。