以前有同事在分享DDD在閒魚商品詳情頁的實踐時,你們對閒魚團隊領域建模關於商品詳情頁的聚合根建模表示不認同。
由於這是面向頁面建模,不是面向領域建模,將微服務拆分和領域建模混爲一談了
因而我以聚合根定義做爲引子,結合組內在實踐DDD過程當中,聚合根隨着業務查詢複雜而致使聚合根不斷膨脹的問題,提出借鑑CQRS讀寫分離的理念,來解這個問題。 詳見DDD-CQRS能解聚合根的問題嗎 引起了你們對領域模型的從新思考和激勵討論。歷經3小時得出了一些結論,達成了共識。數據庫
一般咱們說領域建模不該該去考慮微服務架構,工程結構,應該專一於業務。
但在實踐過程當中發現這並非一個好的方式,或者說是可落地的。由於業務領域建模完成後,仍是要反映到系統架構中,
最終是要落地到代碼實現,經過代碼來表達出領域模型。因此說咱們的討論不該該是脫離
系統架構的。可是當咱們發現業務領域建模完,經過代碼實踐一段時間後,發現代碼模型腐化了,這時候
咱們首先思考的方向不該該是經過代碼來糾正,而是應該回歸到業務建模。架構
注意,聚合根裏面沒有實體,並不意味着數據庫就只有一張表,能夠設計成多張表。DB設計和領域建模沒有關係微服務
品牌信息和店鋪
店鋪依賴品牌,可是店鋪有本身獨立的生命週期。他們的數據沒有一致性要求。因此店鋪是一個聚合根設計
門店商品有本身的價格,返傭。須要單獨編輯,是一個實體。脫離了門店後沒有生命終結。
下期問題
目前咱們只討論了實體類型的聚合根,沒有討論業務過程的聚合根,好比轉帳對象
關注公衆號【方丈的寺院】,第一時間收到文章的更新,與方丈一塊兒開始技術修行之路
blog