知识卡片
单体与微服务可共享同一代码模型,迁移成本极低
内容
即便EAS是单体架构,也仍要为每个限界上下文定义单独模块(ddd-core作为共享内核公共上下文,eas-entry是主程序入口)。EAS代码模型将限界上下文作为业务边界与应用边界,作为逻辑架构组成部分,它不受或较少受通信边界变化影响,因此降低了从单体迁移到微服务的成本——两种迥异架构风格其实拥有完全相同的代码模型。迁移只需:为每个微服务提供主程序入口(去掉eas-entry、为每个上下文定义Application类);把southbound/adapter/client由进程内改为跨进程;修改数据库配置指向不同库;调整应用层事务机制(跨微服务聚合考虑分布式柔性事务)。以上皆不影响领域层代码(产品与测试)——领域内核体现出一如既往的稳定性。发散:把限界上下文当逻辑边界而非物理边界来落地,就能推迟”要不要微服务”的决定到有明确证据之时,而不必为此重构领域层。
参考来源
- 位置:《解构领域驱动设计》第20章 20.3.5(源文件:_epub-src/OEBPS/033.xhtml)
- 结论依据:原文说明单体与微服务共享同一代码模型、列出迁移的四点修改且不影响领域层。
- 原始内容:两种迥然不同的架构风格其实拥有完全相同的代码模型……以上修改皆不影响包括产品代码与测试代码在内的领域层代码。