DDD悖論:DDD是不是銀彈?
在關於DDD的每本書和每次會議中,我都聽到“DDD不是銀彈”。我可能是唯一一個反思的人。因此我可能會錯過一些東西。
不過,自從我開始學習DDD以來,我就在每個專案中使用它。即使在CRUD實現足夠好的簡單情況下也是如此。
因為了解我的領域名並能決定CRUD是否能足夠好地實現。
在可能的情況下進行一到兩次事件風暴會議。我嘗試瞭解子域,看看它們是如何與我的有界上下文對齊的。我知道核心領域的知識。這是DDD的戰略模式對於幫助我理解上下文至關重要,以便決定是否適合應用DDD。
當你不需要它時你需要它
我需要DDD戰略模式來深入瞭解一個領域,以決定DDD戰術模式是否與其相關並可應用?如果有的話。換句話說:戰略模式對於理解任何領域都很有用,而戰術模式可能與您的業務上下文不太相關。
CQRS絕對不是銀彈,事件溯源,儲存庫,實體或價值物件也不是。但DDD在其戰略方面(領域分析,有界上下文等)一直非常有用。
但有時你卻不使用它。
正如Liz Keogh 在DDD Europe 2016上的出色解釋。她對Cynefin框架進行了精彩的討論。當您處於框架的混亂區域時,甚至可能無法使用戰略模式或任何其他工具來分析業務,因為任何分析都是不可能的。你先行動,然後感覺並做出反應。
但作為一名顧問,在這樣一個混亂的環境中,我從來沒有被召喚過,或者我從未認識到它。我通常被稱為在遺留系統上工作,這些遺留系統由過多的技術重點和很少的域分析構成,所有這些都在複雜的業務領域。每次DDD戰略模式都能幫助我更快地做出更好的診斷。
DDD定位應該在哪裡?
即使在專案的實施方面,DDD也有很多有用的東西。它並不總是關於CRUD或CQRS和事件採購。但它總是根據領域語言泛在語言命名方法,類,介面和模組。這是DDD。
如果我鼓勵技術專家和領域專家之間的合作並反覆工作以完善概念模型,我可以聲稱我正在做DDD。
如果感謝這種緊密的合作,我們可以很早發現我們想要構建的軟體對業務並不重要,我仍然可以說我正在做DDD。它可以為公司節省資金,例如透過選擇通用的現成解決方案,或者決定構建快速CRUD解決方案。
DDD是一種甚至可以幫助您確定何時不需要它的方法,這是DDD悖論。這反而使得它非常普遍。一種普遍的方法對我來說似乎是一顆銀彈。
相關文章
- DDD是不是過度工程理論?
- ddd
- ddd-crew/ddd-starter-modelling-process:DDD設計入門建模流程
- DDD隨談
- DDD與Repository
- 淺析 DDD
- 領域驅動設計的DDD與ddd - nick
- DDD理論學習系列(3)-- 限界上下文
- 跨越DDD從理論到工程落地的鴻溝
- 當SOA遇到DDD
- 談一談 DDD
- DDD文章推薦
- DDD實踐反思
- 使用DDD澄清MVVMMVVM
- DDD之1微服務設計為什麼選擇DDD微服務
- 實施DDD的幽默:DDD落地需要專門的框架嗎?框架
- 大型商業銀行主機架構轉型DDD實踐架構
- 架構-初識DDD架構
- DDD精粹速讀(一)
- DDD精粹速讀(二)
- DDD三難困境解析
- DDD應用場景
- DDD被高估 | Stefan Tilkov
- DDD的戰術模式模式
- 你真的做對了ddd嗎?附上ddd社群貢獻者名單!
- 為什麼我越來越喜歡用DDD — DDD架構篇(1)架構
- 可落地的DDD(4)-如何利用DDD進行微服務的劃分(2)微服務
- 反DDD模式之“複用”模式
- 運用領域模型——DDD模型
- DDD 中的那些模式 — CQRS模式
- Java實現DDD中UnitOfWorkJava
- DDD之2領域概念
- DDD聚合設計原則
- DDD基礎知識1
- DDD游擊隊 - yannick grenzinger
- DDD for everyone - Google 幻燈片Go
- React的併發悖論React
- GitHub - kgrzybek/modular-monolith-with-ddd: DDD單體模組化架構.NET案例原始碼GithubMono架構原始碼