架構(gòu)師是一個(gè)既能掌控整體又能洞悉局部瓶頸并依據(jù)具體的業(yè)務(wù)場景給出解決方案的團(tuán)隊(duì)領(lǐng)導(dǎo)型人物。看似完美的“人格模型”背后,是艱辛的探索。今天,將阿里巴巴技術(shù)專家多年經(jīng)驗(yàn)系統(tǒng)性總結(jié)的文章分享給大家,希望更多架構(gòu)師在進(jìn)階這條路上走得更“順暢”,姿態(tài)更“優(yōu)雅”。

架構(gòu)師職責(zé)
架構(gòu)師不是一個(gè)人,他需要建立高效卓越的體系,帶領(lǐng)團(tuán)隊(duì)去攻城略地,在規(guī)定的時(shí)間內(nèi)完成項(xiàng)目。
架構(gòu)師需要能夠識別定義并確認(rèn)需求,能夠進(jìn)行系統(tǒng)分解形成整體架構(gòu),能夠正確地技術(shù)選型,能夠制定技術(shù)規(guī)格說明并有效推動實(shí)施落地。
按 TOGAF 的定義,架構(gòu)師的職責(zé)是了解并關(guān)注實(shí)際上關(guān)系重大但未變得過載的一些關(guān)鍵細(xì)節(jié)和界面,架構(gòu)師的角色有:理解并解析需求,創(chuàng)建有用的模型,確認(rèn)、細(xì)化并擴(kuò)展模型,管理架構(gòu)。
從業(yè)界來看對于架構(gòu)師的理解可以大概區(qū)分為:
- 企業(yè)架構(gòu)師:專注于企業(yè)總體 IT 架構(gòu)的設(shè)計(jì)。
- IT 架構(gòu)師-軟件產(chǎn)品架構(gòu)師:專注于軟件產(chǎn)品的研發(fā)。
- IT 架構(gòu)師-應(yīng)用架構(gòu)師:專注于結(jié)合企業(yè)需求,定制化 IT 解決方案;大部分需要交付的工作包括總體架構(gòu)、應(yīng)用架構(gòu)、數(shù)據(jù)架構(gòu),甚至部署架構(gòu)。
IT 架構(gòu)師-技術(shù)架構(gòu)師:專注于基礎(chǔ)設(shè)施,某種軟硬件體系,甚至云平臺,提交產(chǎn)品建議、產(chǎn)品選型、部署架構(gòu)、網(wǎng)絡(luò)方案,甚至數(shù)據(jù)中心建設(shè)方案等。
架構(gòu)師職責(zé)明確了,那么有什么架構(gòu)思維可以指導(dǎo)架構(gòu)設(shè)計(jì)呢?
請看下述的架構(gòu)思維。
架構(gòu)思維
1、自頂向下構(gòu)建架構(gòu)
要點(diǎn)主要如下:
1)首先定義問題,而定義問題中最重要的是定義客戶的問題。定義問題,特別是識別出關(guān)鍵問題,關(guān)鍵問題是對客戶有體感,能夠解決客戶痛點(diǎn),通過一定的數(shù)據(jù)化來衡量識別出來,關(guān)鍵問題要優(yōu)先給出解決方案。
2)問題定義務(wù)必加入時(shí)間維度,把手段/方案和問題定義區(qū)分開來。
3)問題定義中,需要對問題進(jìn)行升層思考后再進(jìn)行升維思考,從而真正抓到問題的本質(zhì),理清和挖掘清楚需求;要善用第一性原理思維進(jìn)行分析思考問題。
4)問題解決原則:先解決客戶的問題(使命),然后才能解決自己的問題(愿景);務(wù)必記住不是強(qiáng)調(diào)我們怎么樣,而是我們能為客戶具體解決什么問題,然后才是我們變成什么,從而怎么樣去更好得服務(wù)客戶。
5)善用多種方法對客戶問題進(jìn)行分析,轉(zhuǎn)換成我們產(chǎn)品或者平臺需要提供的能力,比如倉儲系統(tǒng) WMS 可以提供哪些商業(yè)能力。
6)對我們的現(xiàn)有的流程和能力模型進(jìn)行梳理,找到需要提升的地方,升層思考和升維思考真正明確提升部分。
7)定義指標(biāo),并能夠?qū)χ笜?biāo)進(jìn)行拆解,然后進(jìn)行數(shù)學(xué)建模。
8)將抽象出來的能力訴求轉(zhuǎn)換成技術(shù)挑戰(zhàn),此步對于技術(shù)人員來說相當(dāng)于找到了靶子,可以進(jìn)行方案的設(shè)計(jì)了,需要結(jié)合自底向上的架構(gòu)推導(dǎo)方式。
9)創(chuàng)新可以是業(yè)務(wù)創(chuàng)新,也可以是產(chǎn)品創(chuàng)新,也可以是技術(shù)創(chuàng)新,也可以是運(yùn)營創(chuàng)新,升層思考、升維思考,使用第一性原理思維、生物學(xué)(進(jìn)化論--進(jìn)化=變異+選擇+隔離、熵增定律、分形和涌現(xiàn))思維等哲科思維可以幫助我們在業(yè)務(wù),產(chǎn)品,技術(shù)上發(fā)現(xiàn)不同的創(chuàng)新可能。可以說哲科思維是架構(gòu)師的靈魂思維。

