網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了柳河免費建站歡迎大家使用!
于是,小灰去向大黃請教
這是有關(guān)未來的故事:
從前,有一個趕路的人路過一片工地,看到三個年輕人在工地上搬磚。
于是,他問其中一個人:
于是,他又問了第二個人:
于是,他又問了第三個人:
十年之后~
曾經(jīng)說自己在建造城市的年輕人,成為了市長。
曾經(jīng)說自己在搬磚的年輕人,成為了磚廠老板。
曾經(jīng)說自己在搭建教堂的年輕人,最沒出息,成為了架構(gòu)師。
什么是架構(gòu)師?
架構(gòu)師英文architect,這個詞源于建筑學(xué)。軟件工程當(dāng)中的架構(gòu)師和建筑工程當(dāng)中建筑師有許多相通之處,都是負責(zé)“產(chǎn)品”宏觀的架構(gòu)設(shè)計。
在一個團隊里,架構(gòu)師充當(dāng)了技術(shù)Leader的角色,不僅要完成項目的整體設(shè)計和規(guī)劃,還要帶領(lǐng)技術(shù)團隊一起解決實際問題,攻克技術(shù)難點,使得軟件的設(shè)計、開發(fā)、測試、發(fā)布流程得以順利完成。
下面這張圖,表達了一個應(yīng)用架構(gòu)師(技術(shù)Leader)在團隊當(dāng)中的角色:
需要注意的是,這張圖中的架構(gòu)師只是應(yīng)用架構(gòu)師,所以運維和DBA人員沒有歸入到他的管轄范圍。同時,每個公司的具體組織結(jié)構(gòu)也不盡相同。
架構(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還是Node.js?
服務(wù)治理選擇DubboX還是Spring Cloud?
消息隊列選擇RocketMQ還是Kafka?
分布式緩存選擇redis Cluster 還是 Codis?
數(shù)據(jù)庫選擇MySQL還是Oracle?
全文檢索選擇Solr還是ES?
技術(shù)沒有絕對的好壞之分,關(guān)鍵看是否適用于公司的業(yè)務(wù)場景。
3.管理非功能性需求
滿足需求是項目開發(fā)和架構(gòu)設(shè)計的根本,而管理非功能性需求則是項目的升華。
在公司從0到1的創(chuàng)業(yè)階段,開發(fā)者更關(guān)注的是功能性需求,往往一個簡單粗暴的MVC項目就可以搞定一切。當(dāng)業(yè)務(wù)量級逐漸增大,用戶需求逐漸多樣化,非功能性需求的重要性就逐漸顯現(xiàn)。?
非功能性需求都包含哪些內(nèi)容呢?
性能(響應(yīng)時間)?
可擴展性(適應(yīng)需求的快速變化)
可用性 (四個9,五個9,必要時的限流和降級)
安全性(防范各種惡意***,實現(xiàn)風(fēng)控)
可監(jiān)控(完善的監(jiān)控和報警機制)
靈活性(便于非開發(fā)人員進行配置)?
可維護(持續(xù)集成,持續(xù)部署)?
國際化(沖出國門)
4.攻克技術(shù)難題
架構(gòu)師不只需要關(guān)注宏觀的設(shè)計,也需要具有攻克技術(shù)細節(jié)的能力。在團隊開發(fā)過程中遇到難以實現(xiàn)和優(yōu)化的技術(shù)問題時,架構(gòu)師需要發(fā)揮技術(shù)優(yōu)勢,解決系統(tǒng)的疑難雜癥。
5.技術(shù)人員的管理和指導(dǎo)
架構(gòu)師不只是一個技術(shù)大牛,也應(yīng)該是一個好的管理者,在工作中需要把較大的項目和需求拆分一個個Story,依照每個人的情況分配給研發(fā)團隊的成員,并且在必要的時候進行技術(shù)上的培訓(xùn)指導(dǎo)。
架構(gòu)師都有哪些種類?
1.應(yīng)用架構(gòu)師
應(yīng)用架構(gòu)師是行業(yè)中數(shù)量最多的架構(gòu)師,主要負責(zé)公司產(chǎn)品的技術(shù)架構(gòu)。產(chǎn)品架構(gòu)師需要對業(yè)務(wù)有足夠的理解,根據(jù)產(chǎn)品需求設(shè)計架構(gòu),在運營團隊的協(xié)助下評估量級,并管理項目的整個生命周期。
2.中間件架構(gòu)師
中間件架構(gòu)師主要負責(zé)基礎(chǔ)框架、公共組件,通用服務(wù)的搭建。比如分布式服務(wù)框架諸如Dubbo,HSF;比如消息隊列諸如 RocketMQ,Kafka。在大型互聯(lián)網(wǎng)公司中,往往不是把開源框架簡單“拿來”,而是研發(fā)出符合自身業(yè)務(wù)的企業(yè)中間件。
3.基礎(chǔ)設(shè)施架構(gòu)師
基礎(chǔ)設(shè)施架構(gòu)師負責(zé)服務(wù)器資源、網(wǎng)絡(luò)資源、數(shù)據(jù)庫等基礎(chǔ)設(shè)施的建設(shè);以及持續(xù)集成工具、持續(xù)部署工具的搭建。
以上所說的三種,只是架構(gòu)師最基本的分類。一些特殊領(lǐng)域也有著專門的架構(gòu)師,比如網(wǎng)絡(luò)安全架構(gòu)師、大數(shù)據(jù)架構(gòu)師等等。
怎樣才能成為架構(gòu)師?
1.技術(shù)的深度和廣度
有一句話說得好,將軍就是更優(yōu)秀的士兵。架構(gòu)師作為程序員中的將軍,首先需要有足夠的技術(shù)深度,同時需要廣泛了解行業(yè)內(nèi)的主流技術(shù),以便更好地設(shè)計架構(gòu)和技術(shù)選型。
2.業(yè)務(wù)的理解
拋開業(yè)務(wù)談架構(gòu)就是耍流氓。這一點對應(yīng)用架構(gòu)師來說尤其重要。只有對業(yè)務(wù)有了充分的理解,才能對項目的設(shè)計和擴展做出合理的規(guī)劃。
3.良好的溝通能力
架構(gòu)師不只是低頭做技術(shù),更需要協(xié)調(diào)指揮團隊內(nèi)的成員,也需要跨部門和產(chǎn)品、運營、項目經(jīng)理等人員做及時有效的溝通,所以溝通能力是必不可少的。