灰度黑洞:零风险的混沌工程实验 | IDCF
来源:混沌工程实践 作者:码六贾
Netflix使用了灰度部署进行混沌实验,但仍会有小部分用户可能会受到影响。灰度黑洞,为混沌工程测试的安全性提供了理想的环境,对用户的影响则完全为零。
一、又快又稳的新挑战
人总有完美主义倾向,而现实是:写的代码不会没有Bug,所有的测试不可能完备,生产的构建部署不会没有缺陷,用户永远都会遇到问题。不过,我们革新和改变的动力,往往来自惨痛的生产事件:
2019年7月CloudFlare的大宕机,是由错误配置的Web应用防火墙造成的。 Facebook的反垃圾邮件系统,意外地折叠了指向合法来源的链接。 由于临床记录管理系统的软件更新,错误地为超过10,000名的患者开了药。
采用DevOps实践已经成为共识,发布周期的缩短,新功能推向生产的速度比以往更快。同时,微服务和云原生架构正在增加应用的复杂性。当速度和复杂性增加时,软件缺陷进入生产的机会也在增加。
二、生产中测试的迫切性
三、生产中测试的风险
影响性能或稳定性,损害用户体验; 产生用户数据泄漏、修改或丢失; 影响营销分析和运营指标,例如用户流量或错误率; 引起违反法规或标准的事件(遵循GDPR、PCI、HIPAA等标准的个人身份信息 PII的使用)。
四、生产中安全的部署策略
测试在生产的基础设施上上运行; 将风险控制在相对较少的用户中; 在重大缺陷或故障的情况下回滚。
在实际的生产系统上运行; 面向少量用户,减少缺陷带来的潜在影响; 便捷地向所有用户推出经灰度验证的新版本。
灰度黑洞,为混沌工程测试的可靠性提供了理想的环境。Netflix使用了灰度部署进行混沌实验,但仍然会有小部分用户可能会受到影响。如果是灰度黑洞的方法,我们可以在与生产相同规模上运行这些实验,而对用户的影响则完全为零。
五、结论
评论