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