DDD、中台与微服务的铁三角
# DDD、中台与微服务的铁三角
合并整理中台相关的三讲(含答疑)。一句话先总结三者关系:中台是业务模型,微服务是模型的系统落地,DDD 是同时指导两者的方法论。
# 一、平台 ≠ 中台
很多公司说"我们十年前就做平台了,中台不就是换个名字?"——还真不是。
平台:把部分通用能力独立出来,通过 API 共享,解决重复建设问题。但各平台之间仍然是分离独立的,没有从页面、流程到数据的全面融合。
中台:站在企业级高度,把核心服务链路(会员、商品、交易、营销……)当作一个整体产品来做,给前台提供的是业务解决方案,不是一堆彼此独立的系统。
差异总结成三个关键能力:
- 对前台业务的快速响应能力
- 企业级复用能力
- 前台、中台、后台从页面、流程到数据的无缝联通融合能力
平台解决了"复用",但离"联通、融合"还有距离。
# 二、传统企业的中台策略和阿里不一样
阿里的中台更多对应 DDD 的通用域(通用能力沉淀共享)。但传统企业渠道多(门店、电商、APP、开放给第三方的生态),历史上每个渠道各建一套系统,导致"后端双核心、前端两张皮"。
所以传统企业不仅要把通用能力中台化,还要把核心能力中台化,让不同渠道复用同一套核心业务能力。
- 通用能力中台 → 对应 DDD 通用域/支撑域
- 核心能力中台 → 对应 DDD 核心域
- 微服务拆分后的数据孤岛、融合问题 → 数据中台的职责
# 三、前中后台怎么协同
有个很形象的比喻:
| 角色 | 类比 | |
|---|---|---|
| 前台 | 面向客户,随需求调度中台能力 | 作战部队 |
| 业务中台 | 沉淀专业能力,API 输出 | 专业军种(陆军/空军) |
| 数据中台 | 汇集数据、分析决策 | 情报中心 + 总指挥部 |
| 后台 | 内部管理、流程审核 | 后勤部队 |
几个实践要点:
前台:不管后端有多少个中台,用户感受到的只有一个前台。可以借鉴微前端思想,页面动态组合 + 流程编排,实现前端复用和融合。
数据中台:三步走——先汇集各中台数据解决数据孤岛,再做全维度深度融合加工,最后萃取数据价值支持业务创新。注意它不只服务分析场景,配合 CDC 技术也能支撑交易型场景。
后台:管理类需求(审批、内控)别嵌进核心业务流程,按角色聚合功能后像小程序一样挂到前台入口。核心链路干净了,各渠道前台才容易融合。
# 四、DDD 视角下的对应关系
把 DDD 领域建模和中台建设两个视角对到一起:
企业全部业务 = 领域
├── 核心域 → 核心中台
├── 通用域 → 通用中台
├── 支撑域 → 通用中台
└── 限界上下文 → 微服务
2
3
4
5
子域和中台在功能范围上是一致的,所以干脆统一语言:子域 = 中台。以保险为例,核心中台是营销、承保、理赔,通用中台是订单、支付、客户、用户。
# 五、中台建模五步法
- 业务域拆中台:核心域按业务流程切,通用域按功能聚合切,再归类到核心/通用中台
- 单个中台内做事件风暴:找实体、聚合、限界上下文,建立初版领域模型
- 跨中台扫描重构:不同中台独立建模后,会有对象重复、功能放错位置的情况——以主领域模型为基准,扫描其它模型,提炼重组
- 换一个主领域模型重复第三步,直到所有模型比对完
- 领域模型映射微服务,落地实现
第 1~4 步是战略设计(业务建模),第 5 步是战术设计(系统落地)。
# 六、答疑精华(很多人都会问的三个问题)
# 1. 子域和限界上下文到底什么关系?有量化划分标准吗?
- 子域是粗分:按业务阶段或功能模块切,目的是把问题空间缩小到能做事件风暴的程度,不关心内部对象结构
- 限界上下文是细分:在子域内通过事件风暴划出来,产出领域模型,可直接指导微服务设计
- 没有量化标准,靠领域专家经验 + 团队权衡。也别指望一次建模就完美,领域模型本来就要多次迭代演进——边界划得清晰,演进成本就低
# 2. 为什么要工厂模式和仓储模式?依赖倒置图什么?
- 工厂模式:聚合内对象多时,聚合根、实体、值对象要同时实例化,全靠聚合根构造太复杂,交给工厂封装。构造简单就不用
- 仓储模式:应用逻辑通过仓储接口访问数据,仓储实现放基础层。换基础组件(比如换数据库)只换仓储实现,业务代码不动——这就是依赖倒置的现实收益
- 补充:统计、批处理这类找不到聚合根的场景(实体相互独立但业务内聚),可以当"非典型聚合"处理,不设聚合根,其它设计方法照用。不要为了 DDD 而 DDD
# 3. 事件异步了,发布方和订阅方数据不一致怎么办?
- 发布方:发 MQ 之前先把消息写本地库(和业务数据同一个本地事务)
- 订阅方:处理消息之前先把收到的消息写本地库
- 两边定期对账,发现不一致就定时重发,必要时转人工
微服务内的事件总线不是必须的——进程内事务好控制,如果不存在聚合间数据不一致的风险,直接用应用服务协调即可,别为引入而引入。
# 七、小结
- 平台是能力复用,中台是能力复用 + 联通 + 融合,高度不一样
- 传统企业要把核心能力也中台化,解决"双核心、两张皮"
- 子域 = 中台,限界上下文 = 微服务,DDD 战略设计管建模、战术设计管落地
- 所有原则都可以因地制宜地突破,唯一不能破的是:边界要清晰