DDD领域驱动设计
2022-03-05 11:54:01
领域驱动设计理念,以业务主体为代码设计的骨架,通过业务中的限界上下文划分子域,完美的契合微服务的服务拆分理念,将微服务的服务拆分提供业务依据
1. 主要流程
领域驱动设计主要分为战略设计和战术设计,战略设计由领域专家组织产品、开发、销售等关键人员进行事件风暴会议,然后梳理出来重点的事件流,依据事件流绘制出领域图,定义通用语言,通过领域图定义限界上下文来划分核心子域、支持子域和通用子域,划分完成后进行战术设计,定义好实体、值对象、聚合、聚合根、领域服务、应用服务、领域事件、仓储、工厂等关键模型。
2. 战略设计
2.1 事件风暴会议
由当前业务相关的领域专家发起或主持,产品、开发、销售人员都参加,围绕业务关键要点绘制事件流
2.2 事件流
事件流分为读模型、操作者、决策命令、外部系统、聚合、事件、策略等模块组成,加上部分描述信息组成完成的事件流,将所有的查询操作放入读模型有利于后续的CQRS中查询、命令的落地。
事件流的绘制是需要非常规范的一套流程,需要领域专家传递出来业务要点然后大家进行补充,需要所有人都参与到讨论当中。后续会详细出一篇博客介绍事件流绘制流程和要点。
2.3 限界上下文和子域
通过限界上下文将事件流划分为不同子域,以是否为核心业务来判断子域的类型,核心子域为该领域的最核心业务,例如商城领域中的支付、商品子域都是核心子域,支持子域则是辅助核心子域的例如促销子域、客服子域等,通用子域则是第三方接口划分出来的子域,例如短信子域、第三方物流平台、第三方支付平台。
3. 战术设计
未完待续…