應用架構的設計方法
應用架構的設計大概分爲以下幾個階段:
圖例:應用架構設計方法整體概述
階段 1:需求分析
圖例:應用架構設計 - 需求分析階段
本階段的主要工作就是進行需求分析。
通過業務架構中的業務能力與業務流程,進一步梳理業務流程,提取業務活動及相關操作。這個階段要和業務團隊緊密合作,瞭解真實的業務流程和業務需求,並通過業務語言建立統一的溝通語言,確定相關的流程圖、狀態圖,對可能的業務域及相關的業務能力進行描述,識別關鍵場景和熱點域。同時,要多方面收集信息,收集信息時可以從局部到整體或者從整體到局部,儘量將各域的關鍵信息都收集到。
階段 2:領域模型設計
圖例:應用架構設計 - 領域模式設計階段
通過 DDD,結合第一階段的需求分析,整理收集到的關鍵信息,並通過 DDD 的用例分析法、四色建模法或者事件風暴法,初步識別領域服務及相關的界限上下文等關鍵信息,進而得出初步的領域模型。在此過程中,分析應用相關的業務功能和應用組件,構建業務活動與應用的關係,建立映射,進而通過領域建模,識別核心領域功能、領域模型,分析應用架構的風格,並初步梳理應用架構對技術架構和數據架構的風格要求。
階段 3:服務設計
圖例:應用架構設計 - 服務設計階段
服務設計主要包括服務識別、服務篩選、服務目錄、服務分類、服務接口等。
-
服務識別:基於領域識別的服務,初步基於分層原則進行梳理,如服務之間的依賴關係、獨立原則,作爲候選服務列表。
-
服務篩選:對候選服務進行評估和篩選,可以從範圍、複用度、敏捷度、能力要求、易用度、邊界、風險、性能等多維度考慮。
-
服務目錄:定義服務應用領域,定義服務和應用的邊界,定義服務規約,識別服務類別和範圍,如功能範圍、安全策略、交互模式、質量要求等。
-
服務分類:根據服務的不同層次對服務進行分類,可以分爲企業服務、應用服務、流程服務、數據服務、共享服務、微服務、集成服務等。
-
服務接口:進行服務的接口描述,爲實現做指引。將抽象出來的業務服務進行接口化梳理,需要做到職責單一、進行版本管理等。
階段 4:應用架構初步設計
圖例:應用架構設計 - 應用架構初步設計階段
此階段進一步從整體分析應用架構。通過整體的一張圖體現系統核心應用的分佈,以及它們之間的交互關係,爲後續數據架構和技術架構作爲重要的輸入。
這時候,我們得到了初步的應用架構,接着可以進一步分析現狀應用架構和目標應用架構,此時不用關注如何實現這個過渡,重點是明確當前和未來,進而我們可以通過架構委員會,對應用架構進行整體的評估,並且可以邀請相關的業務和技術專家參與。
我們要重點分析應用架構的各個組成要素,現狀應用架構和目標應用架構,領域模型和服務設計是否合理,是否可以指引後續架構和項目的進行,使得企業所有人員可以清晰地瞭解應用架構的定位與發展方向。
階段 5:優化迭代
圖例:應用架構設計方法 - 優化迭代階段
應用架構需要不斷地迭代和優化,因爲應用架構涉及系統的方方面面,連接着業務和技術,在這個過程中我們很容易有考慮不周之處,這就需要制訂一個迭代的計劃,同時需要包含架構治理層面,如用架構的評估和激勵機制加以支持。
此外,從服務生命週期的完整性角度來說,除了服務設計,還涉及計劃、設計、實現、測試、發佈、運行、升級、棄用等生命週期。下面補充一些環節,大部分需要在後續章節的技術架構部分加以考慮。
-
服務實現:通過 DDD、微服務或者雲原生方式,進行服務的實現,並考慮服務接口、版本、協議,以及服務開發、測試等流程。
-
服務註冊:註冊中心的協調,如註冊中心與服務消費者、提供者之間的同步及問題排查等,確保相關的數據一致。
-
服務組合:通過對服務進行編排,構建組合服務或者流程服務,實現企業的業務流程,或者通過更友好的界面配置等低代碼能力簡化實現。
-
服務發佈:服務對外發布,包括服務註冊極限的管理,通過服務註冊中心使得服務提供者和消費者可以進行交互。此過程包括灰度發佈、滾動發佈等發佈形態。
-
服務部署:將服務部署到運行環境中,可以採用靜態或者動態部署方式,並且需要考慮系統的資源,包括擴容、版本管理、升級策略等。
-
服務監控:監控服務的健康狀況,如服務鏈路情況、基礎資源情況等,對服務的安全性、性能和可用性進行服務追蹤、性能優化、一致性和兼容性管理。
-
服務測試:測試服務的功能性和非功能性指標。
-
服務終結:服務的最後一個狀態,不僅需要更新註冊中心中服務的狀態,還需要考慮終結的節奏,比如灰度分批,並與業務方溝通好。
-
服務治理:包括服務新增、修改、刪除等版本管理,對應的升級替換管理,以及服務質量保障,如提供服務的 SLA 管理、部署和驗收、集成管理等。
-
服務安全:對服務進行必要的訪問控制、鑑權控制及必要的數據保護等。
在應用架構設計過程中,可以採用一些理論和工具,如DDD
、ArchiMate
、UML
(統一建模語言)等。
不過,應用架構的重點是進行應用功能和服務能力的識別,最終的結果可以藉助文檔、繪圖工具,我們可以選擇通用的架構設計工具,如EA
、Archi
等。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/6NYqH5tMTMKUhNBTbRsFlA