本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过在上面使用混沌工程来提高弹性并改善客户体验 AWS
Laurent Domb,Amazon Web Services 联邦金融首席技术专家
2025 年 4 月(文档历史记录)
混沌工程是一门在应用程序上进行实验的学科,目的是建立对组织和应用程序承受生产中动荡条件的能力的信心。这是一种主动的弹性方法,其目标是通过在人员、流程和技术中引入受控故障,验证您的应用程序和组织是否能够吸收、适应并最终从服务损坏中恢复。其目的还是在漏洞可能导致生产中断或其他中断之前,识别并消除这些漏洞。
在Amazon,我们知道分布式系统中故障是不可避免的,以至于即使存在故障也能正常运行是正常的操作模式。由于服务之间的交互必然会失败,因此您需要了解服务在各种故障模式下的反应,并构建能够抵御依赖性故障、重试风暴、可用区受损和主机资源耗尽等关键漏洞的服务。
让我们以重试风暴为例。客户端中的局部故障可能会严重影响多项服务。这通常被称为蝴蝶效应。重试风暴是蝴蝶效应的表现,在这种效应中,失败的依赖关系会触发客户端以及这些客户端的客户端重试失败的操作,从而导致流量呈指数级增长。服务之所以过载,是因为在处理性能下降的同时,除了重试流量外,它们还必须响应常规流量。
混沌工程已成为对分布式系统日益复杂的回应。它是一种多学科的方法,它结合了混沌理论、系统思维和工程原理,设计和管理能够抵御意外事件和行为的复杂系统。混沌工程的核心是理解和管理复杂系统在不确定性和不可预测性条件下的行为。它认识到,依赖于预测和控制结果的传统工程方法通常不足以应对分布式系统的复杂和动态性质。随着这些系统的发展,它们往往超出了任何一个人的理解范围。
混沌工程提供了概念、技术和工具,可以故意将故障注入系统,以便在弱点出现在生产中之前将其发现。这种积极主动的方法使组织能够建立信心,相信他们的系统将在压力很大的条件下运行。尽管混沌工程仍然是一种不断演变的实践,但它代表了向设计、管理和操作现代计算系统的根本转变,以便在复杂性和互连性不断增加的情况下保持弹性。
本指南的以下各节讨论了混沌工程的好处,解释了如何进行混沌工程实验,并描述了在组织中大规模实施混沌工程时可以采用的方法。还包括实验计划样本和实验结果文档,可用作混沌工程实验的模板。
下一节将探讨混沌工程的特征与传统的弹性测试(例如单元测试、烟雾测试或集成测试)有何不同。