构建可演化架构的指南
在软件开发领域,构建一个能够适应不断变化需求的架构至关重要。本文将探讨一些构建可演化架构的关键原则和实践,帮助开发者应对软件开发过程中的各种挑战。
1. 未知可变性带来的问题
曾经有开发团队因偷懒,决定复用旧的 PowerPeg 功能标志来实现新的 SMARS 代码。2012 年 8 月 1 日,他们将新代码部署到了七台服务器上,然而系统共有八台服务器,其中一台未更新。当启用 PowerPeg 功能开关时,七台服务器开始卖出,而另一台却开始买入,这意外地造成了最坏的市场场景——自动低价卖出、高价买入。开发人员以为是新代码的问题,回滚了七台服务器上的新代码,但功能开关仍处于开启状态,导致 PowerPeg 代码在所有服务器上运行。他们花了 45 分钟才控制住混乱局面,损失超过 4 亿美元。幸运的是,一位天使投资者拯救了他们,因为这笔损失超过了公司的价值。
这个故事凸显了未知可变性带来的问题。复用旧的功能标志是鲁莽的行为,最佳实践是在功能标志完成使命后立即将其移除。在现代 DevOps 环境中,不自动化部署关键软件到服务器也被认为是鲁莽之举。
2. 让决策可逆转
随着系统的不断发展,不可避免地会以意想不到的方式出现故障。当故障发生时,开发人员需要制定新的适应函数来防止未来再次出现类似问题。那么,如何从故障中恢复呢?
许多 DevOps 实践都支持可逆转的决策,即那些需要撤销的决策。以下是一些常见的方法:
- 蓝绿部署 :运维拥有两个相同(可能是虚拟的)生态系统——蓝色和绿色。如果当前生产系统在蓝色环境运行,绿色环境则是下一次发布的预发布环境。当绿色版本
超级会员免费看
订阅专栏 解锁全文
176万+

被折叠的 条评论
为什么被折叠?



