【混沌工程】什么是混沌工程?

简介: 混沌工程让您可以将您认为会发生的事情与系统中实际发生的事情进行比较。 您实际上是“故意破坏”以学习如何构建更具弹性的系统。

gremlin: What is Chaos Engineering?

什么是混沌工程?

混沌工程让您可以将您认为会发生的事情与系统中实际发生的事情进行比较。 您实际上是“故意破坏”以学习如何构建更具弹性的系统。

通过主动测试系统在压力下的响应方式,我们可以在故障出现之前识别并修复故障。 最终,混沌工程的目标是增强我们系统的稳定性和弹性。

混沌与可靠性工程技术作为构建可靠应用程序的基本学科正迅速获得关注。 在过去的几年里,许多组织——无论大小——都接受了混沌工程。

创建可靠的软件是现代云应用程序和架构的基本必要条件。 随着我们迁移到云或将我们的系统重新架构为云原生,我们的系统正在按设计分布,并且出现计划外故障和意外中断的可能性显着增加。 此外,转向 DevOps 会使可靠性测试更加复杂。

网络异常,图片无法展示
|

DevOps 抛弃了传统的可靠性测试

像 QA 和其他测试学科的出现是为了应对不断出现的问题并需要一种新的测试方法。

例如,单元测试验证我们编写的一些代码是否符合预期。集成测试验证我们编写的代码可以很好地与代码库的其余部分配合使用。有时我们会进行系统测试,试图验证整个系统是否符合设计规范。传统上,开发团队会传递他们的代码进行测试,以验证它是否按预期工作或发现需要修复的问题。

在这一点上,代码将被扔到一个运营团队的墙外,他们的工作是让代码在生产环境中运行。运维负责让东西运行起来,并且由于每个组织环境的独特性,各个运维团队都会提出自己的战略和计划。

DevOps 将开发和运营团队合并在一起,让他们共同承担生产准备和部署的责任。敏捷和 DevOps 软件流程将我们的开发和部署速度提高了几个数量级,因此我们可以更快地将产品和功能提供给客户。

但是,越快的代码被创建并检入到 master 中,QA 就越频繁地编写测试并且需要更多的测试。速度越快,偶尔出现错误的可能性就会越大。为了跟上步伐,测试已尽可能自动化。

此外,随着我们转向微服务和其他分布式、基于云的架构。这些分布式系统具有紧急行为,通过扩大和缩小规模来响应各种生产条件,以确保应用程序能够为不断增长的客户需求提供无缝体验。换句话说,这些系统从不遵循相同的路径来获得客户体验。紧急行为也意味着紧急失败。分布式系统会失败,但它们不太可能以同样的方式失败两次。

我们之前对测试的理解并不能解释当今独特且不断变化的生产环境。 DevOps 的 Ops 方面尽最大努力使事情顺利进行,但他们的任务通常只涉及将代码投入生产并希望获得最佳效果或回滚更改或在发生故障时进行修补程序。他们自动化了一些测试,但通常不会运行会发现由生产中的动荡条件引起的系统故障的测试。

传统的 QA 已经不够用了

DevOps 中缺少一些东西:混沌工程是您一直在寻找的测试方法。

传统的质量保证仅涵盖我们软件堆栈的应用层。 再多的传统 QA 测试或其他传统测试都无法验证我们的应用程序、其各种服务或整个系统是否会在任何条件下可靠地响应,无论是“按设计工作”还是在极端负载和异常情况下。

任何软件堆栈或应用程序层的故障都可能破坏客户体验。 传统的 QA 测试方法不会在这些潜在问题条件实际发生之前发现它们。

此外,大多数传统的 QA 活动都被其他团队吸收了。 许多测试现在由 CI/CD 管道自动化,并由 SRE 或 DevOps 团队监督。 发现和解决问题的责任已成为服务所有者的责任。 除此之外,不可否认的事实是,不可能建立准确模仿生产环境的测试和登台环境。

网络异常,图片无法展示
|

混沌工程如何帮助测试发展?

  • 验证
  • 更广泛的软件和基础设施场景
  • 发现问题
  • 传统测试无法暴露
  • 安全地进行
  • 并在生产中有效
  • 帮助团队了解
  • 系统在现实世界中的行为方式,而不仅仅是它们如何破坏或它们有什么错误

由于混沌工程可以在运行时测试代码质量,并且具有自动化和手动测试形式的潜力,因此该学科成为新质量评估工具箱中的强大工具。

早些时候我们解释了分布式系统是如何不断变化的,这意味着它们永远不会以相同的方式崩溃两次,但它们会崩溃。 Chaos Engineering 允许工程师在安全和受控的环境中模拟他们的系统如何响应故障,从而帮助企业防范这些故障。

我们使用混沌实验来模拟我们知道有可能导致问题的金丝雀实例上的事物,例如网络延迟。新服务在轻量级测试下是否有效?中等的?重的?我们努力推动新实例。在生产中。我们逐渐建立起来,甚至测试超出了我们期望的工作点。我们学到了东西。我们经常学到的东西会创造机会在下一次构建中进一步完善我们的工作。这在生产中是安全的,因为服务的其他实例正在处理客户需求;甚至没有人能说我们正在做混沌工程。

