面临的问题:
- 代码可读性很差,每个服务之间调用繁杂,流程混乱
- 修改优化某服务业务代码时,促使无关的服务的测试用例失败,同时单个功能开发者很难快速就明确问题关键所在。
- 测试用例特别难编写,需要 mock 大量数据来拉起整块服务
DDD解决的问题:
-
1、DDD 帮助解决微服务拆分困境:
DDD 对业务分析时,首先会使用「聚合」把关联性强的业务概念划分在一个边界下,并限定「聚合」和「聚合」之间只能通过「聚合根」来访问,这是第一层边界。
其次,在「聚合」基础之上根据「业务相关性」、「业务变化频率」、「组织结构」等约束条件来定义「限界上下文」,这是第二层边界。 有了这两层边界作为约束和限制,微服务的边界也就清晰了,拆分微服务也就变得简单了。
-
2、DDD 有助于统一语言:
领域驱