混沌工程最著名的应用也许始于Netflix,当时他们开发了Chaos Monkey。
什么是混沌工程?使用混沌工程来提高公共云中工作负载的弹性和可靠性有哪些好处?
什么是混沌工程?
“混沌工程是对系统进行实验以建立对系统承受生产中动荡条件的能力的信心的学科。” (来源: https: //principlesofchaos.org)
大规模的生产工作负载由多个服务构建而成,创建了分布式系统。
当我们设计大规模工作负载时,我们会考虑以下事项:
- · 创建高可用系统
- · 制定灾难恢复计划
- · 减少单点故障
- · 能够根据我们应用程序的负载快速扩展和缩减
我们通常不会停下来思考的一件事是我们应用程序的各个组件之间的连接性,以及在我们应用程序的一个组件发生故障时会发生什么。
例如,如果 Web 服务器试图访问后端数据库,但由于连接到后端数据库的网络延迟而无法访问,会发生什么情况?
这将如何影响我们的应用程序和我们的客户?
如果我们可以定期在实时生产环境中测试此类场景会怎样?
我们是否非常信任我们的应用程序或工作负载基础设施,以至于我们愿意随机拆除部分基础设施,以便我们了解对我们应用程序的影响?
这将如何影响我们应用程序的可靠性,以及它将如何让我们构建更好的应用程序?
混沌工程的历史
- 2010 年 Netflix 开发了一款名为“ Chaos Monkey ”的工具,其目标是随机关闭 Netflix 生产环境的一部分计算服务(如虚拟机或容器),并测试其对 Netflix 整体服务体验的影响。
- 2011 年,Netflix 发布了一个名为“ The Simian Army ”的工具集,为 Chaos Monkey 添加了更多功能,包括可靠性、安全性和弹性(即模拟整个 AWS 区域崩溃的 Chaos Kong)。
- 2012 年,Chaos Monkey 成为一个开源项目(在 Apache 2.0 许可下)。
- 2016 年,一家名为Gremlin的公司发布了第一个“故障即服务”平台。
- 2017 年,LitmusChaos项目宣布,它在 Kubernetes 中提供混沌作业。
- 2019 年,阿里云发布了混沌工程开源工具ChaosBlade 。
- 2020 年,Chaos Mesh 1.0 正式发布,这是一个开源的云原生混沌工程平台。
- 2021 年,AWS 宣布全面推出AWS Fault Injection Simulator,这是一项用于运行受控实验的完全托管服务。
- 2021 年,Azure 宣布了Azure Chaos Studio的公开预览版。
混沌工程到底是什么?
混沌工程是关于基于现实世界假设的实验。
想想混沌工程,作为 CI/CD 管道的一部分运行的测试之一,但不是单元测试或用户验收测试,而是将受控故障注入系统以衡量其弹性。
Chaos Engineering 可用于现代云原生应用程序(构建在 Kubernetes 之上)和遗留单体应用程序,以实现相同的结果——回答问题——我的系统或应用程序能否在故障中幸存下来?
在高层,混沌工程由以下步骤组成:
- · 创建一个假设
- · 进行实验
- · 分析结果
- · 提高系统弹性
将混沌工程作为常规开发过程的一部分,可以让您通过研究故障的影响和设计恢复过程来提高应用程序的弹性。
通过测试系统的弹性,混沌工程还可以用作灾难恢复和业务连续性过程的一部分。