如何畫出優(yōu)秀的軟件系統(tǒng)架構(gòu)圖

系統(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)圖杨幼。常見的類型整理如下:

常見的系統(tǒ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)圖

這張業(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)架構(gòu)圖

如果系統(tǒng)相對復(fù)雜,
建議首先用一張圖來展示系統(tǒng)架構(gòu)里面的角色(Role)以及每個角色的核心功能馆蠕;
然后再用一張圖來展示角色之間的關(guān)系(Relation)期升,可以參考一個支付中臺的系統(tǒng)架構(gòu)圖,如下所示:

系統(tǒng)架構(gòu)圖-Role

系統(tǒng)架構(gòu)圖-Relation
  1. 應(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
  2. 部署架構(gòu)圖【定義】描述后端系統(tǒng)具體是如何部署的豁翎,主要包含機房信息、網(wǎng)絡(luò)信息和硬件信息等隅忿⌒陌【使用場景】總體架構(gòu)設(shè)計。運維規(guī)劃和優(yōu)化背桐∮派眨【畫圖技巧】用圖標(biāo)代替區(qū)塊,這樣看起來更加美觀和容易理解链峭∑杪Γ【參考案例】一個簡單的支付系統(tǒng)的部署架構(gòu)圖如下所示:


    image.png
  3. 系統(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、阿里和螞蟻等)里面驗證過的莱褒,你可以放心地使用击困。

架構(gòu)圖小結(jié)

https://time.geekbang.org/column/article/482815

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市保礼,隨后出現(xiàn)的幾起案子沛励,更是在濱河造成了極大的恐慌,老刑警劉巖炮障,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件目派,死亡現(xiàn)場離奇詭異,居然都是意外死亡胁赢,警方通過查閱死者的電腦和手機企蹭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谅摄,你說我怎么就攤上這事徒河。” “怎么了送漠?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵顽照,是天一觀的道長。 經(jīng)常有香客問我闽寡,道長代兵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任爷狈,我火速辦了婚禮植影,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涎永。我一直安慰自己思币,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布羡微。 她就那樣靜靜地躺著谷饿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拷淘。 梳的紋絲不亂的頭發(fā)上各墨,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天指孤,我揣著相機與錄音启涯,去河邊找鬼。 笑死恃轩,一個胖子當(dāng)著我的面吹牛结洼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叉跛,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼松忍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了筷厘?” 一聲冷哼從身側(cè)響起鸣峭,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酥艳,沒想到半個月后摊溶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡充石,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年莫换,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡拉岁,死狀恐怖坷剧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喊暖,我是刑警寧澤惫企,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站陵叽,受9級特大地震影響雅任,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咨跌,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一沪么、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锌半,春花似錦禽车、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至记焊,卻和暖如春逸月,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背遍膜。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工碗硬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瓢颅。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓恩尾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挽懦。 傳聞我的和親對象是個殘疾皇子翰意,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容