【建議收藏】手把手教你畫一個項目的技術(shù)架構(gòu)圖
本文相關(guān)資料下載

識別下方二維碼,回復(fù)【架構(gòu)】,獲得下載鏈接。
之后會持續(xù)整理一些可下載的學(xué)習(xí)資料分享給大家,大家記得將公眾號設(shè)置星標(biāo)哦!更多資料獲取、學(xué)習(xí)交流后臺回復(fù)【加群】
本文相關(guān)資料下載
識別下方二維碼,回復(fù)【架構(gòu)】,獲得下載鏈接。 之后會持續(xù)整理一些可下載的學(xué)習(xí)資料分享給大家,大家記得將公眾號設(shè)置星標(biāo)哦!更多資料獲取、學(xué)習(xí)交流后臺回復(fù)【加群】
系統(tǒng)架構(gòu),架構(gòu)啥?
雖然我本碩都是軟件工程專業(yè),軟件設(shè)計是一直在學(xué)的,軟件架構(gòu)設(shè)計思想也早早的學(xué)過,但是很長一段時間都不知道架構(gòu)到底是個啥東西。剛?cè)胄械臅r候只會寫代碼,后來變老手了,就開始寫項目文檔。
一開始還接觸不到核心,只是寫自己工作內(nèi)容相關(guān)的。之后當(dāng)項目經(jīng)理,就能看到完整的項目文檔,但是仍然不太明白為啥要那么多架構(gòu)圖。什么總體架構(gòu)、邏輯架構(gòu)、數(shù)據(jù)架構(gòu)、功能架構(gòu)、網(wǎng)絡(luò)架構(gòu)、運行架構(gòu)等等。

我反正是一頭的霧水,只顧把自己那攤子事兒搞定就完事了。其他的就追著開發(fā)那邊給畫。而且乙方做項目,基本都是先干活,后補文檔。后來,隨著項目越做越多,學(xué)習(xí)的知識也越來越豐富,最重要的是文檔越寫越多,慢慢的我也就明白了。
其實系統(tǒng)架構(gòu),說白了,就相當(dāng)于房子的設(shè)計過程。需要一個總體的樣子,還得有里面的支撐結(jié)構(gòu),還要設(shè)計好水暖管線,外殼的裝飾以及樣板房的設(shè)計。每一個內(nèi)容都得要一套圖紙,產(chǎn)出結(jié)果自然就是各種架構(gòu)圖了。

這些架構(gòu)圖都表達啥?
講真,要寫好這篇文章,得把《系統(tǒng)架構(gòu)師》的考試內(nèi)容細細的讀一遍才行。
我這糙就糙一些吧,你看個大概,回頭我再細化,寫的不對的地方,可以加我微信,給我提意見,我給發(fā)紅包。
總體架構(gòu)
總體架構(gòu)呢,就是買房的時候進門看到的那個大沙盤:整個小區(qū)有多大,樓有多高、里面的環(huán)境是咋樣的?都有哪些配套?方方面面看個大概。所以總體架構(gòu)基本上把下面所有的架構(gòu)都體現(xiàn)了。下面所有的架構(gòu)也都是要與總體架構(gòu)保持一致。
總體架構(gòu)需要說明幾件事情:
1、整個系統(tǒng)的硬件設(shè)置是怎么回事?
2、數(shù)據(jù)大概是從哪里來,怎么采集、存儲、處理、交換的?
3、做了哪些功能抽象,以便于支撐上層的應(yīng)用?
4、提供哪些業(yè)務(wù)應(yīng)用?管理、控制等功能有哪些?
5、終端用戶怎么訪問和使用這些應(yīng)用?
6、該系統(tǒng)與外部系統(tǒng)是怎么進行對接的?
7、如何保障整個系統(tǒng)的安全、可靠、高質(zhì)量的建設(shè)?

這個整體架構(gòu)還是比較簡單的,復(fù)雜的手機上沒法看。你打開看個意思就行了。
邏輯架構(gòu)
其實總體架構(gòu)有了,邏輯架構(gòu)也就有了。為啥呢?如果說總體架構(gòu)是整個小區(qū)的沙盤,那邏輯架構(gòu)就是這棟樓房了。把小區(qū)大門、綠地、路等保障小區(qū)安全、有序的東西去掉。所以邏輯架構(gòu)里會去掉各種保障、底層的硬件基礎(chǔ)等非軟件開發(fā)邏輯核心的內(nèi)容。
所以有很多簡單的項目壓根就不寫邏輯架構(gòu),直接用總體架構(gòu)就行了。復(fù)雜的呢,就要把上面總體架構(gòu)中間分層的邏輯給寫清楚一些。
邏輯架構(gòu)設(shè)計的目的就是為了告訴讀者,整個系統(tǒng)是怎么產(chǎn)生左右的。所謂的系統(tǒng)架構(gòu),主要說的就是這部分。早期的單體架構(gòu)、后面的各種分層架構(gòu)、微服務(wù)、服務(wù)網(wǎng)格等,說的都是在這里進行設(shè)計。
在設(shè)計的時候,會用到很多種設(shè)計模式,比如你看到有一個應(yīng)用支撐層/服務(wù)層之類的,這就是做了一個MVC,把業(yè)務(wù)邏輯和用戶前端分離。而所有的邏輯架構(gòu)都有數(shù)據(jù)層,這是最早的MVP,即數(shù)據(jù)、用戶視圖和處理邏輯分離。當(dāng)然,系統(tǒng)越復(fù)雜,架構(gòu)圖就越復(fù)雜。這里只是給一個簡單的圖供你參考了。

