Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【DevOps】什么是混沌工程?

【DevOps】什么是混沌工程?

作者头像
架构师研究会
发布于 2022-09-30 03:29:36
发布于 2022-09-30 03:29:36
8.1K0
举报
文章被收录于专栏:超级架构师超级架构师

测试您可以预测的事故是必不可少的。但是随着数字化转型和云原生架构带来的复杂性,团队需要一种方法来确保应用程序能够承受生产的“混乱”。混沌工程满足了这一需求,因此组织可以提供在任何条件下都可以正常运行的强大、有弹性的云原生应用程序。

什么是混沌工程?

混沌工程是一种测试分布式软件的方法,它故意引入故障和错误场景,以验证其在面对随机中断时的弹性。这些中断可能导致应用程序以不可预测的方式做出响应,并可能在压力下崩溃。混沌工程师问为什么。

从业者将软件置于受控的模拟危机中,以测试不稳定的行为。危机可能是技术、自然或恶意事件,例如影响数据中心可用性的地震或感染应用程序和网站的网络攻击。随着软件性能下降或失败,混沌工程师的发现使开发人员能够在代码中添加弹性,因此应用程序在紧急情况下保持完好。

随着混沌工程师对他们的测试越来越有信心,他们改变了更多的变量并扩大了灾难的范围。许多灾难场景和结果使混沌工程师能够更好地模拟应用程序和微服务发生的情况,这使他们能够与开发人员共享越来越多的智能,以完善软件和云原生基础设施。

混沌工程的历史

Netflix 出于需要开创了混沌工程。2009 年,在线视频供应商迁移到 AWS 云基础设施,为越来越多的观众提供娱乐。但是云带来了新的复杂性,例如不断增加的连接和依赖关系。与娱乐公司在其数据中心看到的负载平衡问题相比,它产生了更多的不确定性。如果云中的任何接触点出现故障,观众体验的质量可能会下降。因此,该组织寻求降低复杂性并提高生产质量。

2010 年,Netflix 推出了一项技术,可以随机关闭生产软件实例——比如在服务器机房里放一只猴子——以测试云如何处理其服务。于是,工具混沌猴诞生了。

混沌工程在 Netflix 等组织中变得成熟,并催生了 Gremlin (2016) 等技术,变得更有针对性和知识化。这门科学催生了专业的混沌工程师,他们致力于破坏云软件和与之交互的本地系统,以使其具有弹性。现在,混沌工程是一个成熟的职业,它会挑起托管的麻烦来稳定云软件。

混沌工程是如何工作的?

混沌工程从了解软件的预期行为开始。

  • 假设。工程师问自己,如果他们改变一个变量会发生什么。如果他们随机终止服务,他们假设服务将继续不间断。问题和假设形成假设(The question and the assumption form a hypothesis)。
  • 测试。为了检验这个假设,混沌工程师将模拟的不确定性与负载测试相结合,并观察交付应用程序的服务、基础设施、网络和设备的动荡迹象。堆栈中的任何故障都会破坏假设。
  • 爆炸半径。通过隔离和研究故障,工程师可以了解在不稳定的云条件下会发生什么。测试造成的任何损坏或影响都称为“爆炸半径”。混沌工程师可以通过控制测试来管理爆炸半径。
  • 见解。这些发现形成了对软件开发和交付过程的输入,因此新软件和微服务将更好地应对不可预见的事件。

为了减轻对生产环境的破坏,混沌工程师从非生产环境开始,然后以可控的方式慢慢扩展到生产环境。一旦建立,混沌工程就成为微调服务水平指标和目标、改进警报和构建更高效仪表板的有效方法,因此您知道您正在收集准确观察和分析环境所需的所有数据。

谁使用混沌工程?

混沌工程通常起源于 DevOps 中的小团队,通常涉及在预生产和生产环境中运行的应用程序。因为它可以触及许多系统,混沌工程可以产生广泛的影响,影响整个组织的群体和利益相关者。

跨越硬件、网络和云基础设施的中断可能需要网络和基础设施架构师、风险专家、安全团队甚至采购官员的投入和参与。这是好事。测试的范围越大,混沌工程就越有用。

