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

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









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

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

?
1.有需求,再引入

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

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

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

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

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

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

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

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

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

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

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

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

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

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

?
5.先驗(yàn)證后使用

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

驗(yàn)證后,才有說(shuō)服力,用著更放心。

?

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