如何做好技術選型
作者:xcbeyond
瘋狂源自夢想,技術成就輝煌!微信公眾號:《程序猿技術大咖》號主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗,樂于技術輸出、分享,現(xiàn)階段從事微服務架構項目的研發(fā)工作,涉及架構設計、技術選型、業(yè)務研發(fā)等工作。對于Java、微服務、數(shù)據(jù)庫、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗。
至于一個技術框架該怎么用,它適用于什么場景,筆者建議可以直接閱讀官方或對應的github上的文檔,有需要時還可以閱讀下關注點的源碼,這樣對正確的理解它,是很有必要的,畢竟官方發(fā)布的東西是相對權威的,其他地方的資料或許存在片面性,對大家的使用、理解存在一定的誤導。
在軟件開發(fā)領域,幾乎每天都有新的技術框架誕生、更新,一些新的概念更是層出不窮,技術選型時,難免讓人無從抉擇。對于技術選型,我個人有以下幾點建議:
?
1.有需求,再引入
在語言、技術架構豐富的今天,各類組件/技術很多很多,但并不意味著所有的都應該引入你的項目,倘若單純?yōu)榱烁采w全技術?;蚪M件而全部引入,這將是一種很不明智的選擇。后續(xù)將會成為你項目的累贅,讓你苦不堪言。
只要你記住這六個字:“有需求,再引入”,就OK了。伴隨著項目體系架構的完善、功能的健全,當有某方面的需求時,在逐步考慮是否引入某些技術組件。
?
2.選擇最熟悉、使用最多的技術
“一個新項目里最好不要使用超過30%的新技術”,我覺得這句話是有一定道理的。對于你完全不知道、不了解的技術,你是無法預估、掌控在使用過程中會出現(xiàn)的任何風險,一旦出現(xiàn)問題,短時間內(nèi)解決不了,你將會變得很難堪。
在這里不是說拒絕使用、接觸新技術,新技術是值得大家去追捧、了解、學習,一些新技術在很大程度上能給我們帶來前所未有的利處,解決其他技術框架解決不了的問題。這里所說的“新技術”,是指沒有經(jīng)過充分的考察、技術驗證、存在種種疑惑的技術,而是一味的拿來主義,這樣的風險可想而知。
確保選擇的技術,是業(yè)界使用最多的、被大家認可的技術,即使出現(xiàn)了問題,也能應對自如。至少在團隊內(nèi)部小范圍是非常認可的。
?
3.強大社區(qū)支撐的技術
GitHub上star的數(shù)量是一個重要指標,同時參考近年來代碼、文檔、issues等更新頻率,各大技術博客是否有相關技術分享記載,這些都是能夠說明該技術是否活躍、受歡迎程度、使用人群多少等。
擁有強大社區(qū)支持的技術,在選型后,倘若使用出現(xiàn)疑問、問題、bug等,能夠有地方可提、可修復、可深究探討,畢竟現(xiàn)在的技術社區(qū)都是足夠開放的。
慎選個人開源的技術框架、組件等,里面到底有多少坑,沒幾個人能說清楚的,況且說不定哪天就不復存在了呢。
?
4.從業(yè)務、項目規(guī)模出發(fā)
任何技術的出發(fā)點都是為最終業(yè)務而服務的,不同業(yè)務、不同項目規(guī)模,對技術的要求指標都是不同的。處于初創(chuàng)期的業(yè)務,選型的基準是相對靈活,畢竟業(yè)務相對簡單,支撐業(yè)務不是很大,只要夠用、開發(fā)效率足夠高就好。處于復雜業(yè)務而重構的項目,選型就需謹慎,往往伴隨著一些復雜需求誕生、規(guī)模大小的不確定性,不得不考慮選型技術可能伴隨著一些小修小補或者螺旋式上升的重構,則需選型便于適配、切換、替換,耦合度低的技術。
正因為技術選型和業(yè)務相關,我們能夠觀察到一些很明顯的現(xiàn)象:新技術往往被早期創(chuàng)業(yè)團隊或大公司的新興業(yè)務使用;中大型公司的核心業(yè)務則更傾向于用一些穩(wěn)定了幾年的技術;一個公司如果長期使用一種技術,就會傾向于一直使用下去,甚至連版本都不更新的使用下去。
學會從業(yè)務端思考。首先我們需要充分地理解業(yè)務,理解用戶需求,理解當下需要解決的首要問題,以及可能的風險有哪些,再將目標進行分解,進行具體的技術選型、模型設計、架構設計。
?
5.先驗證后使用
對于未經(jīng)驗證的新技術、新理念的引入一定要慎重,一定要在全方位的驗證過后,再大規(guī)模的使用,最終確定選型。新技術、新理念的出現(xiàn),自然有它的誘惑,慎重并不代表保守,技術總是在不斷前進,擁抱變化本身沒有問題,但是引入不成熟的技術看似能帶來短期的收益,但是它的風險或者是后期的成本可能遠遠大于收益。
驗證后,才有說服力,用著更放心。
?
每種技術架構都有其優(yōu)缺點,存在即合理,不同的業(yè)務場景下使用不同的應用架構、技術框架,不一定說最新的架構、技術就是最適合你的。