尽管一个小团队通常拥有和管理混沌工程工作,但这是一种通常需要来自村庄的投入并为村庄提供利益的做法。

混沌测试的好处

您可以通过测试应用程序的限制获得的洞察力为您的开发团队和您的整体业务带来很多好处。这只是健康、管理良好的混沌工程实践的一些好处。

  • 提高弹性和可靠性。混沌测试丰富了组织关于软件在压力下如何执行以及如何使其更具弹性的情报。
  • 加速创新。来自混沌测试的情报返回给开发人员,他们可以实施设计更改,使软件更耐用并提高生产质量。
  • 推进协作。开发人员并不是唯一看到优势的群体。混沌工程师从他们的实验中收集到的见解提升了技术团队的专业知识,从而缩短了响应时间和更好的协作。
  • 加快事件响应速度。通过了解可能出现的故障情况,这些团队可以加快故障排除、维修和事件响应速度。
  • 提高客户满意度。更高的弹性和更快的响应时间意味着更少的停机时间。来自开发和 SRE 团队的更大创新和协作意味着更好的软件能够以高效和高性能快速满足新客户的需求。
  • 提升业务成果。混沌测试还可以通过更快的价值实现时间、节省时间、金钱和资源以及产生更好的底线来扩展组织的竞争优势。

组织的软件越有弹性,消费者和企业客户就越能享受其服务而不会分心或失望。

混沌工程的挑战和陷阱

尽管混沌测试的好处是显而易见的,但它是一种应该慎重进行的实践。以下是最关心的问题和挑战。

  • 不必要的损坏。混沌测试的主要问题是可能造成不必要的损坏。混沌工程可能导致超出合理测试允许的实际损失。为了限制发现应用程序漏洞的成本,组织应避免超出指定爆炸范围的测试。目标是控制爆炸半径,以便您可以查明故障原因,而无需引入新的故障点。
  • 缺乏可观察性。建立这种控制说起来容易做起来难。缺乏对爆炸半径可能影响的所有系统的端到端可观察性和监控是一个常见问题。如果没有全面的可观察性,可能很难理解关键依赖关系与非关键依赖关系,或者很难有足够的上下文来理解故障或降级的真正业务影响,以便确定修复的优先级。缺乏可见性还可能使团队难以确定问题的确切根本原因,这会使补救计划复杂化。
  • 不清楚启动系统状态。另一个问题是在测试运行之前清楚地了解系统的启动状态。如果没有这种清晰度,团队可能难以理解测试的真实效果。这会降低混沌测试的有效性,并使下游系统面临更大的风险,并使控制爆炸半径变得更加困难。

如何开始混沌工程

与任何科学实验一样,开始使用混沌工程需要一些准备、组织以及监控和测量结果的能力。

  • 了解您的环境的起始状态。要计划一个控制良好的混沌测试,您应该了解您的环境的应用程序、微服务和架构设计,以便您能够识别测试的效果。拥有一个可以与最终状态进行比较的基线可以创建一个蓝图,用于在测试期间进行监控并在之后分析结果。
  • 询问可能出现的问题并建立假设。清楚了解系统的启动状态后,询问可能出现的问题。清楚了解系统的启动状态后,询问可能出现的问题。了解服务水平指标和服务水平目标,并将它们用作建立系统应如何在压力下工作的假设的基础。
  • 一次引入一个变量。为了控制爆炸半径,一次只引入一点混乱,这样你就可以欣赏结果。准备好在特定条件下中止实验,以免对生产软件造成伤害,并且如果出现问题,也要有回滚计划。在测试期间,尝试反驳假设以发现需要关注的领域以提高系统弹性。
  • 监测并记录结果。监控实验以记录应用程序行为中的任何细微差别。分析结果以查看应用程序如何响应以及测试是否达到了团队的期望。使用调查工具来了解减速和故障的确切根本原因。

控制混乱

像 Gremlin 这样的解决方案提供了关键的管理工具来计划和执行混沌工程实验。它使实验具有可重复性和可扩展性,因此团队可以将它们应用于相同或更大堆栈的未来实验。

Dynatrace 的自动和智能可观察性提供了对混沌测试效果的洞察,因此工程师可以谨慎地进行混沌实验。为了监控爆炸半径,Dynatrace 观察了正在进行混沌实验的系统。通过对整个软件堆栈的可见性,Dynatrace 提供了关键的上下文分析,以隔离混沌测试暴露的故障的根本原因。

