第2章 业务维度边界划分:限界上下文、业务能力对齐、子域划分、核心域/支撑域/通用域
业务维度的边界划分是组件拆分的起点。如果不能从业务领域正确识别限界上下文、对齐业务能力、划分子域、区分域类型,后续的技术实现将陷入“为拆分而拆分”的泥潭。本章聚焦如何从业务模型推导出清晰的组件边界。
2.1 核心概念与关系
DDD(领域驱动设计)中的四个核心概念构成了业务维度划分的层层递进关系:
- 限界上下文(Bounded Context) — 业务逻辑的显式边界,内部维护统一语言和模型完整性。
- 业务能力(Business Capability) — 组织/系统实现某一业务目标的能力集合,常与限界上下文形成“能力→上下文”映射。
- 子域(Subdomain) — 业务领域的问题空间细分,每个子域对应一个或多个限界上下文。
- 域类型 — 将子域分为核心域(竞争优势)、支撑域(必需但非核心)、通用域(标准化可采购)。
关键洞察: 限界上下文是组件拆分的“原子单元”,而子域划分帮助确定哪些组件应被优先投入复杂度和治理资源。
2.2 业务维度边界划分四步流程
| 步骤 | 活动 | 产出物 | 典型工具 |
|---|---|---|---|
| 1 | 事件风暴 / 业务全景梳理 | 领域事件流、聚合根草图 | 白板、Miro、EventStorming |
| 2 | 限界上下文识别与命名 | 上下文映射图(Context Map) | 上下文映射模式、团队拓扑 |
| 3 | 业务能力对齐与子域划分 | 能力→上下文矩阵、子域目录 | 能力模型、问题空间 vs 解空间 |
| 4 | 域类型标记与优先级排序 | 核心/支撑/通用域清单 | 战略优先级、TAM/SAM分析 |
2.3 限界上下文与业务能力对齐矩阵
以下示例展示一个电商平台的“订单管理”限界上下文如何与业务能力对齐:
| 限界上下文 | 业务能力 | 子域 | 域类型 |
|---|---|---|---|
| 订单上下文 | 创建订单、修改订单、查询订单、取消订单、订单履约 | 订单处理子域 | 核心域 |
| 支付上下文 | 发起支付、支付回调、退款、对账 | 支付结算子域 | 支撑域 |
| 库存上下文 | 库存预占、库存释放、库存盘点、补货策略 | 库存管理子域 | 支撑域 |
| 用户上下文 | 注册、登录、权限、收货地址管理 | 用户与认证子域 | 通用域 |
| 消息通知上下文 | 短信、邮件、站内信、推送 | 通知子域 | 通用域 |
实操建议:在业务能力对齐阶段,使用“业务能力热力图”标记每个能力的变更频率、业务关键度和技术复杂度,辅助后续组件拆分的粒度决策。
2.4 子域划分与域类型决策
子域划分不是简单的功能模块拆分,而是基于业务价值的战略化分层:
- 核心域 — 公司拥有差异化竞争力的领域,组件应内聚、高自治、强内聚,避免过早抽象。
- 支撑域 — 业务必需但非差异化,组件可适度耦合或依赖成熟框架,但需保留扩展点。
- 通用域 — 市场已有成熟方案,优先引入 SaaS 或开源组件,内部仅做适配层,避免自研。
常见陷阱:将所有子域一视同仁投入相同治理力度,会导致核心域被稀释、通用域过度设计。必须根据域类型差异化制定组件边界规则。
2.5 业务维度边界划分流程图
2.6 选型权衡与风险点
| 决策点 | 推荐方案 | 风险 |
|---|---|---|
| 限界上下文粒度 | 按业务能力聚合到 1~3 个聚合根 | 过粗导致模块内耦合;过细导致分布式事务爆炸 |
| 跨上下文通信 | 优先采用异步事件/消息 | 强一致性场景下会引入最终一致性妥协 |
| 通用域策略 | 外购 SaaS+ 适配层封装 | 供应商锁定、数据合规风险 |
| 核心域复用 | 不允许跨上下文直接依赖 | 团队认知不一致导致核心模型腐化 |
2.7 落地步骤
- 第1步(1~2周):与业务方、产品、领域专家共同进行事件风暴,产出领域事件流和聚合初稿。
- 第2步(1周):基于聚合和业务能力,画出上下文映射图,标注合作者关系、共享内核、分离方式。
- 第3步(1周):将每个限界上下文标记域类型,并决定各域的治理策略、技术选型(如核心域用CQRS/ES,通用域用REST)。
- 第4步(持续):在迭代中通过“领域知识侵蚀检测”定期review模型是否偏离限界上下文边界。
2.8 验收标准
- 完整性:每个业务能力都唯一对应一个限界上下文,不存在“没有归属”的能力。
- 正交性:任意两个限界上下文之间的依赖关系清晰(合作者/遵奉者/分离方式),无循环依赖。
- 域类型收敛:核心域数量不超过总子域数的30%,通用域占比不低于20%。
- 变更影响:修改一个限界上下文内部模型时,不影响超过两个其他上下文。
实战检查清单
□ 是否已产出上下文映射图,并被团队达成共识?
□ 每个限界上下文是否有明确的“统一语言”文档?
□ 核心域是否已设立技术组和业务组双owner?
□ 通用域是否已评估市场成熟度并确定外购/自研比例?
□ 是否已产出上下文映射图,并被团队达成共识?
□ 每个限界上下文是否有明确的“统一语言”文档?
□ 核心域是否已设立技术组和业务组双owner?
□ 通用域是否已评估市场成熟度并确定外购/自研比例?