2003年,DDD(領域驅動設計)這一軟體開發的方法與願景經由建模專家 Eric Evans 的經典著作Domain-Driven Design: Tackling Complexity in the Heart of Software 正式面世,當即獲得了廣泛關注和高度評價。18 年間,網上越來越多關於 DDD的文章和討論。為什麼我們現在還不停地討論 DDD?為什麼DDD仍然如此重要?
領域驅動設計常以戰略設計與戰術設計來將整個領域展現得淋漓盡致,其作用範圍既面向業務也面向技術。從戰略角度去規劃系統、劃分領域。而從戰術角度則從技術層面來指導我們該如何去設計。
隨著新開發技術的不斷髮展,尤其是微服務和容器化技術的引入,我們的應用系統趨向於更加優雅的設計。DDD設計思想在專案落地實踐過程中也在不斷進化。
COLA 是 Clean Object-Oriented and Layered Architecture的縮寫,代表“整潔物件導向分層架構”,是來自阿里技術專家的開源專案。目前COLA已經發展到COLA 4.0。COLA 4.0本質就是:程式碼規範+可複用元件+充血領域模型。
《COLA 4.x架構入門和專案實踐》技術專欄首先介紹了COLA框架的使用入門,以及與IDEA開發工具的整合等等;然後基於COLA架構,建立DDD經典示例專案-貨物運輸系統,詳細介紹了DDD領域建模、適配層、應用層、領域層和基礎設施層的程式碼開發、防腐層(ACL)設計與實現、領域事件(Domain Event)入門實踐、以及基於Kafka訊息中介軟體的訊息釋出和訂閱等等。內容由淺入深,從開發實戰出發,逐步掌握基於COLA架構和DDD領域建模思想構建複雜業務應用系統。
DDD 不涉及具體的開發技術,但也並非對技術漠不關心。
貨物運輸系統分為四個獨立的微服務應用:分別為預訂微服務(bookingms)、運輸微服務(routingms)、跟蹤微服務(trackingms)和裝卸微服務(handlingms),如圖所示。
本技術專欄主要內容如下:
- 開源COLA 4.0架構和DDD領域驅動設計入門介紹
- 體驗COLA示例應用專案craftsman:環境準備、啟動執行和程式碼分析(1)
- 體驗COLA示例應用專案craftsman:環境準備、啟動執行和程式碼分析(2)
- 如何使用COLA框架建立業務應用專案?
- COLA框架原始碼編譯釋出到本地Maven倉庫的完整過程
- COLA專案模板和IDEA開發工具的整合
- 基於COLA架構建立DDD經典示例專案Cargo貨物運輸系統和領域建模
- COLA架構和DDD經典示例專案:領域模型中命令和命令處理程式的實現
- COLA架構和DDD經典示例專案:Gateway介面和實現
- COLA架構和DDD經典示例專案:建立MySQL包裹預訂資料庫表和訪問賬號
- COLA架構和DDD經典示例專案:自動生成資料訪問層程式碼
- COLA架構和DDD經典示例專案:GatewayImpl實現類的開發
- COLA架構和DDD經典示例專案:資料流轉圖和轉換工具類開發
- COLA架構和DDD經典示例專案:服務介面和應用服務實現類的開發
- COLA架構和DDD經典示例專案:啟動應用併發起包裹預訂請求
- COLA架構和DDD經典示例專案:包裹查詢服務的實現
- 基於COLA架構建立運輸微服務應用和DDD領域建模
- 基於COLA架構開發和實現運輸微服務應用
- 防腐層設計與實踐:隔離限界上下文之間的耦合,實現乾淨的領域模型
- 防腐層設計與實踐:在包裹預訂服務中透過防腐層實現包裹路由服務
- 領域事件入門實踐:包裹預訂事件和包裹路由事件建模
- 領域事件入門實踐:基於Kafka訊息中介軟體釋出領域事件
- 基於COLA架構建立包裹跟蹤微服務應用和DDD領域建模
- 領域事件入門實踐:基於Kafka訊息中介軟體監聽包裹預訂事件和包裹路由事件
- 領域事件入門實踐:監聽包裹路由事件的完整實現
- 包裹預訂、運輸、跟蹤服務之間的聯調測試
- 基於COLA架構建立包裹裝卸微服務應用和DDD領域建模