架構(gou)師(shi)(shi)英文 architect,這個(ge)詞源于建筑學。軟件工程(cheng)當(dang)中的架構(gou)師(shi)(shi)和(he)建筑工程(cheng)當(dang)中建筑師(shi)(shi)有許多相通之處,都是負責「產品(pin)」宏觀的架構(gou)設計(ji)。
在一個團隊(dui)(dui)里,架構師充當了技術 Leader 的(de)(de)角色,不(bu)僅要完成項目的(de)(de)整(zheng)體(ti)設計(ji)和規(gui)劃(hua),還要帶(dai)領技術團隊(dui)(dui)一起(qi)解決(jue)實(shi)際(ji)問題,攻克技術難點(dian),使得軟件的(de)(de)設計(ji)、開(kai)發(fa)、測試、發(fa)布流程得以順利完成。
怎樣才(cai)能成(cheng)為架構師?
1. 良好的溝通(tong)能力(li)
架構師不只(zhi)是低頭做技術(shu),更需要協調指揮團隊內的(de)(de)成員,也需要跨部門(men)和(he)產品、運(yun)營、項(xiang)目經理等人員做及時有(you)效的(de)(de)溝(gou)通,所以溝(gou)通能力是必不可少的(de)(de)。
2. 業務(wu)的(de)理解
拋開(kai)業務談架構(gou)就是不(bu)正經。這一點對(dui)應用架構(gou)師來說尤其重要。只有(you)對(dui)業務有(you)了充分的(de)理(li)解,才能對(dui)項(xiang)目的(de)設計(ji)和擴(kuo)展做出合理(li)的(de)規劃。
3. 技術的深度(du)和廣度(du)
有(you)一句話說得(de)好(hao),將(jiang)軍就是更好(hao)的士兵。架構師作為程序員中的將(jiang)軍,首先需要有(you)足夠(gou)的技術(shu)深度,同時需要廣(guang)泛了(le)解行業內的主流技術(shu),以便更好(hao)地設計架構和技術(shu)選型。
架構師都做些(xie)什么?
1. 架構設計
架構師,顧名思(si)義,職責(ze)就是在(zai)軟件設計階段,做好軟件「骨架」的設計。架構師需(xu)要把(ba)產品的需(xu)求翻譯(yi)成軟件工程的設計文檔,確(que)定(ding)各(ge)個系統(tong)與模塊的邊(bian)界,評(ping)估系統(tong)的量(liang)級。
2. 技術(shu)選型
從前端到后(hou)端,從緩存到數據庫,面對為數眾多(duo)的(de)第三方組件,架構師(shi)需要作出合理的(de)選擇。
前(qian)端(duan)頁面選(xuan)擇模板引(yin)擎還(huan)是動靜(jing)分離?服(fu)務端(duan)選(xuan)擇 Java 還(huan)是 Go?
服務治(zhi)理(li)選擇 Dubbo 還是 Spring Cloud?
消(xiao)息隊列選(xuan)擇 ActiveMQ 還是(shi) Kafka?
分布式(shi)緩存選(xuan)擇 Redis Cluster 還是(shi) Codis?
數據(ju)庫選擇 MySQL 還是 Oracle?
全文檢索選擇(ze) Solr 還(huan)是 ES?
技(ji)術(shu)沒(mei)有(you)好壞之分(fen),關鍵看是否(fou)適用于公司的(de)業(ye)務場景。
3. 攻(gong)克(ke)技術難題
架構(gou)師不只需(xu)要(yao)(yao)關注宏觀(guan)的設計,也需(xu)要(yao)(yao)具有攻克(ke)技術(shu)細節的能(neng)力(li)。在團隊開發過程中遇(yu)到難(nan)以實現(xian)和優化的技術(shu)問題時,架構(gou)師需(xu)要(yao)(yao)發揮技術(shu)優勢,解決(jue)系統的疑難(nan)雜癥。
4. 技術人員的管理和指導
架構師不只是(shi)一(yi)(yi)個(ge)(ge)(ge)(ge)技(ji)術(shu)大(da)牛,也應該是(shi)一(yi)(yi)個(ge)(ge)(ge)(ge)好的管理(li)者,在(zai)工作中需要(yao)把較大(da)的項目(mu)和需求拆分(fen)一(yi)(yi)個(ge)(ge)(ge)(ge)個(ge)(ge)(ge)(ge) Story,依照每個(ge)(ge)(ge)(ge)人的情況(kuang)分(fen)配給(gei)研發(fa)團隊的成(cheng)員(yuan),并且(qie)在(zai)必要(yao)的時候進(jin)行(xing)技(ji)術(shu)上的培訓指導(dao)。
5. 制(zhi)定技術規格(ge)說明
架構(gou)師在項目開(kai)發(fa)過程中(zhong),是技術權威。他需要協調所有的開(kai)發(fa)人員,與開(kai)發(fa)人員一直(zhi)保持溝通,始(shi)終保證能夠(gou)依照(zhao)它的架構(gou)意圖去(qu)實(shi)現各項功能。
6. 管理非功(gong)能(neng)性(xing)需求
滿足需求(qiu)是(shi)項(xiang)目開發和架(jia)構設計的根本(ben),而管理非功(gong)能性需求(qiu)則是(shi)項(xiang)目的升(sheng)華。
在公司從 0 到 1 的(de)創業階段,開發人更關注的(de)是功能性(xing)需求(qiu),往往一(yi)個簡單粗暴的(de) MVC 項目就可以搞(gao)定一(yi)切。當業務量級逐(zhu)(zhu)漸(jian)增(zeng)大(da),用(yong)戶(hu)需求(qiu)逐(zhu)(zhu)漸(jian)多樣化,非功能性(xing)需求(qiu)的(de)重要性(xing)就逐(zhu)(zhu)漸(jian)顯(xian)現(xian)。
非功能性需求(qiu)有很多,比如:性能、可擴展性、可用性、可監控、靈活性、可維護等(deng)方面。
架(jia)構師(shi)與開發(fa)人溝(gou)通(tong)的(de)重要的(de)形式是技術規格說(shuo)明書(shu),它可(ke)以(yi)是UML視圖、Word文檔(dang),Visio文件等各(ge)種(zhong)表(biao)現形式。通(tong)過(guo)架(jia)構師(shi)提(ti)供(gong)的(de)技術規格說(shuo)明書(shu),保(bao)證開發(fa)人可(ke)以(yi)從(cong)不同(tong)角度去觀察(cha)、理(li)解各(ge)自承(cheng)擔的(de)子系統(tong)或(huo)者模塊。(相關推(tui)薦:學網頁設計需要注意什么)
看完這(zhe)(zhe)些(xie),對(dui)于(yu)架構師還有(you)什(shen)么(me)疑(yi)問(wen)嗎?對(dui)于(yu)這(zhe)(zhe)樣(yang)一個薪資前景都非常可觀的職(zhi)業,還等什(shen)么(me)呢?有(you)興趣就行動起來(lai)去學習(xi)吧!