知识卡片
模块化单体架构嵌入工作流引擎与解构单体的渐进路径
内容
不是每家公司都有能力或意愿转向微服务或无服务器架构——单体架构不是分布式系统,不必纠缠远程通信和一致性问题,能否驾驭往往取决于团队规模(10人团队能很好掌控一个单体,千人团队却难以发布一个单体)。有意思的是,本书讲的流程自动化实践同样适用于单体:通过组件化、包组织代码、为重要服务定义接口,让单体内部意图更清晰,之后要做的编排只是本地方法调用而非远程调用。工作流引擎可以作为依赖库嵌入单体架构,流程定义只是源码里的一个附加资源——这样既获得工作流引擎的能力(状态管理的长期运行、流程可见性),又保留单体架构没有分布式系统开销的优势;即使引擎作为独立服务运行,开销通常也很小(类似数据库那样的远程调用开销)。这还带来一种灵活性:可以单独部署修改后的流程模型而不必重新部署整个单体,这一条好处本身有时就足以引入工作流引擎。当团队真要走向细粒度架构时,流程自动化还能让这段旅程更平顺:与其把新流程硬塞进单体,不如借机把该业务逻辑拆成一个新的(微)服务,同时删除组件间硬编码的调用连接(如让入网服务而非CRM组件直接调用计费组件)——这不是一步到位的重构,而是”开发者没有急切转化,而是持续迁移,严格且持久地一点点改变”,第一步几乎无感,但长期积累后差异巨大。
参考来源
- 位置:《流程自动化实战:系统架构和软件开发视角》第4章《万物皆可编排》"4.1.4 模块化的单体架构""4.1.5 解构单体架构"(源文件:_epub-src/EPUB/xhtml/Section0001_0007.xhtml)
- 结论依据:原文说明工作流引擎作为依赖库嵌入单体的能力与好处(状态管理+流程可见性+灵活部署),以及用渐进式拆分组件、删除硬连接来解构单体的具体方式与长期积累效应,直接支撑本卡片结论。
- 原始内容:工作流引擎可以作为依赖库嵌入你的单体架构中……即使工作流引擎作为独立服务运行,开销也是很小的……开发者没有急切地进行转化,而是持续迁移,严格且持久地一点点改变。第一步几乎没什么改变,但5年后就看到了巨大的差异。