Dynatrace 的有效监控为进行混沌测试的工程师提供了必不可少的全景镜头,帮助他们了解依赖关系并预测中断将如何影响整个系统。如果混乱超出预期,Dynatrace 的洞察力可帮助团队快速修复对应用程序功能的任何实际损害。

组织可以在数字化转型的任何阶段实现应用程序弹性,而混沌工程是一个很好的工具。然而,在玩火之前,至关重要的是要采取正确的措施来预测和应对这种方法可能带来的大量故障情况。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 首席架构师智库 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【混沌工程】什么是混沌工程? 介绍、定义及更多
软件和系统开发是创新和解决未知问题的练习。软件和系统是容易出错的,因为它们是由具有不同观点和技能的人(很可能是多人)制作的。技术变得越来越分散和复杂,尤其是随着微服务的推动。很少有人拥有完整的端到端知识 […]
架构师研究会
2022/09/26
4K0
【混沌工程】什么是混沌工程?
通过主动测试系统在压力下的响应方式,我们可以在故障出现之前识别并修复故障。 最终,混沌工程的目标是增强我们系统的稳定性和弹性。
架构师研究会
2022/11/01
9760
【混沌工程】什么是混沌工程?
【混沌工程】2022 混沌工程状态
在过去的十二年里,我有机会参与并见证了混沌工程的发展。出身卑微,最常遇到的问题是“你为什么要这样做?”到今天的位置,帮助确保世界顶级公司的可靠性,这是一段相当长的旅程。
架构师研究会
2022/11/01
8680
混沌工程
混沌工程师一门新兴的技术学科,它的初衷是通过实验性的方法,让人们建立复杂分布式系统能够在生产中抵御事件能力的信息。
玄姐谈AGI
2020/01/15
1.6K0
混乱工程对CISO必不可少的5个原因[DevOps]
与传统的业务连续性计划和灾难恢复相比,混沌工程是一种更好的方法,可以测试当今复杂的企业安全计划的弹性。
yyx
2020/01/17
7140
混乱工程对CISO必不可少的5个原因[DevOps]
LitmusChaos升级成为CNCF的孵化项目
LitmusChaos[1]是一个开源的混沌工程平台,它允许团队通过受控的方式诱导混沌测试来识别基础设施中的弱点和潜在的中断。混沌工程验证了业务服务的弹性,并帮助 DevOps 流水线主动构建对软件和基础设施故障更具弹性的代码。
CNCF
2022/01/17
5780
LitmusChaos升级成为CNCF的孵化项目
学习笔记之初识混沌工程
这是一篇2020年2月7日发布在公众号上的文章,最近在重学混沌工程和SRE相关的知识,将之前记录的学习笔记及这两年新的一些思考和理解进行了重新整理,计划更新一个系列。
老_张
2022/04/01
5920
学习笔记之初识混沌工程
混沌工程-初识
公司新成立了一个稳定性团队,20年的重要目标之一就是开展混沌工程。为了后续更好的开展工作,记录关于“混沌工程”相关的知识以及工程实践。
老_张
2020/02/17
8120
2022 年及以后值得关注的 18 大 DevOps 趋势
本文分析了 2022 年及以后的未来 DevOps 趋势,这将为初创公司、小型企业和企业实现数字化转型。
DevOps云学堂
2022/10/04
8770
2022 年及以后值得关注的 18 大 DevOps 趋势
混沌工程(Chaos Engineering) 到底是什么?
2014年,Netflix团队创建了一种新的角色,叫作混沌工程师(Chaos Enigneer),并开始向工程社区推广。项目目标、业务场景、人员结构、实施方式的不同导致了对于稳定状态行为的定义不太标准。
一个会写诗的程序员
2020/04/30
20.3K0
混沌工程(Chaos Engineering) 到底是什么?
Chaos Mesh升级成为CNCF孵化项目
CNCF 技术监督委员会(TOC)已经投票接受 Chaos Mesh 作为 CNCF 的孵化项目。
CNCF
2022/03/28
4640
Chaos Mesh升级成为CNCF孵化项目
【可观察性】什么是可观察性? 不仅仅是日志、指标和跟踪
随着动态系统架构的复杂性和规模的增加,IT 团队面临着越来越大的压力来跟踪和响应其多云环境中的条件和问题。因此,IT 运营、DevOps 和 SRE 团队都在寻找对这些日益多样化和复杂的计算环境的更高可观察性。 但什么是可观察性?为什么它很重要,它实际上可以帮助组织实现什么? 什么是可观察性? 在 IT 和云计算中,可观察性是根据系统生成的数据(例如日志、指标和跟踪)来衡量系统当前状态的能力。 可观察性依赖于源自多云计算环境中端点和服务的仪器的遥测。在这些现代环境中,每个硬件、软件和云基础架构组件以及每个
架构师研究会
2022/03/28
9200
2021年的十五个DevOps趋势预测
DevOps已经走过了很长的一段路,毫无疑问,它将在今年继续闪耀。由于许多公司都在寻找围绕其数字化转型的最佳实践,因此了解领导者认为该行业的发展方向非常重要。从这个意义上说,下面的文章收集了DevOps高层对2021年DevOps趋势的回应。
陈哥聊测试
2021/02/05
4120
都在聊混沌工程,它的落地实践你了解多少?| Q推荐
体现在开发者的世界大抵就是:如果你不提早发现和解决问题,最后问题就会在周末 / 半夜来解决你。
深度学习与Python
2021/10/13
4500
混沌故障演练如何尽可能保障生产环境不被破坏
首先,我们要明确的是:混沌工程本身原则就是通过不断试错的方法来管理风险。实践证明,避免失败的最好办法就是经常失败。通过主动破坏自身环境,来发现系统的弱点。频繁的故障演练使开发团队能从问题中学习经验,从而对服务集群的稳定性有更高的重视。
我是阳明
2023/08/25
6581
混沌故障演练如何尽可能保障生产环境不被破坏
2021年的15个DevOps发展趋势
DevOps发展至今已有多年的时间,毫无疑问将在2021年持续发展。由于许多组织都在寻求围绕其数字化转型的最佳实践,因此了解组织领导者对DevOps行业的发展方向非常重要。本文列出了行业领导者对2021年DevOps发展趋势的预测。
静一
2021/02/05
7260
2021年的15个DevOps发展趋势
微信支付混沌工程实践
本文从业务角度介绍微信支付实践混沌工程落地的思考,通过多分区的架构来控制最小爆炸半径,在高价值的基础组件和微信支付核心业务场景上探索,并基于高可用原则、历史故障分析推导故障原子的开发,是一篇全面的混沌工程建设实践。
腾讯云开发者
2024/03/19
5010
微信支付混沌工程实践
【云顾问-混沌演练】迎难而上,腾讯云混沌工程实践之道揭秘
随着数字经济转型逐步深化,众多企业正迈入全面上云阶段。然而,云计算架构所带来的复杂性也让稳定性面临极大挑战。伴随着云计算规模的快速增长,云服务作为社会基础设施的重要性也日益提升。腾讯云深知质量乃生命线,稳定性至关重要且不容忽视。
四方.
2023/07/03
1.3K0
【云顾问-混沌演练】迎难而上,腾讯云混沌工程实践之道揭秘
混沌工程入门指南
混沌工程是一门专注于通过在系统和应用中引入控制的混乱来验证系统弹性和稳健性的学科。其核心目标是建立对系统在面对生产环境中不可预知问题时的抵御能力的信心。混沌工程通过实验和假设的方法,将结果与系统稳定状态进行比较,以发现和修复潜在的弱点。
FunTester
2025/01/23
1250
混沌工程入门指南
3.3.2 混沌工程:提升未知故障下应急管理能力
本篇是《数智万物下的运维思考》第3部分“流程”第3章的“故障管理中的事前管理”的部分内容。主要梳理一下最近行业中比较火的混沌工程,本文简单先从以下5个方面介绍一下我对混沌工程的理解:
彭华盛
2021/04/26
1.6K0
3.3.2 混沌工程:提升未知故障下应急管理能力
相关推荐
【混沌工程】什么是混沌工程? 介绍、定义及更多
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档