DDD 領域驅動設計是什麼?

2021-10-02 13:37:34 字數 1630 閱讀 1470

最近幾年,微服務的設計思想,架構方案非常流行,能夠很大程度上保證我們的高效能和高可用,可是微服務設計過程中往往會面臨邊界如何劃定的問題 ,這個時候就需要一種理論指導,這時候來自2023年 埃里克・埃文斯(eric evans)的領域驅動設計理論能夠幫助我們更好的進行,也是微服務架構實踐中非常核心的一部分。

ddd是一種通過把設計實現與不斷修正發展的模型緊密關聯起來,來應對複雜需求的一種軟體開發思路。

領域驅動設計的前提是:

如果覺得應對複雜需求的一種軟體開發思路這句話比較難理解,我們可以來簡單看一下架構的演進。

​ 架構是在不斷演進的,一般情況下會經歷到從單體模式 、集中式到分布式微服務架構三個階段的演進。隨著網際網路公司的發展,分布式技術的越來越成熟,我們已經進入到了微服務架構的時代。

一般傳統的開發都是單體架構 :採用面向過程的設計方法,系統包括客戶端 ui 層和資料庫兩層,採用 c/s 架構模式,整個系統圍繞資料庫驅動設計和開發,並且總是從設計資料庫和字段開始。

轉向微服務設計架構:隨著微服務架構理念的提出,包括一些開源架構對分布式技術的支援。微服務的這種架構風格,迅速受到了企業和技術人員的推崇,微服務架構可以很好地實現應用之間的解耦,解決由於單體應用導致的擴充套件性和彈性伸縮能力不足的問題。 配合一些比較流行的虛擬化技術,能夠實現妙級別的映象拉起,極大地增強了應用的的彈性伸縮能力。

ddd 是一種處理高度複雜領域的設計思想,它試圖分離技術實現的複雜性,並圍繞業務概念構建領域模型來控制業務的複雜性,以解決軟體難以理解,難以演進的問題。

ddd 不是架構,而是一種架構設計方**,它通過邊界劃分將複雜業務領域簡單化,幫我們設計出清晰的領域和應用邊界,可以很容易地實現架構演進。

戰略設計:

說到戰略設計,我們要站在乙個比較高的視角來看待這個問題,戰略設計要解決的就是某個領域的問題,所以戰略設計時,我們要構建好領域模型,保證我們的大方向是不會錯的

戰略設計主要從業務視角出發,建立業務領域模型劃分領域邊界建立通用語言的限界上下文,限界上下文可以作為微服務設計的參考邊界。

戰術設計 :

戰術設計則是要求我們從業務模型轉向微服務落地 我們會將領域模型中的領域物件與**模型中的**物件建立對映關係,將業務架構和系統架構進行繫結。當我們去響應業務變化調整業務架構和領域模型時,系統架構也會同時發生調整,並同步建立新的對映關係。 也有演進式架構的含義在裡面。

說到這裡,大家可能對ddd有了乙個粗略的,大體的認識,我們可以理解到,ddd能夠幫助我們更好的在微服務的架構中進行合理的拆分,由於ddd要求我們建立標準的業務領域模型,所以ddd也能夠很好地幫助我們設計企業的中颱,ddd是一把利器,幫助我們解決架構中遇到的問題和挑戰。

DDD領域驅動設計 為什麼需要DDD

定義 在乙個孤立系統裡,如果沒有外力做功,其總混亂度 熵 會不斷增大。這裡面有三個詞非常重要 孤立系統 無外力做功 總混亂度 熵 首先我們來解釋什麼是 熵 熵 entropy 最早在1865年由德國物理學家克勞修斯提出,用以度量乙個系統 內在的混亂程度 你可以理解為,系統中的無性能量。比如物質總是向...

DDD領域驅動設計

公司裡面敏捷專案要講ddd領域驅動設計,加緊學習了一下,找了一些資料研究。eric evans的 domain driven design領域驅動設計 簡稱ddd,evans ddd是一套綜合軟體系統分析和設計的物件導向建模方法,本站jdon.com是國內公開最早討論ddd 之一,可訂閱 ddd專題...

DDD(領域驅動設計)

domain 領域 driven 驅動 design 設計 由eric evans最先提出,目的是對軟體所涉及到的領域進行建模,以應對系統規模過大時引起的軟體複雜性的問題。整個過程大概是這樣 開發團隊和領域專家一起通過 通用語言 ubiquitous language 去理解和消化領域知識,從領域知...