跳至正文
来两杯美式
返回

DDD 复杂业务系统设计(总结):从领域到微服务,一张图看懂 DDD 落地全流程

By 来两杯美式
发布于更新于

前言

这一系列我从基础概念到落地,写了 10 篇关于 DDD 的文章。这一篇是收官之作

下面这张图,是整个系列的总览脉络。它把 10 篇串成 ① 三层视角 → ② 端到端路径 → ③ 落地成熟度 → ④ 核心心法你也可以把它当作这个系列的目录

DDD 复杂业务系统设计系列总览:三层视角、端到端落地路径、成熟度路线、核心心法

下面把图里画过的内容用文字展开,方便检索和深读。

一、关键概念速查表

把整个系列的核心概念浓缩在一张表里,方便查阅:

战略设计

概念一句话详细
领域 Domain有边界的问题空间#1 #2
子域 Subdomain拆小后的领域#2
核心域公司核心竞争力所在#2
通用域多个子域共用的通用能力#2
支撑域必需但不通用也不核心#2
限界上下文模型的边界 ≈ 微服务边界#3
通用语言上下文内的统一术语#3

战术设计

概念一句话详细
实体 Entity有 ID、生命周期延续#4
值对象 ValueObject无 ID、不可变、按值判断#4
聚合 Aggregate一致性边界#5
聚合根聚合对外的唯一接口#5
仓储 Repository聚合的加载/持久化接口#5
领域服务跨实体的业务逻辑#5 #7
领域事件已发生的事实#6

架构

概念一句话详细
DDD 分层用户接口/应用/领域/基础 四层#7
整洁架构洋葱形,依赖只能由外向内#8
六边形架构端口-适配器架构#8
中台企业级能力复用平台#9
业务中台业务能力的复用#9
数据中台数据价值的萃取#9
BFF服务于前端的后端#8

二、从战略到落地的完整路径

总览图模块 ② 已经把 8 步落地路径画得很清楚了——从「业务愿景」到「微服务系统 + 业务能力中台」。这里把每一步背后的关键决策点展开说:

遇到具体问题,回看对应文章

三、给不同角色的建议

架构师

后端开发

技术负责人 / CTO

产品经理

四、落地建议(按成熟度分阶段)

总览图模块 ③ 用 5 张卡片画了「业务初期 → 业务成长期 → 业务复杂期 → 中台建设期 → 规模化期」的成熟度路线。下面把每个阶段团队规模、关键动作、产出物展开:

阶段 0:业务初期(团队 < 10 人)

阶段 1:业务成长期(团队 10-50 人)

阶段 2:业务复杂期(团队 50-200 人)

阶段 3:中台建设期(业务 ≥ 3 条线)

阶段 4:规模化期(多业务 / 集团)

五、避坑清单

我整理了 10 个最容易踩的坑:

#正确做法
1所有子域都按核心域标准做区分核心/通用/支撑,资源倾斜核心域
2上下文越多越好能在一个上下文搞定的就别拆
3数据库表直接对应实体实体要充血模型,业务行为在实体里
4业务逻辑放在应用层业务规则放领域层,流程放应用层
5跨聚合同步调用一次事务只改一个聚合
6微服务内滥用事件总线能用应用服务直接编排的,就别用事件总线
7事件忘了幂等订阅方必须实现幂等
8中台过早抽象业务稳定 1 年以上再考虑中台
9忽略康威定律中台需要专门的中台团队
10微服务拆太细一个微服务 2-5 个聚合是合理颗粒度

六、推荐阅读书单

我自己在 DDD 学习过程中受益最大的几本书:

入门必读

实战必读

架构延伸

七、最后想说

DDD 不是一个技术,它是一种思维方式

它教你:

掌握这套思维方式,比任何具体技术都更有长期价值

我自己在不同公司带团队时,最深的感受是

技术是工具,业务是核心,组织是关键。 DDD 是少数能同时贯穿这三者的方法论。

如果你只能记住一句话,记住这个

业务先于技术,模型先于代码,边界先于实现。

系列完整目录

  1. 为什么从领域开始 — 战略设计入门
  2. 领域与子域 — 核心/通用/支撑三类子域
  3. 限界上下文 — 通用语言与微服务边界
  4. 实体与值对象 — 战术设计基础
  5. 聚合与聚合根 — 一致性边界
  6. 领域事件 — 解耦微服务
  7. DDD 分层架构 — 代码组织
  8. 整洁/六边形/分层 — 架构选型
  9. 中台 — 企业级能力复用
  10. DDD+中台+微服务协作 — 端到端流程

总结(本文) — 收官之作

致谢

感谢你能读到这里。

愿你在复杂业务的战场上,有 DDD 为伴

后续我会继续写其他主题(架构演进领域事件深入中台治理等),如果感兴趣,欢迎持续关注。


分享这篇文章:
通过邮件分享这篇文章✓ 链接已复制
查看系列全部文章
  1. 01.DDD 复杂业务系统设计(一):为什么从“领域”开始,比从“数据库”开始更靠谱
  2. 02.DDD 复杂业务系统设计(二):领域与子域,把“学校/课程/学员”拆成三件事再说
  3. 03.DDD 复杂业务系统设计(三):限界上下文,为什么“课程”在教务和市场是两种东西
  4. 04.DDD 复杂业务系统设计(四):实体与值对象,把“学员”和“地址”放进代码的两种姿势
  5. 05.DDD 复杂业务系统设计(五):聚合与聚合根,一个“选课单”应该装多少东西
  6. 06.DDD 复杂业务系统设计(六):领域事件,让“作业提交”自动触发批改进度
  7. 07.DDD 复杂业务系统设计(七):分层架构,你的“业务代码”应该待在哪一层
  8. 08.DDD 复杂业务系统设计(八):整洁架构 vs 六边形架构 vs DDD 分层,我选哪一种
  9. 09.DDD 复杂业务系统设计(九):中台,在线教育平台到底应该共享什么
  10. 10.DDD 复杂业务系统设计(十):从战略到微服务,一张图跑通 DDD+中台+微服务
  11. 11.DDD 复杂业务系统设计(总结):从领域到微服务,一张图看懂 DDD 落地全流程

上一篇
设计模式之策略模式:算法家族,自由切换
下一篇
设计模式之享元模式:共享细粒度对象,降低内存占用