简介:微服务拆分的核心难题是边界不清, DDD 可以用 领域模型 指导边界划分
-
软件架构演进
-
单机架构
- 围绕数据库和过程式逻辑开发
-
集中式架构
- 典型三层架构,系统逐渐臃肿
-
分布式微服务架构
- 通过服务拆分提升扩展性和弹性伸缩能力
-

-
微服务设计困境
-
微服务粒度应该多大
-
微服务边界应该在哪里
-
服务到底按功能拆、按数据库拆,还是按业务拆
-
过度拆分会带来集成、运维、事务和调用复杂度
-
-
DDD 的核心作用
-
通过领域建模划定业务边界
-
通过限界上下文确定微服务候选边界
-
通过聚合确定微服务内部逻辑边界
-
通过领域对象与代码对象映射保持模型一致
-
-
DDD 的两类设计
|------|------|-------------------------|
| 类型 | 视角 | 产出 |
| 战略设计 | 业务视角 | 领域、子域、通用语言、限界上下文、领域模型 |
| 战术设计 | 技术视角 | 聚合根、实体、值对象、领域服务、应用服务、仓储 |

-
DDD 与微服务的关系
-
DDD 是架构设计方法
-
微服务是架构风格
-
DDD 负责把业务边界讲清楚
-
微服务负责把边界落到运行、部署和治理形态
-
-
关键结论
-
微服务拆分不能只看技术实现
-
先有清晰领域模型,才有清晰微服务边界
-
DDD 也适用于单体应用和中台设计
-