架構(gòu)師英文 architect,這個詞源于建筑學(xué)。軟件工程當(dāng)中的架構(gòu)師和建筑工程當(dāng)中建筑師有許多相通之處,都是負(fù)責(zé)「產(chǎn)品」宏觀的架構(gòu)設(shè)計(jì)。
在一個團(tuán)隊(duì)里,架構(gòu)師充當(dāng)了技術(shù) Leader 的角色,不僅要完成項(xiàng)目的整體設(shè)計(jì)和規(guī)劃,還要帶領(lǐng)技術(shù)團(tuán)隊(duì)一起解決實(shí)際問題,攻克技術(shù)難點(diǎn),使得軟件的設(shè)計(jì)、開發(fā)、測試、發(fā)布流程得以順利完成。
怎樣才能成為架構(gòu)師?
1. 良好的溝通能力
架構(gòu)師不只是低頭做技術(shù),更需要協(xié)調(diào)指揮團(tuán)隊(duì)內(nèi)的成員,也需要跨部門和產(chǎn)品、運(yùn)營、項(xiàng)目經(jīng)理等人員做及時有效的溝通,所以溝通能力是必不可少的。
2. 業(yè)務(wù)的理解
拋開業(yè)務(wù)談架構(gòu)就是不正經(jīng)。這一點(diǎn)對應(yīng)用架構(gòu)師來說尤其重要。只有對業(yè)務(wù)有了充分的理解,才能對項(xiàng)目的設(shè)計(jì)和擴(kuò)展做出合理的規(guī)劃。
3. 技術(shù)的深度和廣度
有一句話說得好,將軍就是更好的士兵。架構(gòu)師作為程序員中的將軍,首先需要有足夠的技術(shù)深度,同時需要廣泛了解行業(yè)內(nèi)的主流技術(shù),以便更好地設(shè)計(jì)架構(gòu)和技術(shù)選型。
架構(gòu)師都做些什么?
1. 架構(gòu)設(shè)計(jì)
架構(gòu)師,顧名思義,職責(zé)就是在軟件設(shè)計(jì)階段,做好軟件「骨架」的設(shè)計(jì)。架構(gòu)師需要把產(chǎn)品的需求翻譯成軟件工程的設(shè)計(jì)文檔,確定各個系統(tǒng)與模塊的邊界,評估系統(tǒng)的量級。
2. 技術(shù)選型
從前端到后端,從緩存到數(shù)據(jù)庫,面對為數(shù)眾多的第三方組件,架構(gòu)師需要作出合理的選擇。
前端頁面選擇模板引擎還是動靜分離?服務(wù)端選擇 Java 還是 Go?
服務(wù)治理選擇 Dubbo 還是 Spring Cloud?
消息隊(duì)列選擇 ActiveMQ 還是 Kafka?
分布式緩存選擇 Redis Cluster 還是 Codis?
數(shù)據(jù)庫選擇 MySQL 還是 Oracle?
全文檢索選擇 Solr 還是 ES?
技術(shù)沒有好壞之分,關(guān)鍵看是否適用于公司的業(yè)務(wù)場景。
3. 攻克技術(shù)難題
架構(gòu)師不只需要關(guān)注宏觀的設(shè)計(jì),也需要具有攻克技術(shù)細(xì)節(jié)的能力。在團(tuán)隊(duì)開發(fā)過程中遇到難以實(shí)現(xiàn)和優(yōu)化的技術(shù)問題時,架構(gòu)師需要發(fā)揮技術(shù)優(yōu)勢,解決系統(tǒng)的疑難雜癥。
4. 技術(shù)人員的管理和指導(dǎo)
架構(gòu)師不只是一個技術(shù)大牛,也應(yīng)該是一個好的管理者,在工作中需要把較大的項(xiàng)目和需求拆分一個個 Story,依照每個人的情況分配給研發(fā)團(tuán)隊(duì)的成員,并且在必要的時候進(jìn)行技術(shù)上的培訓(xùn)指導(dǎo)。
5. 制定技術(shù)規(guī)格說明
架構(gòu)師在項(xiàng)目開發(fā)過程中,是技術(shù)權(quán)威。他需要協(xié)調(diào)所有的開發(fā)人員,與開發(fā)人員一直保持溝通,始終保證能夠依照它的架構(gòu)意圖去實(shí)現(xiàn)各項(xiàng)功能。
6. 管理非功能性需求
滿足需求是項(xiàng)目開發(fā)和架構(gòu)設(shè)計(jì)的根本,而管理非功能性需求則是項(xiàng)目的升華。
在公司從 0 到 1 的創(chuàng)業(yè)階段,開發(fā)人更關(guān)注的是功能性需求,往往一個簡單粗暴的 MVC 項(xiàng)目就可以搞定一切。當(dāng)業(yè)務(wù)量級逐漸增大,用戶需求逐漸多樣化,非功能性需求的重要性就逐漸顯現(xiàn)。
非功能性需求有很多,比如:性能、可擴(kuò)展性、可用性、可監(jiān)控、靈活性、可維護(hù)等方面。
架構(gòu)師與開發(fā)人溝通的重要的形式是技術(shù)規(guī)格說明書,它可以是UML視圖、Word文檔,Visio文件等各種表現(xiàn)形式。通過架構(gòu)師提供的技術(shù)規(guī)格說明書,保證開發(fā)人可以從不同角度去觀察、理解各自承擔(dān)的子系統(tǒng)或者模塊。(相關(guān)推薦:學(xué)網(wǎng)頁設(shè)計(jì)需要注意什么)
看完這些,對于架構(gòu)師還有什么疑問嗎?對于這樣一個薪資前景都非??捎^的職業(yè),還等什么呢?有興趣就行動起來去學(xué)習(xí)吧!