我研發(fā)領域也從事了一些年,期間也做過一些架構設計工作,包括C#單體轉(zhuǎn)型為Java微服務、Python單體轉(zhuǎn)型為Java微服務等,
也嘗試著從自己的經(jīng)驗角度,來匯總一些知識點,同時描述一下如何成長為一個合格的軟件架構師,僅供參考,也歡迎跟我一起探討。
一、架構師的定義
顧名思義,架構師就是指在某個公司/團隊里,從事系統(tǒng)架構工作的人。
首先要明確的一點,本文講的架構師并不是一個職位,而是指一個角色,就是從事架構工作的人。
- 每個公司、甚至一個公司的不同團隊,對架構師的認知都不一樣,對架構師的定義及承擔的職責也各不相同;
- 每個團隊,都有人或多或少的在做架構的工作,比如團隊主程、資深開發(fā)人員;
所以不是說你的職位是架構師,你就達到了架構師的標準;同理,你的職位不是架構師,但是你可能就是這個團隊公認的架構師。
作為架構師要注意的點:
架構師不能脫離現(xiàn)有的開發(fā)環(huán)境、項目的現(xiàn)狀、公司的資源投入等,不能坐在空中樓閣里,指揮團隊作戰(zhàn)。
架構師分類
根據(jù)不同領域的細分,架構師也有一些細分的定義,一般會有:
- 軟件架構師:負責設計和規(guī)劃軟件系統(tǒng)的整體架構,涵蓋需求分析、技術選型、領域劃分、應用部署等;
- 數(shù)據(jù)架構師:負責數(shù)據(jù)系統(tǒng)的設計和規(guī)劃,含數(shù)據(jù)倉庫、數(shù)據(jù)收集和治理等;
- 網(wǎng)絡架構師:負責系統(tǒng)整體網(wǎng)絡的設計和規(guī)劃,含互聯(lián)網(wǎng)接入、路由交換、VPN和網(wǎng)絡安全等;
- 云架構師:在云計算盛行的當前,負責云計算的部署和規(guī)劃,含云平臺選型、容器管理能力、虛擬化、自動化等;
- 安全架構師:負責軟件系統(tǒng)的安全架構規(guī)劃,包括全局的安全策略、訪問控制、漏洞管理、審計策略等;
- 前端架構師:一般特指瀏覽器應用架構師,負責前端應用的整體架構設計,包括前端框架、技術棧、跨瀏覽器兼容和統(tǒng)一能力封裝、性能優(yōu)化等;
- 移動應用架構師:一般指Android/iOS應用架構師,負責移動應用的整體架構設計,包括移動安全、技術棧、跨平臺兼容、測試方案設計、性能優(yōu)化等;
- 后端架構師:主要負責應用的后端架構設計,包括數(shù)據(jù)庫設計、API設計、性能優(yōu)化、數(shù)據(jù)安全等。
以上細分并不一定全面,而且很多領域的邊界其實是不夠清晰的,比如:
- 軟件架構師一般涵蓋整個軟件系統(tǒng),對各個領域都應該有一定的了解,并有一定的側重(后端居多)
- 前端架構師和后端架構師,都應當對API進行規(guī)范化和輸出評審;
- 比如軟件架構師和數(shù)據(jù)架構師,都要關注數(shù)據(jù)的安全、跨系統(tǒng)的消息傳輸協(xié)議等。
軟件架構師的職責
-
1、全面了解業(yè)務需求
作為架構師,最重要的是精通業(yè)務,甚至要求成為領域?qū)<?,在系列第一講就說了:發(fā)現(xiàn)問題比解決問題更重要
如果不了解業(yè)務,設計出來的架構是不可信賴的。 -
2、能簡化和抽象問題
這是架構師設計和開發(fā)高質(zhì)量軟件系統(tǒng)的關鍵能力,可以幫助團隊在復雜的環(huán)境中更好地理解業(yè)務需求和進行設計、開發(fā)。
以用戶登錄系統(tǒng)為例:- 可以簡化登錄問題為:接收用戶提交的登錄類型、接收用戶提交的憑證、校驗用戶憑證是否有效,
- 抽象為一個接口,提供3個方法:
matchLoginType(HttpServletRequest request)
是否當前類處理的登錄類型readCredential(HttpServletRequest request)
根據(jù)登錄類型,讀取登錄憑證validCredential(UserCredential info)
驗證登錄憑證 - 添加不同的實現(xiàn),比如賬號密碼登錄實現(xiàn)、微信登錄實現(xiàn)、LDAP登錄實現(xiàn)、Token登錄實現(xiàn)等等
- 至于前端展現(xiàn)、用戶交互方式,這些都是相對不重要的細節(jié),約定好標準的前后端接口交互規(guī)則就可以了
-
3、在有限資源內(nèi)提出合適可行的解決方案
我們的軟件/硬件/人力/時間等資源都是有限的,架構師要權限這些限制,在有限資源下尋求最優(yōu)解決方案。
比如:工期有限時,架構師要能評估業(yè)務實際情況,拆解模塊/功能,選擇符合需要的最低功能組合進行優(yōu)先設計實現(xiàn);
比如:新舊系統(tǒng)重構時,架構師要根據(jù)團隊人員、擅長技能情況進行技術選型,要衡量如何對業(yè)務最小影響的情況下,平滑過渡和人員分配的能力。 -
4、滿足業(yè)務需求,保證系統(tǒng)質(zhì)量
要求架構師能正確理解業(yè)務需求,并輸出系統(tǒng)所需的非功能性需求,包括可靠性、性能、容錯性等;
然后設計合適的技術方案,并持續(xù)跟蹤過程,以保證質(zhì)量。 -
5、在可預測的時間段內(nèi)的可擴展性
這個一般分2方面:- 架構師要深度理解需求,能預估一定時間內(nèi)的需求變化情況
比如用戶登錄系統(tǒng),不應只設計賬號密碼登錄,應根據(jù)用戶群體特征,增加微信掃碼登錄、Google身份登錄等; - 架構師要考慮系統(tǒng)的伸縮性,包括水平擴展和垂直擴展,同時要兼顧成本,避免過度設計:
- 水平擴展:系統(tǒng)在訪問量增長的情況下,能快速擴容節(jié)點,分散舊節(jié)點的負載能力應對;
- 垂直擴展:系統(tǒng)的單節(jié)點有足夠的擴展能力,如CPU增強、內(nèi)存增加、網(wǎng)絡帶寬增長等。
- 架構師要深度理解需求,能預估一定時間內(nèi)的需求變化情況
-
6、在系統(tǒng)的生命周期內(nèi)持續(xù)演進
架構師根據(jù)業(yè)務的增長情況,對系統(tǒng)進行持續(xù)的監(jiān)控、評估和迭代改進。
最終目標就是在不影響業(yè)務增長的情況下,持續(xù)提升系統(tǒng)的可靠性和吞吐量。
軟件架構師的能力要求
作為一名合適的軟件架構師,一般應該擁有的能力:
- 1、技術能力
架構師首先一定是一名出色的技術人員,可以說沒體驗過分庫分表的架構師確實不太合格,他應該是:- 高級程序員:
架構師一定要有豐富的程序開發(fā)經(jīng)驗,什么設計模式、HashMap原理、B+樹等等,都不在話下;
一些核心系統(tǒng)或通用框架設計,通常也需要架構師進行代碼編寫和指導; - 多技術領域知識:
架構師應該擁有足夠的技術廣度,了解不同的技術領域知識,如了解前端瀏覽器渲染過程、客戶端開發(fā)技術棧、kafka收發(fā)原理、分布式相關理論和一些產(chǎn)品實現(xiàn)、容器和K8S、負載均衡技術等等,才能在面對具體問題的時候,提出合適的技術選型、部署方案和實現(xiàn); - 問題解決專家和救火員:
架構師一定要有豐富的問題解決經(jīng)驗,能解決很多一般技術人員無法解決的疑難雜癥;
有完善的問題解決流程經(jīng)驗,如生產(chǎn)事故優(yōu)先安排恢復,再進行故障定位解決的一整套處理方案; - 合適的運維工程師:
一些緊急或特殊的問題,需要架構師進行線上診斷; 在線下重現(xiàn)時,需要部署相應服務;
架構師也應當有一些常見服務的部署/運維/監(jiān)控經(jīng)驗,如Centos、Windows、supervisor、crontab、redis、mysql、kafka等等;
另外,在一些中小型團隊,一般沒有專職的運維人員,也是由架構師負責運維;
- 高級程序員:
- 2、業(yè)務分析和抽象能力
架構師應該深入了解行業(yè)知識,要讓自己成為領域?qū)<遥拍芨鼫蚀_、清晰的把用戶需求轉(zhuǎn)化為技術需求,
同時架構師應該要有抽象能力,即把技術需求轉(zhuǎn)化為抽象的具體良好可擴展性的架構;
比如一個商城系統(tǒng),能抽象為:
登錄 -> 購物車 -> 下單 -> 支付 -> 發(fā)貨
同時可以抽象出通用的認證服務、訂單服務、支付服務、庫存管理服務,以及各服務間的消息傳輸協(xié)議等;
同時,看到商品,就知道要設計分類表、SPU數(shù)據(jù)表和SKU數(shù)據(jù)表,商品的評價要剝離成獨立的評論服務等。
注:六大設計原則,其實也適用于軟件架構設計,在劃分領域邊界、模塊拆分時也要考慮單一職責、開閉原則、接口隔離等等。 - 3、 管理能力
這個點比較大,通常來說,架構師也應該具備團隊管理能力,包括較強的溝通和理解能力、項目進度管理和資源調(diào)配能力、團隊協(xié)作與氛圍激勵能力;
最重要的是溝通和理解能力,如果不能理解別人提出的問題,無法清晰的表達自己的想法,連問題都無法清晰發(fā)現(xiàn)和定義,更不要談后續(xù)的動作了。
還有一點我認為是坦誠,團隊成員天天交流,不夠坦誠,成員很容易感知,就會反感和不坦誠,很多問題就無法暴露,最終可能導致項目失敗。 - 4、學習能力
架構師要有比較好的學習能力和適應能力,以及較強的前瞻性,應當經(jīng)常參加各種線上線下的培訓或交流,以了解和跟上不斷變化的技術和行業(yè)發(fā)展趨勢。
同時,架構師也要有較好的總結歸納能力和沉淀能力,包括技術經(jīng)驗的總結、技術規(guī)范的整理與輸出、運維runbook的編寫、培訓文檔輸出等。
這些能力,基本都需要通過持續(xù)的學習和鍛煉,比如抽象能力,就是要長期做需求分析、劃分領域邊界,并對比同類項目的設計,找出自己設計的不足點,進行學習和重構。
一定要記住,技術不是全部,很多場景,都可以通過需求優(yōu)化來解決,而不是通過復雜的技術方案處理,后面我會有一些文章來舉例。
這里分享一張極客時間的“架構師技能圖譜”,可以參考:
這張圖總是會被CSDN報 圖片違規(guī),大家可以自己搜索一下:
極客時間 架構師技能圖譜
再分享2張來自https://roadmap.sh/的:前端能力路線圖 和 后端能力路線圖 —
二、如何成長
分享一張圖:
上圖,來自吳軍老師的《格局》,可以認真一讀:
- 基線:你掌握的工程知識,因人不同,比如專家的基線高、新手的基線低;
我們要做的第一件事,就是自我定位,找到自己的基線,并持續(xù)學習,以提高自己的基線。
很多民間科學家用一輩子做出的發(fā)明不被認可,就是因為他的基線低于這個時代的基線,沒有去學習,直接利用自己的舊有知識。 - 極限:受制于物理、環(huán)境、甚至個人認知,可達到的極限,如光速、單機的最大連接數(shù)、單機的最大吞吐量等;
我們在學習和改進時,要明確這個方向的極限,避免無效的折騰 - 階梯:通往極限的路徑、方法,需要你通過學習獲取曉或自行探索適合你的方法。
注:受限于每個人的個人認知、配備的資源不等、以及探索方法是否行之有效,能達到極限的人是越來越少,所以階梯是呈收斂的。
所以,總結一下,怎么讓自己持續(xù)成長,沒有捷徑:
- 不斷學習,提升自己的基線
很多時候,你以為的頓悟,只是別人的基本功。 by:劉潤 - 實踐,持續(xù)不斷的實踐,歸納,總結,領悟
不要認為沒時間,在推薦書籍里的5分鐘商學院,有專門一節(jié)教你做時間管理,只要聽5分鐘。
理論與實踐相結合,我們知道,有2種知識:
1、別人告訴你或書上學到的,這是理論;
2、自己親身經(jīng)歷的,這是實踐;
只有理論,很容易遺忘;只有實踐;你不知道要提升什么。
我的經(jīng)驗:
1、自己踩過的坑,要進行復盤,了解為什么出問題,本質(zhì)原因是什么
2、別人踩過的坑,我會去嘗試在測試環(huán)境踩一遍,加深印象,并探究本質(zhì)
最后分享一個在知乎看到的學習問題,挺有意思的:
知乎有人問過一個問題:古人有上策中策下策,為啥很多都選下策?
有個高贊回答是這么說的,以學習為例,上中下三策:
- 上策:嚴密的學習計劃,懸梁刺股、聞雞起舞;
很顯然,太難了,沒幾個人能做到; - 中策:寬松的學習計劃,一周/月看一本書;
這個中策還不錯,很多人會選擇,甚至做時間計劃,就是執(zhí)行過程很容易中斷,什么手機很想我,抖音看一看,跟朋友喝個酒,持續(xù)不了1,2個月就結束了 - 下策:隨機學習,想到就去學
絕大多數(shù)人選擇了這個,包括我在內(nèi),知識碎片化很嚴重,而且很容易遺忘
三、推薦書籍
技術領域
這三本書,閱讀起來確實會比較枯燥,可以看一遍有個印象,再實踐一段時間,回來再閱讀一遍
非技術領域
同時,我們也不要只關注技術領域,要關注一些技術領域之外的知識;
尤其強烈推薦劉潤的5分鐘商學院,這是一個音頻系列,每個音頻5分鐘左右,涵蓋了商業(yè)知識、產(chǎn)品創(chuàng)新、自我管理、團隊管理、績效提升等全方面的知識,
在知乎上有些人對他評價不高,但是對于技術領域的我來說,很多知識幾乎是醍醐灌頂?shù)淖饔?,自然也對我的成長、工作都提供了很大的幫助,強烈推薦學習。
四、擴展資料
這里介紹2個關于架構師的認證考試,有志于提升自己的架構能力的同學,可以去嘗試一下,
認證涉及的內(nèi)容,是比較全面的,能在整體上提升個人能力,所以千萬不要抱著應付考試的目的去學習,甚至只學習,不考試也是相當OK的。
TOGAF認證
TOGAF是The Open Group Architecture Framework的縮寫,它由The Open Group開發(fā),并在持續(xù)更新中,The Open Group是一個非盈利的技術行業(yè)聯(lián)盟。
The Open Group 將 TOGAF 定義為“企業(yè)架構的全球標準”,它提供了一整套方法論和最佳管理實踐。
TOGAF已被80%的福布斯50強公司使用,并得到HP、IBM、Kingdee(金蝶)、Oracle、SAP等國際領先IT企業(yè)的高度認同和積極推動。在中國企業(yè)架構實踐中,TOGAF認可度超過50%。
TOGAF官方介紹:https://www.opengroup.org/togaf
百度百科介紹:https://baike.baidu.com/item/TOGAF/9832356
TOGAF認證的能力模型簡要概述如下:
-
1、通用技能:領導力、團隊合作、人際交往、口才、寫作、邏輯分析、干系人管理、風險管理;
-
2、業(yè)務技能和方法:業(yè)務案例、業(yè)務情景、組織結構、業(yè)務流程、戰(zhàn)略規(guī)劃、預算管理、戰(zhàn)略愿景、業(yè)務指標、業(yè)務文化、遺留的投資、業(yè)務功能;
-
3、企業(yè)架構技能:業(yè)務流程設計、角色設計、組織結構設計、數(shù)據(jù)設計、應用設計、系統(tǒng)集成、IT行業(yè)標準、服務設計、架構原則設計、視圖和視角設計、構建塊設計、解決方案建模、效益分析、業(yè)務交互、系統(tǒng)行為、項目管理;
-
4、方案和項目管理技能:方案管理、項目管理、管理業(yè)務變更、變更管理、價值管理;
-
5、通用IT知識技能:IT應用開發(fā)方法和工具、編程語言、代理應用、信息消費應用、信息提供應用、存儲管理、網(wǎng)絡、基于Web的服務、信息技術基礎設施、資產(chǎn)管理、服務等級協(xié)議、系統(tǒng)、商用現(xiàn)成品、企業(yè)連續(xù)體、遷移規(guī)劃、管理工具、基礎設施;
-
6、IT技能:軟件工程、安全、系統(tǒng)和網(wǎng)絡管理、事務處理、位置和目錄、用戶界面、國際化操作、數(shù)據(jù)交換、數(shù)據(jù)管理、圖形與圖像、操作系統(tǒng)服務、網(wǎng)絡服務、通信基礎設施;
-
7、法律環(huán)境:合同法、數(shù)據(jù)保護法、采購法、詐騙、商業(yè)法
軟考之系統(tǒng)架構設計師
系統(tǒng)架構設計師,是計算機技術與軟件專業(yè)技術資格的一項高級認證,參考官方介紹:https://www.ruankao.org.cn/platform/details?code=03_03
它的考試要求:
(1)掌握計算機硬軟件與網(wǎng)絡的基礎知識;
(2)熟悉信息系統(tǒng)開發(fā)過程;
(3)理解信息系統(tǒng)開發(fā)標準、常用信息技術標準;
(4)熟悉主流的中間件和應用服務器平臺;
(5)掌握軟件系統(tǒng)建模、系統(tǒng)架構設計基本技術;
(6)熟練掌握信息安全技術、安全策略、安全管理知識;
(7)了解信息化、信息技術有關法律、法規(guī)的基礎知識;
(8)了解用戶的行業(yè)特點,并根據(jù)行業(yè)特點架構合適的系統(tǒng)設計;
(9)掌握應用數(shù)學基礎知識;
(10)熟練閱讀和正確理解相關領域的英文文獻
可見需要了解的內(nèi)容還是比較多的。文章來源:http://www.zghlxwxcb.cn/news/detail-541856.html
結語
架構漫談的5個章節(jié),到此就告一段落。
后續(xù)的文章,我會列舉一些我經(jīng)歷過的需求分析案例,以及我們采用的技術設計方案。文章來源地址http://www.zghlxwxcb.cn/news/detail-541856.html
到了這里,關于需求分析引言:架構漫談(五)架構師成長之路的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!