系統(tǒng)架構(gòu)圖是為了表達傳遞想法艳悔,如果一個表達方式能表達你的想法,就可以選擇使用
很多人之所以畫不好架構(gòu)圖女仰,最大的痛點就是不好把握到底要畫哪些內(nèi)容猜年,畫得太少擔(dān)心沒有展現(xiàn)關(guān)鍵信息,畫得太多又覺得把握不住重點疾忍。
所以現(xiàn)在的問題變成了:應(yīng)該按照什么樣的標(biāo)準(zhǔn)來明確架構(gòu)圖要展現(xiàn)的內(nèi)容呢乔外?
用不同的方式去劃分系統(tǒng),就會得到不同類型的架構(gòu)一罩,分別對應(yīng)不同類型的架構(gòu)圖杨幼。常見的類型整理如下:
業(yè)務(wù)架構(gòu)圖 : 描述系統(tǒng)對用戶提供了什么業(yè)務(wù)功能。用戶視角或業(yè)務(wù)視角
【畫圖技巧】
通過不同顏色來標(biāo)識業(yè)務(wù)狀態(tài):比如說哪些業(yè)務(wù)發(fā)展?fàn)顟B(tài)好聂渊,哪些問題比較多差购,哪些比較穩(wěn)定,哪些競爭比較激烈等汉嗽。
業(yè)務(wù)分組管理:將類似的業(yè)務(wù)放在一個分組里面展現(xiàn)欲逃,用虛線框或者相同背景將其標(biāo)識出來。
區(qū)塊對齊:為了美觀饼暑,可以改變不同區(qū)塊的長短大小進行對齊稳析,讓整體看起來更美觀。
一個業(yè)務(wù)架構(gòu)圖如下所示:
這張業(yè)務(wù)架構(gòu)圖有三點關(guān)鍵信息:“MTR”區(qū)塊是淺紅色的弓叛,“人傳人”區(qū)塊是綠色的迈着,淺紅色代表正在進行的,綠色代表明年規(guī)劃的邪码。
分了 4 組:錢包業(yè)務(wù)裕菠、第三方業(yè)務(wù)、商家服務(wù)和用戶管理闭专∨耍“轉(zhuǎn)賬”和“社交紅包”等區(qū)塊比較長旧烧,只是為了對齊后更美觀,不代表業(yè)務(wù)本身的量級或者重要程度画髓,如果要表示這樣的信息掘剪,那么可以用顏色來表示。
注意奈虾,千萬不要畫得五顏六色夺谁,一般一張圖的顏色數(shù)量控制在 3 種以內(nèi)是比較好的。
所以在畫圖的時候你要想清楚肉微,到底哪些信息是要放在業(yè)務(wù)架構(gòu)圖中重點展示的關(guān)鍵信息匾鸥,哪些信息順帶講一下就可以了。
系統(tǒng)架構(gòu)圖
描述后端的邏輯架構(gòu)碉纳,又叫“后端架構(gòu)”或“技術(shù)架構(gòu)”勿负,不管是業(yè)務(wù)系統(tǒng)、中間件系統(tǒng)劳曹,還是基礎(chǔ)的操作系統(tǒng)奴愉、數(shù)據(jù)庫系統(tǒng)等,系統(tǒng)架構(gòu)都是軟件系統(tǒng)架構(gòu)的核心铁孵。
系統(tǒng)架構(gòu)核心部分就是在后端锭硼;
系統(tǒng)就是系統(tǒng),業(yè)務(wù)就是業(yè)務(wù)蜕劝,系統(tǒng)是來實現(xiàn)業(yè)務(wù)的
【使用場景】
整體架構(gòu)設(shè)計账忘。
架構(gòu)培訓(xùn)。
【畫圖技巧】
通過不同顏色來標(biāo)識不同角色熙宇。通過連接線來表示關(guān)系鳖擒。邏輯分組。
【參考案例】
如果系統(tǒng)比較簡單烫止,可以參考 MongoDB Sharding 的系統(tǒng)架構(gòu)圖蒋荚,
如下所示:
如果系統(tǒng)相對復(fù)雜,
建議首先用一張圖來展示系統(tǒng)架構(gòu)里面的角色(Role)以及每個角色的核心功能馆蠕;
然后再用一張圖來展示角色之間的關(guān)系(Relation)期升,可以參考一個支付中臺的系統(tǒng)架構(gòu)圖,如下所示:
-
應(yīng)用架構(gòu)圖【定義】描述后端系統(tǒng)由哪些應(yīng)用組成互躬,一個應(yīng)用就是一個可部署發(fā)布運行的程序播赁,它是項目開發(fā)過程中,開發(fā)測試運維團隊協(xié)作的基礎(chǔ)吼渡∪菸【使用場景】項目開發(fā)、測試。運維部署發(fā)布坎背。子域架構(gòu)設(shè)計替劈。【畫圖技巧】通過不同顏色來標(biāo)識不同角色得滤。通過連接線來表示關(guān)系陨献。復(fù)雜系統(tǒng)分域來畫。
【參考案例】如果系統(tǒng)比較簡單懂更,那么基本上應(yīng)用架構(gòu)和系統(tǒng)架構(gòu)是等價的眨业,可以參考 MongoDB Sharding 的應(yīng)用架構(gòu)圖,如下所示:
image.png
我們可以看到沮协,這張圖中的 Router(mongos)龄捡、Config Servers 和 Shard(replica set),既包含了系統(tǒng)架構(gòu)的角色信息(Router皂股、Config Servers 和 Shard)墅茉,又包含了應(yīng)用信息(mongos命黔、Config Servers 和 Shard)呜呐。如果系統(tǒng)比較復(fù)雜,按照架構(gòu)分層的角度來看悍募,應(yīng)用架構(gòu)已經(jīng)到了可執(zhí)行程序這一層蘑辑,例如支付中臺這一類的系統(tǒng),包含的應(yīng)用可能有幾百上千個坠宴,如果把整個支付中臺所有的應(yīng)用都在一張圖里面展示出來洋魂,信息太多太密,可能會導(dǎo)致架構(gòu)圖都看不清喜鼓。這種情況下副砍,應(yīng)用架構(gòu)一般都是按照子域來畫應(yīng)用架構(gòu)圖,可以參考支付中臺的會員域的應(yīng)用架構(gòu)圖庄岖,如下所示:
image.png -
部署架構(gòu)圖【定義】描述后端系統(tǒng)具體是如何部署的豁翎,主要包含機房信息、網(wǎng)絡(luò)信息和硬件信息等隅忿⌒陌【使用場景】總體架構(gòu)設(shè)計。運維規(guī)劃和優(yōu)化背桐∮派眨【畫圖技巧】用圖標(biāo)代替區(qū)塊,這樣看起來更加美觀和容易理解链峭∑杪Γ【參考案例】一個簡單的支付系統(tǒng)的部署架構(gòu)圖如下所示:
image.png -
系統(tǒng)序列圖【定義】描述某個業(yè)務(wù)場景下,系統(tǒng)各個角色如何配合起來完成業(yè)務(wù)功能》自穑【使用場景】結(jié)合“系統(tǒng)架構(gòu)捍掺、應(yīng)用架構(gòu)和部署架構(gòu)”來使用≡偕牛【畫圖技巧】使用 UML 的序列圖來畫挺勿。【參考案例】“掃碼支付”這個支付核心場景的系統(tǒng)序列圖如下所示:
系統(tǒng)序列圖
補充說明如果你曾經(jīng)研究過架構(gòu)圖的標(biāo)準(zhǔn)喂柒,那么除了 4+1 視圖以外不瓶,你可能還看到過 TOGAF 的“業(yè)務(wù)架構(gòu)(跟這一講的業(yè)務(wù)架構(gòu)名字相同,但是意義不同)灾杰、數(shù)據(jù)架構(gòu)(不是指大數(shù)據(jù)平臺架構(gòu)蚊丐,而是指數(shù)據(jù)資產(chǎn)的架構(gòu))、應(yīng)用架構(gòu)和技術(shù)架構(gòu)”這種說法艳吠,或者還看到過 C4 架構(gòu)模型(Context麦备、Container、Component 和 Code)等等昭娩。但其實目前業(yè)界并沒有就架構(gòu)圖標(biāo)準(zhǔn)達成共識凛篙,剛才提到的 TOGAF 是企業(yè)級的架構(gòu),基本上要到 CTO 這個級別才能接觸的栏渺,而 C4 模型的表達能力又不夠呛梆。所以,我并沒有直接套用這些內(nèi)容磕诊,而是根據(jù)個人經(jīng)驗填物,將我認(rèn)為最有效果的架構(gòu)圖整理出來。這些架構(gòu)圖霎终,都是我在不同類型不同規(guī)模不同業(yè)務(wù)的公司(華為滞磺、UC、阿里和螞蟻等)里面驗證過的莱褒,你可以放心地使用击困。