知识卡片
适应还是演进的根本区别
内容
面对架构缺陷,团队常见的应对是”适应”——加一层服务总线糊住问题、给新逻辑接一个和老逻辑并存的分支,代价是原有行为原封不动地保留下来,和新行为一起共存,每适应一次系统就多一层复杂度,最后没人敢动这坨积重难返的东西。演进则要求真正改变架构本身,并用适应度函数守住不能破坏的部分,让过时方案能被彻底移除而非无限期地供着。功能开关是”适应”里少有的例外——只要用完立刻删除,这份技术债是有意为之且可控的。
参考来源
- 位置:《演进式架构(原书第2版)》第9章《实践演进式架构》服务总线适应与功能开关例外小节(源文件:_epub-src/EPUB/xhtml/chapter13.xhtml)
- 结论依据:原文明确用服务总线"适应"问题会保留旧行为并存、越适应复杂度越高,而功能开关是用完即删的可控例外,直接支持卡片论点。
- 原始内容:"采用服务总线是让系统去适应另外一套配置的例子。但正如前文所强调的,适应带来的副作用就是技术债的增加。当开发人员去适应某些东西,他们会保留原来的行为,让新的行为与之并存……在这种场景下,开关带来的技术债目的性很强,并且是可取的……最佳工程实践是做出决定后尽快将其删除。"