【翻译】为什么你现在比以往更需要混沌工程?

混沌工程:增强系统可靠性的关键实践
混沌工程通过模拟故障来提升系统弹性和可靠性。随着远程工作的普及,系统故障的影响更加显著,混沌工程变得至关重要。它涉及在系统中进行有计划的实验,暴露潜在弱点。这种做法已被Netflix等公司采用,通过工具如Chaos Monkey测试系统韧性。实施混沌工程需要建立一种文化,强调沟通、实验和复原力的培养,同时逐步在非生产环境和生产环境中进行实验。混沌工程的应用包括监控验证、资源饥饿测试和依赖性分析,帮助企业提前发现和解决潜在问题。

大约一年前,像餐馆和杂货店这样的实体店正争先恐后地设置送货和路边取货。他们中的很多人都在生产中使用混乱工程,在推出新功能和服务之前迅速寻找失败的原因。教育平台也是如此,在短短一周的时间里,从 "好的 "变成了 "绝对必要"。

企业混沌工程平台 Gremlin的首席网站可靠性工程师Tammy Bryant Bütow表示,大流行病的紧迫性克服了很多对采用混沌思维的不情愿。另外,她在一次采访中指出,因为现在人们更多的是在家里,如果出现故障,他们会更快地发推特。因此,这是一种混合的责任感,即以以前预见的规模提供服务,也是一种面子行为。

团队终于明白,混乱工程是必不可少的,以便为不可预见的情况做计划,并满足流量和用户的高峰(如组织在2020年经历的)。但什么是混沌工程,你如何说服你的团队接受它?

混沌工程是什么?

混沌工程是由Netflix命名的,以唤起调皮的猴子向你的系统扔东西的想法。因为没有什么比一桶猴子被放出来更不可预测的了--也许,除了分布式系统。

十多年来,开源的 Chaos Monkey一直在随机地终止生产中的实例,以测试你的系统是否真的有弹性,当那传说中的狗屎击中那传说中的风扇时。

从那时起,一大批混沌工程工具就出现了。我们已经看到了一个运营角色的出现--网站可靠性工程师,或称SRE--专门负责寻找和自动修复我们系统中的故障。SRE是一个50/50的混合体,当事情出错时随叫随到,并进行实验以找到隐藏的漏洞。

混沌工程是科学和智能创造力的独特组合,旨在大规模地提高系统的可靠性。

正如Bryant Bütow所说,"混沌工程是深思熟虑的、有计划的实验,旨在揭示我们系统中的弱点"。

混沌工程遵循基本的科学方法,但由于没有一个系统、堆栈或环境是相同的,因此在每个组织中都要进行不同的实验。而这一切都不是混乱的。

Reliably公司的首席技术官和联合创始人Sylvain Hellegouarch,允许在基础设施、平台和应用层面实现混沌自动化,他将其描述为 "提出关于你的系统在特定条件下的行为的问题,并使你能够安全地进行现场尝试,这样你就可以和你的团队一起,看到是否存在真正的弱点,并学习正确的反应。"

混乱开始于问这样的问题:如果服务器X关闭了怎么办?如果我们的流量突然扩大了300%?如果我们的应用程序和数据库之间的连接中断?如果集成Y失败了?而且,也许最重要的是,如果这些事情发生了,监控和警报是否能正常工作?

假设是围绕着应该发生什么而形成的。如果结果不同,你需要一个简单的方法来回滚,并在事情出错时找出原因,这样你就能把事情解决了。然后你需要将混乱测试自动化,以确保同样的问题不会再次意外发生。

混沌的文化

混沌工程归根结底是周到的沟通和文化。

"O'Reilly Media关于混沌工程的书的共同作者Nora Jones写道:"混沌工程是关于在系统出现意外结果的情况下建立一种弹性的文化。

