灰度黑洞:零风险的混沌工程实验
发布时间:2025-05-22 00:54:43
作者:益华网络
来源:undefined
浏览量(16)
点赞(31)
摘要:来源:混沌工程实践作者:码六贾Netflix使用了灰度部署进行混沌实验,但仍会有小部分用户可能会受到影响。灰度黑洞,为混沌工程测试的安全性提供了理想的环境,对用户的影响则完全为零。 一、又快又稳的新挑战 人总有完美主义倾向,而现实

Netflix使用了灰度部署进行混沌实验,但仍会有小部分用户可能会受到影响。灰度黑洞,为混沌工程测试的安全性提供了理想的环境,对用户的影响则完全为零。
一、又快又稳的新挑战
人总有完美主义倾向,而现实是:写的代码不会没有Bug,所有的测试不可能完备,生产的构建部署不会没有缺陷,用户永远都会遇到问题。不过,我们革新和改变的动力,往往来自惨痛的生产事件:
2019年7月CloudFlare的大宕机,是由错误配置的Web应用防火墙造成的。Facebook的反垃圾邮件系统,意外地折叠了指向合法来源的链接。由于临床记录管理系统的软件更新,错误地为超过10,000名的患者开了药。
采用DevOps实践已经成为共识,发布周期的缩短,新功能推向生产的速度比以往更快。同时,微服务和云原生架构正在增加应用的复杂性。当速度和复杂性增加时,软件缺陷进入生产的机会也在增加。
为了解决这一风险,我们需要加强在生产中的测试实践,这一过程常常称为“测试右移”。
二、生产中测试的迫切性
在新产品投产之前,单元测试、功能测试、集成测试和非功能性测试等多种测试类型,对质量保障至关重要。下面这个图非常有意思,从测试对象的范围(从单个组件到系统层面)以及是否获得新知识这两个维度,对上述测试类型进行分类。

三、生产中测试的风险
在测试环境中进行测试的一个好处是,测试人员可以安全地运行侵入性测试,例如压力测试、压力测试和灾难恢复测试。在生产中运行这些测试存在以下风险:影响性能或稳定性,损害用户体验;产生用户数据泄漏、修改或丢失;影响营销分析和运营指标,例如用户流量或错误率;引起违反法规或标准的事件(遵循GDPR、PCI、HIPAA等标准的个人身份信息 PII的使用)。因此,与在测试环境中进行测试相比,在生产中进行测试需要一种更加受控的方法。
四、生产中安全的部署策略
许多应用部署策略非常适合生产测试:测试在生产的基础设施上上运行;将风险控制在相对较少的用户中;在重大缺陷或故障的情况下回滚。4.1 蓝绿部署蓝绿部署(Blue/Green Deployment)是一种发布策略,本质上就是并排运行两个相同的生产环境。一个环境(蓝色)托管应用的当前版本,而另一个环境(绿色)托管新版本。绿色环境开始保持闲置状态,不提供任何用户访问量,逐步将用户流量从蓝色环境切换到绿色环境中,不会产生停机时间。



一旦对新版本进行了完整的测试并进行了审核,如果要发布该新版本,只需启用新版本的返回响应,并禁用原始版本的响应即可。当然,这需要一次运行两个版本的应用,会有成本的开销,但这比蓝绿部署要低得多。灰度黑洞,为混沌工程测试的可靠性提供了理想的环境。Netflix使用了灰度部署进行混沌实验,但仍然会有小部分用户可能会受到影响。如果是灰度黑洞的方法,我们可以在与生产相同规模上运行这些实验,而对用户的影响则完全为零。我们可以在基础架构的不同点引入故障,衡量对实际用户请求的影响,并解决直接影响用户的风险点。同时还可以发现,测试环境中的功能测试或端到端测试无法发现的问题。灰度黑洞,可以做到这一点而不会影响任何用户。
五、结论
完美无缺的应用是一种奢望,我们不得不面对现实,在任何可能出现问题的地方检查应用行为。在生产中测试,助力DevOps团队更好地了解应用行为及其基础设施,降低故障风险,改善用户体验,这是有巨大价值的。蓝绿部署、灰度部署和黑洞启用,可以从只在测试环境中的检查,扩展到生产中的测试,使用受控的方法,控制用户风险。我相信,它们会使你的系统变得更加可靠,生产缺陷率将持续下降,用户体验将变得更好。
扫一扫,关注我们
声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。
31