混沌工程是在当今复杂的现实中发现系统性问题的唯一方法,无论我们是否使用金丝雀部署。当网络延迟增加两微秒时,我们的 REST API 驱动的库存服务将如何表现?当大量延迟的请求全部并发到微服务时会发生什么?我们怎么知道?我们对其进行测试。

混沌工程入门

我们首先设计了一个小型混沌实验,其规模远小于我们认为可能造成麻烦的规模。接下来,我们限制爆炸半径和真正的潜在危害,以便在进行混沌测试时保证系统和数据的安全。然后,我们运行实验,完成后,我们仔细检查我们的监控和可观察性以及其他系统数据,看看我们学到了什么。

我们的混沌实验影响了什么?这些数据决定了我们如何优先考虑我们的工作,在我们发现的小问题变成大问题之前减轻它们(并且肯定会减轻我们立即发现的任何大问题!)。然后我们通过再次运行相同的混沌实验来跟进我们的工作,以确认我们的工作是有效的。

反复这样做,从小处着手,每次都修复我们发现的东西,很快就会加起来。我们的系统在处理我们无法控制或阻止的现实世界事件方面变得越来越好,例如当我们的云提供商发生意外中断时。

“哦,不!我们在 us-east-2 中的 Amazon S3 存储桶刚刚坏了?”不用担心,我们已经预料到了这一点,并且从客户的角度来看,我们的系统仍然表现良好。也许我们已经在 us-west-1 中进行了故障转移备份,并设计了我们的系统,以便在性能下降到一定水平时进行切换,而客户会注意到。

无论我们的解决方案是什么,我们都设计了它,我们实现了它,然后我们用混沌工程对其进行了测试。结果,当发生我们无法控制的生产故障时,它按预期工作,更重要的是,我们的客户甚至都不知道它发生了。

本文:https://architect.pub/gremlin-what-chaos-engineering

Tags

相关文章
|
机器学习/深度学习 数据采集 数据挖掘
【机器学习】数据清洗之处理缺失点
【机器学习】数据清洗之处理缺失点
387 1
|
存储 SQL 监控
全链路压测:影子库与影子表之争
在生产环境实施全链路压测的过程中,针对上文谈到的两种方案,又面临着数据隔离方案的选择问题,本文首先针对影子库、影子表两种方案进行介绍和对比,然后针对常见的场景,给出方案的选择建议。
5121 96
全链路压测:影子库与影子表之争
|
6月前
|
数据采集 人工智能 JavaScript
Browser Use:40.7K Star!一句话让AI完全接管浏览器!自动规划完成任务,多标签页同时管理
Browser Use 是一款专为大语言模型设计的智能浏览器自动化工具,支持多标签页管理、视觉识别、内容提取等功能,并能记录和重复执行特定动作,适用于多种应用场景。
1640 21
Browser Use:40.7K Star!一句话让AI完全接管浏览器!自动规划完成任务,多标签页同时管理
|
Kubernetes 负载均衡 安全
【K8S系列】深入解析k8s 网络插件—Antrea
【K8S系列】深入解析k8s 网络插件—Antrea
925 0
|
弹性计算 运维 Shell
统计双色球各个数字的中奖概率
【4月更文挑战第29天】
405 1
|
监控 容灾 Cloud Native
被你质疑价值的混沌工程,阿里巴巴已落地实践了9年
无可讳言,对于混沌工程的价值,目前在业内还没有一个明确的度量标准,但是可以通过简单的例子来有效佐证。据中亭介绍,一方面可以先选定一个场景,从结果上看,混沌工程可以保证场景不劣化;另一方面,如果度量组织进行突袭,不管系统架构和人员架构怎么变,监控结果都在合理的范围内。总体而言,混沌工程的核心就是增强信心,保证系统在某个场景下的能力不退化。只要这个组织有度量“特定场景下能力是否退化”的指标,混沌工程的价值就显而易见了。
904 80
被你质疑价值的混沌工程,阿里巴巴已落地实践了9年
|
存储 人工智能 容灾
华为分布式存储专为海量非结构化数据而生,助力构建坚实数据底座
全球每年产生的数据总量将于2030年达到1YB,其中95%以上数据为非结构化数据,企业亟需打造混合负载更高效、数据管理更简单、数据韧性更强悍的数据底座来应对未来的数据挑战。面对海量非结构化数据,构筑架构与技术均遥遥领先的华为OceanStor分布式存储系列将帮助企业释放数据价值,顺利拥抱YB数据时代。
|
Windows
本地电脑搭建Web服务器并用cpolar发布至公网访问
随着互联网的快速发展,网络也成为我们生活中不可缺少的必要条件,为了能在互联网世界中有自己的一片天地,建立一个属于自己的网页就成为很多人的选择。但互联网行业作为资本密集的行业,委托别人建立一个像样的网站要花费不少,不仅要精深设计制作网页,还需要租用服务器资源,用以承载和发布网页。不过现在,我们可以在cpolar的帮助下,将自家电脑或其他电子设备作为服务器,配合一些网页制作软件打造自己的网站,再通过cpolar创建的数据隧道穿透内网,将网页发布到公共互联网上,从而大大节省创建自有网页的成本。
302 0