知识卡片
"再建一个统一系统"方案的隐藏陷阱:把并行需求变成串行瓶颈
内容
面对多个产品团队各自为政导致的碎片化问题,最容易想到的解决方案是在各产品之上再抽一层,做一个统一系统直接接管所有交互和流程,不再让各产品团队自行接触用户——这个方案看起来能一劳永逸地消灭碎片化,但仔细推演会发现它只是把问题搬了个地方而没有真正解决:统一系统本身没有能力凭空产生业务逻辑,它的需求依然来自各个产品团队,而拆分之前各产品能够并行地自行实现自己的需求,一旦所有需求都要提交给统一系统排期开发,就从并行变成了串行,统一系统本身会迅速成为整个组织的开发瓶颈、拖慢所有产品的迭代速度。这个方案的失败模式提示了一条通用的架构反模式识别方法:任何”新增一个中心化组件来统一管理下游”的方案,都要追问一句——这个中心化组件是获得了真正独立处理各方需求的能力(比如通过配置化、插件化把定制逻辑下放回去),还是仅仅把原本分散在各处的开发工作,物理集中搬到了一个人力有限的团队手里;如果是后者,表面上解决了不一致,实际上是用牺牲开发效率换来的,往往得不偿失。
参考来源
- 位置:《高可用架构(第1卷)》第2章《高可用架构原理与分布式实践》"2.3 解耦的艺术——大型互联网业务系统的插件化改造"节,"2.3.1 插件化"(源文件:_epub-src/OEBPS/Text/Chapter2_3_2.xhtml)
- 结论依据:原文说明"这方案无非是把问题搬了个地方。因为U系统的需求还是从各产品来的,本来拆完后各产品能自行实现需求(并行),现在只能把需求提到U系统等排期(串行),U系统很可能成为瓶颈",直接支撑本卡片结论。
- 原始内容:可是细想想,这方案无非是把问题搬了个地方。因为U系统的需求还是从各产品来的,本来拆完后各产品能自行实现需求(并行),现在只能把需求提到U系统等排期(串行),U系统很可能成为瓶颈,妨碍业务需求的快速响应。