知识卡片

防腐层与可牺牲架构

普通读书笔记卡 · 1847.e

内容

应对未知的未知,比预测更现实的策略是让每次架构决策都容易被替换。给外部依赖套一层防腐层,日后换实现只需换掉接口背后那部分,不牵连调用方;某项目用极简单开源库先顶住异步上传需求,一年后需求变复杂再换正规消息队列,因藏在接口后面,替换只花不到一周。eBay从Perl到C++再到Java、Twitter从Rails到自研后端都说明——选”可被丢弃”的架构验证想法,往往比追求完美更容易活下来。

参考来源

- 位置:《演进式架构(原书第2版)》第7章《构建可演进的架构》「防腐层」及「可牺牲架构」两小节(源文件:_epub-src/EPUB/xhtml/chapter11_0001.xhtml) - 结论依据:原文用简单开源库支撑异步上传、一年后替换为正规消息队列只花不到一周,以及eBay/Twitter技术栈迁移的例子,直接支持卡片论点。 - 原始内容:"这是一个非常简单的开源库,它模拟了一个由关系数据库支持的单一消息队列。架构师知道这个简单工具可能永远无法扩展到未来的问题,但他没有持反对意见……他并没有试图预测未来使用情况,而是通过将其放在API后面使替换变得容易……Twitter最终以可牺牲架构得到了回报。"