大型複雜系統的架構設計思考

一、背景

         架構設計存在兩類系統的設計:大型系統和簡單系統的架構設計。如何進行簡單系統(單系統)設計我們看到的文章很多,大型系統設計相對較少。如何進行大型系統設計?是我們今天討論的話題。

         首先,我們需要思考幾個問題。

1、  大型系統和簡單系統設計有什麼區別?

2、  大型系統設計不就是分佈式設計嗎?

3、  如何進行大型系統設計?

二、大型系統與簡單系統設計的區別

從系統的簡易程度可以將系統分爲複雜系統或簡單系統。我們這裏成複雜系統爲大型系統,大型系統是複雜系統,一般是指規模大、複雜度高的系統。而簡單系統是指規模小,複雜度也不高的系統,一般是單體,也可能是分佈式架構的簡單系統。簡單的對比如下:

53YnM9

三、大型系統設計不就是分佈式設計嗎

         通俗講,大型系統是有多個單體系統或簡單系統組成的。一般都是分佈式系統。爲什麼不用分佈式系統呢?因爲分佈式已經到了技術層面,而系統的設計,應該從非技術到技術。而不是本末倒置。有沒有遇到這樣的情況,分佈式技術學了一大堆,結果沒搞清楚,如何進行架構設計,難道架構就是技術的堆砌嗎?

四、如何進行大型系統設計

         面對複雜問題,一般採用 “分而治之” 的思想,將大問題分解爲小問題,解決掉小問題,大問題自然迎刃而解。對於系統設計來說,就是將系統拆分到適當的粒度,再組合的過程。分佈式系統,微服務架構都是 “分而治之” 思想的體現。事物是變化的,深一點講,如果掌握了事物的本質,自然不必爲問題而煩惱了。

         一般系統的設計,需要考慮幾個層面,1 是業務層面,2 是系統層面,3 是技術層面。業務層面是把要解決的問題搞清楚,系統層面進行系統的設計,技術層面確定使用什麼使用實現。

         寫到這裏,突然發現沒什麼可寫的了,採用分而治之思想,針對業務,系統,技術三個層面進行設計就可以了。(微笑)簡單系統也是這麼設計呀?(微笑)簡單思考是這麼回事,遇到的問題類型類似,但是設計的深度不一樣,規模不一樣呀。比如:管理一個公司和一個國家,都是管理,兩者的管理一樣嗎?

         以上是知道了該做什麼?那怎麼做呢?

4.1 大型系統的設計步驟

   大型複雜系統的設計不是一開始就進行架構設計,核心也不完全是分佈式技術架構。而是要從業務開始,進行逐步設計的過程。其實簡單系統也是類似的邏輯,這也就是麻雀雖小,五臟俱全的道理吧。

   本文的核心是想通過引入企業架構的概念,打通很多技術人員不知道如何進行設計的問題(這也是筆者進行長時間架構學習和探索的感悟)。基本的架構設計步驟,如下:

   業務架構設計,系統架構設計,技術架構設計,輸出解決方案,其中系統架構又包括應用架構和數據架構,以上統稱爲企業架構。在進行了以上設計的基礎上,纔會進入單系統的設計(以 RUP 4+1 視圖爲參考)。

五、業務架構

系統建設是爲業務服務的,所有的系統建設都是爲了解決業務問題。因此,首先做的是進行戰略分析和業務架構設計。

業務架構是企業治理結構、商業能力與價值流的正式藍圖。明確定義了企業的治理結構,業務能力,業務流程、業務數據。業務能力定義企業做什麼,業務流程定義企業怎麼做。

(1)企業治理結構一般是指組織架構,包括組織結構,業務渠道和合作夥伴。

(2)業務能力包括價值鏈,功能域和功能子域。

(3)業務流程可以細分爲主幹流程,分支流程和業務規則。

(4)業務數據是支撐業務的簡單數梳理,包括數據域,數據模型和數據規則。

六、應用架構

         應用架構是一組應用系統及其交互關係的描述,每個應用系統都是一個 “邏輯功能組”,用於支撐業務功能、管理數據資產。

(1)應用架構不關注應用內部的結構,主要是識別業務和數據需要哪些系統支撐。

(2)應用架構很好的體現了 “分而治之” 的思想,在將功能識別後,分配到不同的應用。

(3)分析業務需要支撐的功能和服務,將功能和服務分配到組件和應用,設計應用之間的交互和協作。

從服務層面對業務進行支撐,主要是識別功能和服務,劃分應用系統,並完成應用系統的交互設計以及應用相關的管理工作。

七、數據架構

         數據架構是設計數據資產管理藍圖,用於指導如何分析數據需求,如何進行數據架構設計。包括數據的分類和來源,邏輯數據資產,物理數據資產,數據管理,以及數據的結構和交互。

         這塊可能有點繞口,看着熟悉卻不知道做什麼。簡單講就是建立數據模型,數據存儲和分佈設計,進行數據的管理。

八、 技術架構

         確定系統建設的技術體系,包括技術需求,技術選型,技術架構設計和技術管理等。

         技術選型:平臺選型(運行平臺,開發平臺),技術產品(框架,中間件,產品),物理選型(硬件,網絡)等;

         架構設計:組件架構,網絡架構,部署架構等;

         技術管理:技術大圖,選型標準,技術案例等;

九、 解決方案

綜合業務架構,應用架構,數據架構,技術架構完整整體方案的設計,可分爲《業務架構》和《技術架構》兩個文檔,《技術架構》包含應用架構,數據架構和技術架構。

十、參考資料

本文是閱讀《業務架構 · 應用架構 · 數據架構實戰》以及結合過往經驗和理解的總結,未深入談具體的架構設計方案。不足之處在所難免,歡迎留言討論。

花名:明心

多年研發和管理經驗,熟悉架構設計,設計模式,分佈式(微服務)系統,中間件領域,最近在學習企業架構和 DDD 領域驅動設計。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/k9TQiB1gkAZ3hvJshYtFuA