2、自底向上推導(dǎo)應(yīng)用架構(gòu)
先根據(jù)業(yè)務(wù)流程,分解出系統(tǒng)時(shí)序圖,根據(jù)時(shí)序圖開始對模塊進(jìn)行歸納,從而得到粒度更大的模塊,模塊的組合/聚合構(gòu)建整個(gè)系統(tǒng)架構(gòu)。
基本上應(yīng)用邏輯架構(gòu)的推導(dǎo)有4個(gè)子路徑,他們分別是:
- 業(yè)務(wù)概念架構(gòu):業(yè)務(wù)概念架構(gòu)來自于業(yè)務(wù)概念模型和業(yè)務(wù)流程;
- 系統(tǒng)模型:來自于業(yè)務(wù)概念模型;
- 系統(tǒng)流程:來自業(yè)務(wù)流程;
- 非功能性的系統(tǒng)支撐:來自對性能、穩(wěn)定性、成本的需要。
效率、穩(wěn)定性、性能是最影響邏輯架構(gòu)落地成物理架構(gòu)的三大主要因素,所以從邏輯架構(gòu)到物理架構(gòu),一定需要先對效率、穩(wěn)定性和性能做出明確的量化要求。
自底向上重度依賴于演繹和歸納。
如果是產(chǎn)品方案已經(jīng)明確,程序員需要理解這個(gè)業(yè)務(wù)需求,并根據(jù)產(chǎn)品方案推導(dǎo)出架構(gòu),此時(shí)一般使用自底向上的方法,而領(lǐng)域建模就是這種自底向上的分析方法。
對于自底向上的分析方法,如果提煉一下關(guān)鍵詞,會得到如下兩個(gè)關(guān)鍵詞:
1)演繹:演繹就是邏輯推導(dǎo),越是底層的,越需要演繹:
- 從用例到業(yè)務(wù)模型就屬于演繹;
- 從業(yè)務(wù)模型到系統(tǒng)模型也屬于演繹;
- 根據(jù)目前的問題,推導(dǎo)出要實(shí)施某種穩(wěn)定性措施,這是也是演繹。
2)歸納:這里的歸納是根據(jù)事物的某個(gè)維度來進(jìn)行歸類,越是高層的,越需要?dú)w納:
- 問題空間模塊劃分屬于歸納;
- 邏輯架構(gòu)中有部分也屬于歸納;
- 根據(jù)一堆穩(wěn)定性問題,歸納出,事前,事中,事后都需要做對應(yīng)的操作,是就是根據(jù)時(shí)間維度來進(jìn)行歸納。

3、領(lǐng)域驅(qū)動設(shè)計(jì)架構(gòu)
大部分傳統(tǒng)架構(gòu)都是基于領(lǐng)域模型分析架構(gòu),典型的領(lǐng)域?qū)崿F(xiàn)模型設(shè)計(jì)可以參考DDD(領(lǐng)域驅(qū)動設(shè)計(jì)),詳細(xì)可以參考《實(shí)現(xiàn)領(lǐng)域驅(qū)動設(shè)計(jì)》這本書,另外《UML和模式應(yīng)用》在領(lǐng)域建模實(shí)操方面比較好,前者偏理論了解,后者便于落地實(shí)踐。
領(lǐng)域劃分設(shè)計(jì)步驟:
1)對用戶需求場景分析,識別出業(yè)務(wù)全維度 Use Case。
2)分析模型魯棒圖,識別出業(yè)務(wù)場景中所有的實(shí)體對象。魯棒圖 —— 是需求設(shè)計(jì)過程中使用的一種方法(魯棒性分析),通過魯棒分析法可以讓設(shè)計(jì)人員更清晰,更全面地了解需求。它通常使用在需求分析后及需求設(shè)計(jì)前做軟件架構(gòu)分析之用,它主要注重于功能需求的設(shè)計(jì)分析工作。需求規(guī)格說明書為其輸入信息,設(shè)計(jì)模型為其輸出信息。它是從功能需求向設(shè)計(jì)方案過渡的第一步,重點(diǎn)是識別組成軟件系統(tǒng)的高級職責(zé)模塊、規(guī)劃模塊之間的關(guān)系。魯棒圖包含三種圖形:邊界、控制、實(shí)體,三個(gè)圖形如下:

3)領(lǐng)域劃分,將所有識別出的實(shí)體對象進(jìn)行分類。
4)評估域劃分合理性,并進(jìn)行優(yōu)化。
4、基于數(shù)據(jù)驅(qū)動設(shè)計(jì)架構(gòu)
隨著 IoT、大數(shù)據(jù)和人工智能的發(fā)展,以領(lǐng)域驅(qū)動的方式進(jìn)行架構(gòu)往往滿足不了需求或者達(dá)不到預(yù)期的效果,在大數(shù)據(jù)時(shí)代,在大數(shù)據(jù)應(yīng)用場景,我們需要轉(zhuǎn)變思維,從領(lǐng)域分析升維到基于大數(shù)據(jù)統(tǒng)計(jì)分析結(jié)果來進(jìn)行業(yè)務(wù)架構(gòu)、應(yīng)用架構(gòu)、數(shù)據(jù)架構(gòu)和技術(shù)架構(gòu)。這里需要架構(gòu)師具備數(shù)理統(tǒng)計(jì)分析的基礎(chǔ)和 BI 的能力,以數(shù)據(jù)思維來架構(gòu)系統(tǒng),典型的系統(tǒng)像阿里的數(shù)據(jù)分析平臺采云間和菜鳥的數(shù)據(jù)分析平臺 FBI。
上述四種思維,往往在架構(gòu)設(shè)計(jì)中是融合使用的,需要根據(jù)業(yè)務(wù)或者系統(tǒng)的需求來選擇側(cè)重思維方式。
有了架構(gòu)思維的指導(dǎo),具體有沒有通用/標(biāo)準(zhǔn)化的架構(gòu)框架以更好的執(zhí)行架構(gòu)設(shè)計(jì)?請看常見的架構(gòu)框架。下述的架構(gòu)框架其實(shí)本身也包含了重要的一些架構(gòu)思維。