上下文映射是什么
上下文映射是 DDD 中描述限界上下文之间协作关系的工具,用若干种模式标注上下游依赖的性质,常见有合作关系、共享内核、客户-供应商、遵奉者、防腐层、开放主机服务、发布语言、各行其道。它的作用是让跨团队接口的演进有明确约定,而不是依赖口头默契。
基本信息
| 出处 | Eric Evans《领域驱动设计》 |
|---|---|
| 组成 | 限界上下文 + 关系模式 + 上下游方向 |
| 常用粒度 | 团队级或子系统级 |
| 产出 | 一张上下文图加关系说明表 |
| 关键动作 | 让每处跨边界调用都能对应到某个模式 |
关系模式
| 模式 | 含义 | 风险提示 |
|---|---|---|
| 合作关系 | 两个上下文共同成败,接口协同演进 | 需同步发布,任一方的变更都要对方配合 |
| 共享内核 | 共享一小块模型与代码,改动需双方同意 | 共享范围会持续扩大,最终退化成共享数据库 |
| 客户-供应商 | 上游按下游需求排期提供能力 | 下游议价能力弱时容易被排期阻塞 |
| 遵奉者 | 下游直接跟随上游既有模型 | 上游模型不合业务时技术债会持续累积 |
| 防腐层 | 下游加一层转换隔离上游模型 | 增加代码量与维护成本,需评估是否值得 |
| 开放主机服务 + 发布语言 | 上游提供稳定的公开接口与契约 | 需要版本治理与契约文档维护 |
| 各行其道 | 两边不集成,各自实现 | 重复实现成本可能高于集成成本 |
典型使用场景
- 微服务拆分前:先画出各业务域的上下游关系,再决定哪些边界需要防腐层
- 遗留系统对接:外部模型强行注入时用防腐层隔离,而不是全盘接受
- 团队边界治理:跨团队接口由谁定版本、谁负责兼容写进协作约定
- 重构排序:优先处理耦合最强、变更最频繁的跨边界链路
- 平台化:把内部能力包装成开放主机服务与发布语言对外提供
上下文图不必画全,但每一处跨边界调用都应能对应到某个关系模式;找不到模式的调用,通常是耦合已经失控的信号。