對於領域,業務,業務模型,解決方案,BC,領域模型,微服務這些概念常常分不清,可是這些知識在進行領域建模及DDD落地過程當中又比較重要。設計模式
進行DDD實踐時,回進行需求分析,領域劃分,領域建模等工做,系統落地則須要一套解決方案,若是實現一個電商平臺,須要一個複雜的系統解決方案,若是方案設計的過大,各模塊,組件柔和在一塊兒,就不利於整個系統維護-演進-伸縮等需求。因此須要對解決方案進行拆分,成爲一個個獨立的小的解決方案。微服務
領域表明問題域,解決方案表明解空間性能
解決方案的拆分每每沒有捷徑,仍是須要經驗,對系統的熟悉程度等狀況。利用軟件設計的各類原則,最佳實踐,設計模式,非功能特性需求,及團隊狀況來指導咱們解決方案的拆分和落地。設計
拆分有時能夠從性能角度切入,有時能夠從業務角度切入,有時能夠藉助CQRS,或者伸縮性角度考慮,找到適合本身團隊和項目自己狀況,最合適的就是最好的。對象
BC做爲界限上下文,是DDD的核心概念,有Bounded和Context兩個概念,一個場景糾纏多種上下文,是一個時空感的概念。 經過上下文邊界能夠對邊界內的領域模型進行對象概念的明確,若是沒有這個上下文邊界,同一個概念可能存在歧義,理解上產生誤差。好比商品在商品中心的BC中是聚合根,而在訂單的BC中含義不一樣,只是一個值對象。原型
領域模型是DDD中的核心概念,是業務拆分,軟件設計的綜合結果,任何一個領域模型,都是在特定的BC邊界內纔有意義。電商
業務模型是對業務概念及其關係的表達,領域模型在業務模型基礎上,採用OOA/D的思想進行進一步抽象的設計模型,領域模型中有聚合,實體,值對象的區分。多個業務模型能夠雜糅到某個領域模型之中。基礎
進行領域建模大體的過程:軟件
微服務出現以後,對於微服務的劃分和DDD中BC有很大的契合點,有相同的探尋邊界的原則。方法