知识卡片

DDD战略设计与战术设计的分工

普通读书笔记卡

内容

DDD由战略设计和战术设计两部分组成,分别从不同视角完成领域建模和微服务的拆分设计。战略设计从业务视角出发,划分业务的领域边界,建立基于通用语言和业务上下文语义的限界上下文,构建领域模型——限界上下文本身就可以直接作为微服务拆分和设计的边界。战术设计则从技术视角出发,侧重于把领域模型落实为具体的技术实现,按领域模型完成微服务的开发落地,涉及聚合、聚合根、实体、值对象、领域服务、领域事件、应用服务、仓储等一系列领域对象,这些对象会以代码的形式映射到微服务中完成系统落地。这个两阶段分工的价值在于把”业务该怎么划分”和”代码该怎么实现”清晰地拆成两个独立但衔接的步骤:先在战略设计阶段完全从业务语言和业务规律出发想清楚边界在哪里,不掺杂技术实现细节的干扰;再在战术设计阶段把已经想清楚的业务边界转译成具体的代码结构,业务架构的变化会同步驱动技术架构的调整,两者始终保持映射关系而不会走偏。

参考来源

- 位置:第3章《微服务设计为什么要选择DDD》"3.3 为什么DDD适合微服务"(源文件:_epub-src/OEBPS/Text/chapter2-3-3.xhtml) - 结论依据:原文说明"DDD包括战略设计和战术设计两部分,它们分别从不同的视角出发,完成领域建模和微服务的拆分和设计。战略设计是从业务视角出发……而限界上下文就可以作为微服务拆分和设计的边界。战术设计则是从技术视角出发,侧重于对领域模型的技术实现",直接支撑本卡片结论。 - 原始内容:战略设计是从业务视角出发,划分业务的领域边界,建立基于通用语言和业务上下文语义边界的限界上下文,构建领域模型。而限界上下文就可以作为微服务拆分和设计的边界。战术设计则是从技术视角出发,侧重于对领域模型的技术实现,按照领域模型完成微服务的开发和落地。