除了SRE之外,"混沌工程 "这一看似矛盾的说法在许多公司仍然很难被接受。而且,不仅仅是那些比较传统的、通常抗拒变革的组织--如金融或医疗服务--在反击。你需要在早期就向你的工程师传达混沌实验的价值,因为这种实验几乎总是涉及到占用他们正常工作的时间。

首先,不要强调你是在故意破坏东西。解释一下混沌工程根本不是混沌的,它是真正的系统化。它更多的是关于提高复原力,为不可避免的、无法避免的事件做准备。

你还必须明确,这不是为了让团队措手不及或指责。如果你要对系统的某一部分进行混乱,还有什么人比建造那一部分的人更能帮助你设计实验,而且他还清楚地知道它应该做什么?你的第一个成功的实验是在那些让队友们夜不能寐的不确定因素上进行的,所以问问他们最担心的是什么。

在生产中开始混沌工程也是没有必要的,大多数团队并没有马上准备好。当你的团队正在适应混沌状态时,开始在生产前的区域(如暂存区或开发区)进行混沌测试,一旦你有了围绕混沌状态的流程和反应,就可以提前进入生产这个唯一现实的测试环境。

记住,时间就是一切。清楚地说明你将在什么时候进行试验,警告任何可能受到影响的人。并强调你的测试,或"消防演习",是为了在工作日的受控环境中发现弱点,这样你就不必在凌晨两点客户抱怨的时候叫醒同事。

不仅要强调你要做的实验,还要强调你打算用什么方法来减轻任何意外伤害。

最后,当混乱的实验结束后,与所有受影响的人制定一个明确的计划,说明你将如何补救,并传播所发生的信息:什么原因造成的,以及如何修复。构建一个时间线和书面文件是很重要的,这样未来的工程师就可以了解发生了什么--也可以让你把这些测试自动化。

混乱的行动

今年,Gremlin发布了第一份 " 混沌工程现状 "报告,该公司调查了所有客户,发现了混沌工程最常见的应用。在这些发现中:

  • 进行混沌工程实验的组织,其系统的可用性经常超过99.9%。
  • 23%的组织的平均解决时间低于一小时。
  • 60%的受访者表示他们至少进行过一次混沌工程攻击。
  • 34%的机构说他们在生产中运行混沌实验。

Bryant Bütow说,混沌工程最常见的用途是监控和警报验证--因为没有它们,你甚至无法知道有什么问题,然后再去修复它。

下一个常见的用途是Gremlin所说的资源饥饿--如果你的CPU激增或内存耗尽会怎样?你看看你的系统在只有5%的CPU时是什么反应?

混沌工程的另一个流行用途是依赖性分析。Bryant Bütow将其描述为:"我运行服务A,为了让它工作,我需要服务B、C和D来工作。"

她说,当你是一个不重要的服务的工程经理,但依赖其他服务来保持正常运行时,你就没有太多的筹码来要求其他服务的正常运行时间。但是通过混乱工程,你能够证明你需要确保这些其他的集成系统也能正常工作。

一个流行的用例是对第三方的依赖性进行归零,特别是当团队混合使用管理服务和运行自己的集群时。例如,采取一个数据库和黑洞整个区域,使指定的地址无法从你的应用程序到达。很多团队在启动前都在使用这个功能,特别是为了确保他们的多云环境是可靠的。云供应商越来越多地做出快速变化,组织必须遵守和准备。混沌工程是一种方法。

经常有用户发现他们的第三方依赖性不可靠,但这是由于复杂的配置,可以改善。例如, Azure Kubernetes服务最近用containerd取代了Docker,但微软只给了几个月的通知--包括在年终假期--许多团队现在才意识到这一点。

分布式系统具有灵活性、速度和安全性,但它们也伴随着许多不确定性--特别是当你的堆栈大部分是由你无法控制的第三方供应商管理时。混沌工程是一系列可靠性和弹性实践中的一种,它是了解你的系统在压力下的表现以及如何不断采取措施来提高性能所必需的。

New call-to-action

上一页下一页 →
chaos_engineering_CTA.pngNew call-to-action

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值