應(yīng)用架構(gòu)
顧名思義,就是應(yīng)用太豐富了,需要整理整理。內(nèi)部有哪些應(yīng)用,怎么對外部提供服務(wù)。很多項目都沒有這個,因為應(yīng)用比較少,不值得多廢點人工單獨寫。

技術(shù)架構(gòu)
技術(shù)架構(gòu)要干啥也就很清楚了,就是每一層,我們都用什么組件、什么技術(shù)解決什么問題。

數(shù)據(jù)架構(gòu)
數(shù)據(jù)架構(gòu)其實就是從數(shù)據(jù)側(cè)描述數(shù)據(jù)怎么來、怎么存、怎么加工、怎么使用。就像這樣:

從數(shù)據(jù)源開始,數(shù)據(jù)通過哪些方式集成過來;集成到數(shù)倉之后,都存在哪里,數(shù)倉怎么分層,每一層都干啥;在數(shù)據(jù)集市中又怎么存、怎么管;到數(shù)據(jù)應(yīng)用層又提供哪些應(yīng)用。上面所有的一切,都用什么技術(shù),什么組件,解決什么問題。
部署架構(gòu)
部署架構(gòu)也叫網(wǎng)絡(luò)架構(gòu),就是底層服務(wù)器、網(wǎng)路的設(shè)計,提供網(wǎng)絡(luò)安全、服務(wù)可靠性的設(shè)計。再簡單一些理解,就是你這些應(yīng)用、數(shù)據(jù)庫都放在那臺服務(wù)器上,這些服務(wù)器都在哪個ip端,怎么進行訪問。

功能架構(gòu)
這個沒啥好說的,就是你的前臺頁面的功能菜單的目錄結(jié)構(gòu)。你怎么組織系統(tǒng)的所有功能,給用戶提供相應(yīng)的服務(wù)。
運行架構(gòu)
運行架構(gòu)其實就是軟件內(nèi)部,這些系統(tǒng)內(nèi)部是怎么運轉(zhuǎn)的,一般會畫很多時序圖、狀態(tài)圖、活動圖。這玩意可費勁了,我們一般不單獨畫一個運行架構(gòu),而是在概要和詳細設(shè)計里畫。
區(qū)別與聯(lián)系
傳統(tǒng)信息系統(tǒng)項目和大數(shù)據(jù)項目還是有很顯著的區(qū)別的。從架構(gòu)層面上來說,該有的肯定都得有,只不過其中的內(nèi)容會有側(cè)重點。我簡單對比一下,您將就著看:
| 對比項 | 傳統(tǒng)IT項目 | 大數(shù)據(jù)項目 |
| 重點 | 80%應(yīng)用 | 80%數(shù)據(jù) |
| 類型 | OLTP事務(wù)處理 | OLAP分析處理 |
| 安全 | 應(yīng)用安全 | 數(shù)據(jù)安全、質(zhì)量、治理 |
| 總體架構(gòu) | 側(cè)重業(yè)務(wù)應(yīng)用 | 放大數(shù)據(jù)層 |
| 邏輯架構(gòu) | 各種SOA、微服務(wù) | 各種DW、OLAP分層 |
| 技術(shù)架構(gòu) | 什么Spring、JSP、Ajax | 各種Hadoop生態(tài)組件 |
| 數(shù)據(jù)架構(gòu) | 側(cè)重關(guān)系型數(shù)據(jù)庫 | 側(cè)重分布式數(shù)據(jù)庫 |
| 部署架構(gòu) | 一般主從即可 | 集群 |
| 功能/運行 | 看項目,無偏向 | 看項目,無偏向 |
總結(jié)
所有的架構(gòu)都是基于業(yè)務(wù)出發(fā)的,因此脫離實際業(yè)務(wù)的架構(gòu)都是無意義的。
我們在進行架構(gòu)設(shè)計的時候,需要用不同的圖形來解釋、闡釋整個系統(tǒng)運行的肌理。
總體架構(gòu)涵蓋系統(tǒng)的方方面面;
邏輯架構(gòu)闡述整個系統(tǒng)是如何實現(xiàn)業(yè)務(wù)需求的;
技術(shù)架構(gòu)則從技術(shù)實現(xiàn)的角度闡述系統(tǒng)的構(gòu)造;
數(shù)據(jù)架構(gòu)講解數(shù)據(jù)從哪來,到哪里去;
部署架構(gòu)則講清楚系統(tǒng)放在那臺服務(wù)器上,怎么才能訪問到;
功能架構(gòu)用來組織業(yè)務(wù)功能;
運行架構(gòu)則解析系統(tǒng)內(nèi)部運行機理。
--end--
掃描下方二維碼 添加好友,備注【交流】 可私聊交流,也可進資源豐富學(xué)習(xí)群
更文不易,點個“在看”支持一下??
