成爲一名架構師得學習哪些知識?

閱讀本文大概須要 4 分鐘。前端

昨天寫的一篇,關於架構師是作什麼的文章,以後就有讀者在後臺問起,說要想成爲架構師要具有那些方面的知識,那今天就讓咱們一塊兒來扒一扒。程序員

曾經有這麼個段子:面試

甲:我已經應聘到一家中型軟件公司了,今天上班的時候,全公司的人都來歡迎我。數據庫

乙:羨慕ing,都什麼人來了?編程

甲:CEO、COO、CTO、All of 程序員,還有會計、司機都來了。後端

乙:哇,他們過重視你了,人才啊,這麼多人迎接你!緩存

甲:沒有啊,就一我的!安全

乙:靠,#%¥$%...服務器

業內不少的創業型公司都是這樣,在公司發展前期,因成本有限,每每須要一我的身兼多職,也比較鍛鍊人。架構師有時也扮演着這樣的角色,身爲團隊的頂樑柱,公司的「IT架構靈魂人物」,天然大小事務均可能會涉及。微信

 

那什麼是架構師?

架構師英文 architect,這個詞源於建築學。軟件工程當中的架構師和建築工程當中建築師有許多相通之處,都是負責「產品」宏觀的架構設計。

在一個團隊裏,架構師充當了技術 Leader 的角色,不只要完成項目的總體設計和規劃,還要帶領技術團隊一塊兒解決實際問題,攻克技術難點,使得軟件的設計、開發、測試、發佈流程得以順利完成。

下面這張圖,表達了一個應用架構師(技術 Leader)在團隊當中的角色:

須要注意的是,這張圖中的架構師只是應用架構師,因此運維和 DBA 人員沒有納入到他的管轄範圍。同時,每一個公司的具體組織結構也不盡相同。

 

架構師都作些什麼?

1. 架構設計

架構師,顧名思義,第一職責就是在軟件設計階段,作好軟件「骨架」的設計。架構師須要把產品的需求翻譯成軟件工程的設計文檔,肯定各個系統與模塊的邊界,評估系統的量級。

2. 技術選型

從前端到後端,從緩存到數據庫,面對爲數衆多的第三方組件,架構師須要做出合理的選擇。

  • 前端頁面選擇模板引擎仍是動靜分離?服務端選擇 Java 仍是 Go?

  • 服務治理選擇 Dubbo 仍是 Spring Cloud?

  • 消息隊列選擇 ActiveMQ 仍是 Kafka?

  • 分佈式緩存選擇 Redis Cluster 仍是 Codis?

  • 數據庫選擇 MySQL 仍是 Oracle?

  • 全文檢索選擇 Solr 仍是 ES?

技術沒有絕對的好壞之分,關鍵看是否適用於公司的業務場景。

3. 管理非功能性需求

知足需求是項目開發和架構設計的根本,而管理非功能性需求則是項目的昇華。

在公司從 0 到 1 的創業階段,開發者更關注的是功能性需求,每每一個簡單粗暴的 MVC 項目就能夠搞定一切。當業務量級逐漸增大,用戶需求逐漸多樣化,非功能性需求的重要性就逐漸顯現。

非功能性需求有不少,好比:性能、可擴展性、可用性、安全性、可監控、靈活性、可維護等方面。

4. 攻克技術難題

架構師不僅須要關注宏觀的設計,也須要具備攻克技術細節的能力。在團隊開發過程當中遇到難以實現和優化的技術問題時,架構師須要發揮技術優點,解決系統的疑難雜症。

5. 技術人員的管理和指導

架構師不僅是一個技術大牛,也應該是一個好的管理者,在工做中須要把較大的項目和需求拆分一個個 Story,依照每一個人的狀況分配給研發團隊的成員,而且在必要的時候進行技術上的培訓指導。

6. 制定技術規格說明

架構師在項目開發過程當中,是技術權威。他須要協調全部的開發人員,與開發人員一直保持溝通,始終保證開發者依照它的架構意圖去實現各項功能。

架構師與開發者溝通的最重要的形式是技術規格說明書,它能夠是UML視圖、Word文檔,Visio文件等各類表現形式。經過架構師提供的技術規格說明書,保證開發者能夠從不一樣角度去觀察、理解各自承擔的子系統或者模塊。

 

怎樣才能成爲架構師?

1. 技術的深度和廣度

有一句話說得好,將軍就是更優秀的士兵。架構師做爲程序員中的將軍,首先須要有足夠的技術深度,同時須要普遍瞭解行業內的主流技術,以便更好地設計架構和技術選型。

2. 業務的理解

拋開業務談架構就是耍流氓。這一點對應用架構師來講尤爲重要。只有對業務有了充分的理解,才能對項目的設計和擴展作出合理的規劃。

3. 良好的溝通能力

架構師不僅是低頭作技術,更須要協調指揮團隊內的成員,也須要跨部門和產品、運營、項目經理等人員作及時有效的溝通,因此溝通能力是必不可少的。

 

架構師都有哪些種類?

1. 應用架構師

應用架構師是行業中數量最多的架構師,主要負責公司產品的技術架構。產品架構師須要對業務有足夠的理解,根據產品需求設計架構,在運營團隊的協助下評估量級,並管理項目的整個生命週期。

2. 中間件架構師

中間件架構師主要負責基礎框架、公共組件,通用服務的搭建。好比分佈式服務框架諸如 Dubbo,HSF;好比消息隊列諸如 RocketMQ,Kafka。在大型互聯網公司中,每每不是把開源框架簡單「拿來」,而是研發出符合自身業務的企業中間件。

3. 基礎設施架構師

基礎設施架構師負責服務器資源、網絡資源、數據庫等基礎設施的建設;以及持續集成工具、持續部署工具的搭建。

以上所說的三種,只是架構師最基本的分類。一些特殊領域也有着專門的架構師,好比網絡安全架構師、大數據架構師等等。

 

推薦閱讀

一個對話讓你明白架構師是作什麼的?

 

·END·

路雖遠,行則必至

本文原發於 同名微信公衆號「程序員的成長之路」,回覆「1024」你懂得,給個讚唄。

微信ID:cxydczzl

相關文章
相關標籤/搜索