DDD(Domain-Driven Design)是一種專注於解決複雜業務系統的設計方法。核心理念是通過理解業務需求來驅動系統設計,使結構更清晰、功能更合理。DDD 強調分解大型系統中的業務領域,使其更適合微服務架構。DDD 是一個不小的主題,這邊先簡單寫上重點,後續會以實作的方式來做介紹。
策略設計專注於將需求拆解為子域(subdomains),使用 Event Storming 等方法發現問題,並劃分為核心子域、支撐子域與通用子域。Context Map 可清晰定義這些子域之間的邊界,避免設計混亂。
Bounded Context 定義業務邊界,確保每個子域的模型和邏輯獨立運行。在 Bounded Context 中,使用通用語言(Ubiquitous Language)保持開發與業務專家之間的溝通一致性。
Aggregate 是 DDD 中用來將相關物件(Entity 和 Value Object)組合在一起的模式,由 Aggregate Root 管理,確保數據一致性。所有操作必須通過 Aggregate Root 進行。
DDD 也涵蓋技術層面的實現,使用設計模式(如 Aggregate、Repository、Factory、EventHub)來實現子域的業務需求,確保系統的健壯性與可擴展性。而 Aggregate 則是 Tactical Design 的核心概念,定義了如何將一組相關的業務對象(如 Entity 和 Value Object)組合成一個不可分割的單位。Aggregate 通過 Aggregate Root 來管理內部的 Entity,並確保所有的操作都經由 Aggregate Root 進行。這樣的設計模式有助於控制數據的一致性,防止系統中的其他部分隨意修改 Aggregate 中的數據。
DDD 提供了一個以業務為核心的設計框架,Aggregate 的引入確保了數據一致性與業務邏輯的集中管理。通過設置明確的邊界和責任劃分,DDD 讓開發者能夠更好地處理複雜的業務邏輯,並通過 Aggregate 的使用來促進系統的高內聚和低耦合。
DDD 實作分為兩大部分:
最後,再次強調,Aggregate 的概念十分重要,後續的實作將圍繞著它來開發。