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

什么是混沌工程?

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

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

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

混沌工程的历史

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

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

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

混沌工程是如何工作的?

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

  • 假设。工程师问自己,如果他们改变一个变量会发生什么。如果他们随机终止服务,他们假设服务将继续不间断。问题和假设形成假设(The question and the assumption form a hypothesis)。

  • 测试。为了检验这个假设,混沌工程师将模拟的不确定性与负载测试相结合,并观察交付应用程序的服务、基础设施、网络和设备的动荡迹象。堆栈中的任何故障都会破坏假设。

  • 爆炸半径。通过隔离和研究故障,工程师可以了解在不稳定的云条件下会发生什么。测试造成的任何损坏或影响都称为“爆炸半径”。混沌工程师可以通过控制测试来管理爆炸半径。

  • 见解。这些发现形成了对软件开发和交付过程的输入,因此新软件和微服务将更好地应对不可预见的事件。

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

谁使用混沌工程?

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

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

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

混沌测试的好处

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

  • 提高弹性和可靠性。混沌测试丰富了组织关于软件在压力下如何执行以及如何使其更具弹性的情报。

  • 加速创新。来自混沌测试的情报返回给开发人员,他们可以实施设计更改,使软件更耐用并提高生产质量。

  • 推进协作。开发人员并不是唯一看到优势的群体。混沌工程师从他们的实验中收集到的见解提升了技术团队的专业知识,从而缩短了响应时间和更好的协作。

  • 加快事件响应速度。通过了解可能出现的故障情况,这些团队可以加快故障排除、维修和事件响应速度。

  • 提高客户满意度。更高的弹性和更快的响应时间意味着更少的停机时间。来自开发和 SRE 团队的更大创新和协作意味着更好的软件能够以高效和高性能快速满足新客户的需求。

  • 提升业务成果。混沌测试还可以通过更快的价值实现时间、节省时间、金钱和资源以及产生更好的底线来扩展组织的竞争优势。

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

混沌工程的挑战和陷阱

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

  • 不必要的损坏。混沌测试的主要问题是可能造成不必要的损坏。混沌工程可能导致超出合理测试允许的实际损失。为了限制发现应用程序漏洞的成本,组织应避免超出指定爆炸范围的测试。目标是控制爆炸半径,以便您可以查明故障原因,而无需引入新的故障点。

  • 缺乏可观察性。建立这种控制说起来容易做起来难。缺乏对爆炸半径可能影响的所有系统的端到端可观察性和监控是一个常见问题。如果没有全面的可观察性,可能很难理解关键依赖关系与非关键依赖关系,或者很难有足够的上下文来理解故障或降级的真正业务影响,以便确定修复的优先级。缺乏可见性还可能使团队难以确定问题的确切根本原因,这会使补救计划复杂化。

  • 不清楚启动系统状态。另一个问题是在测试运行之前清楚地了解系统的启动状态。如果没有这种清晰度,团队可能难以理解测试的真实效果。这会降低混沌测试的有效性,并使下游系统面临更大的风险,并使控制爆炸半径变得更加困难。

如何开始混沌工程

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

  • 了解您的环境的起始状态。要计划一个控制良好的混沌测试,您应该了解您的环境的应用程序、微服务和架构设计,以便您能够识别测试的效果。拥有一个可以与最终状态进行比较的基线可以创建一个蓝图,用于在测试期间进行监控并在之后分析结果。

  • 询问可能出现的问题并建立假设。清楚了解系统的启动状态后,询问可能出现的问题。清楚了解系统的启动状态后,询问可能出现的问题。了解服务水平指标和服务水平目标,并将它们用作建立系统应如何在压力下工作的假设的基础。

  • 一次引入一个变量。为了控制爆炸半径,一次只引入一点混乱,这样你就可以欣赏结果。准备好在特定条件下中止实验,以免对生产软件造成伤害,并且如果出现问题,也要有回滚计划。在测试期间,尝试反驳假设以发现需要关注的领域以提高系统弹性。

  • 监测并记录结果。监控实验以记录应用程序行为中的任何细微差别。分析结果以查看应用程序如何响应以及测试是否达到了团队的期望。使用调查工具来了解减速和故障的确切根本原因。

控制混乱

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

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

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

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

本文 https://www.jiagoushi.pro/what-chaos-engineering
讨论:知识星球【首席架构师圈】或者加微信小号【ca_cto】或者加QQ群【792862318】
公众号 【jiagoushipro】
【超级架构师】
精彩图文详解架构方法论,架构实践,技术原理,技术趋势。
我们在等你,赶快扫描关注吧。
微信小号 【ca_cea】
50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化.

QQ群 【792862318】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。
加QQ群,有珍贵的报告和干货资料分享。

视频号 【超级架构师】
1分钟快速了解架构相关的基本概念,模型,方法,经验。
每天1分钟,架构心中熟。

知识星球 【首席架构师圈】向大咖提问,近距离接触,或者获得私密资料分享。

喜马拉雅 【超级架构师】路上或者车上了解最新黑科技资讯,架构心得。 【智能时刻,架构君和你聊黑科技】
知识星球 认识更多朋友,职场和技术闲聊。 知识星球【职场和技术】
微博 【超级架构师】 智能时刻
哔哩哔哩 【超级架构师】

抖音 【cea_cio】超级架构师

快手 【cea_cio_cto】超级架构师

小红书 【cea_csa_cto】超级架构师

网站 CIO(首席信息官) https://cio.ceo
CIO,CTO和CDO https://cioctocdo.com
应用开发和开发平台 https://apaas.dev
开发信息网 https://xinxi.dev
首席架构师社区 https://jiagoushi.pro
超级架构师 https://jiagou.dev
企业技术培训 https://peixun.dev

谢谢大家关注,转发,点赞和点在看。

【DevOps】什么是混沌工程?相关推荐

  1. 六年打磨!阿里开源混沌工程工具 ChaosBlade

    阿里妹导读:减少故障的最好方法就是让故障经常性的发生.通过不断重复失败过程,持续提升系统的容错和弹性能力.今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 " ...

  2. 混沌工程之ChaosBlade(一):建立混沌工程思想

    本系列文章的目标,是将混沌工程作为一个入口,窥探整个分布式系统. 混沌工程之ChaosBlade(一):建立混沌工程思想 混沌工程之ChaosBlade(二):原理深度剖析 一.混沌工程是什么 < ...

  3. 【译】混沌工程与区块链

    作者 Vipin Bharathan 原文:https://medium.com/@vipinsun/chaos-engineering-the-blockchain-51e60ae74d27 第一部 ...

  4. 架构师口中的混沌工程,究竟用来解决什么问题

    导读:混沌工程,翻译自国外的 Chaos Engineering,在 Netflix 以及最近的一些技术大会得到了广泛关注,本文介绍了混沌工程的一些基本原理. Netflix不仅是一家互联网视频平台, ...

  5. 浩鲸科技基于ChaosBlade的混沌工程实践

    简介:浩鲸科技在海量互联网服务以及当前爆炸式增长的流量场景实践过程中,沉淀出了包括,链路压测,流控管理,动态扩缩容,故障演练等高可用核心技术,并通过云上服务化.平台化和工具化的形式,帮助内部产品研发部 ...

  6. 混沌工程将成标配?落地腾讯游戏后带来了哪些惊喜?丨Gdevops峰会

    时间:2021年5月28日 地点:广州阳光酒店 场次:运维 & DevOps专场 演讲主题:<持续保障系统的稳定性和高可用:腾讯游戏混沌工程实践> 议题要点及收获: 全面理解混沌工 ...

  7. 混沌工程详细介绍——Netflix持续交付实践探寻

    内容来源:DevOps案例深度研究 – Netflix的文化与工程实践战队(本文只展示部分案例PPT及研究成果,更多细节请关注案例分享活动,及本公众号). 本案例内容贡献者:高金梅,李晓莉,潘雄鹰,潘 ...

  8. 混沌工程是什么_平静中的混沌:什么是混沌工程?

    混沌工程是什么 Chaos Engineering isn't just something that Dr. Robotnik does; it's a serious and increasing ...

  9. 混沌工程-为什么推广的如此困难

    前言 2019年开始接触混沌工程,2020年开始我们的运维体系开始引入混沌工程相关的设计,2022年准备正式在生产环境落地.期间走过不少弯路,基本是摸着石头过河,该犯的错误犯过之后我们对自己混沌工程的 ...

最新文章

  1. APACHE利用Limit模块限制IP连接数
  2. MYSQL5.5 YUM更新安装
  3. oracle pl sql 抛出例外
  4. 委托到Lambda的进化: ()= {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
  5. c#执行存储过程的简单实例
  6. Opencv visual studio c++ 环境搭建
  7. 怎么保证读取最新数据_摄影师的数据存储有多难,怎么存储大量数据并保证安全高速防水防摔防尘?SanDisk...
  8. Struts2 标签库讲解
  9. 在Silverlight中进行图片下载
  10. 【OpenCV】读取显示图片及Mat类
  11. SQL 取空格右边的字符_从零学会SQL,第2关
  12. Android自定义View入门级
  13. “共码未来”——2022Google开发者大会纪行
  14. 旋转角度计算(旋转手势)
  15. Python 一键导出微信阅读记录和笔记!
  16. 关于求字体识别不出来
  17. C−Fe3O4碳量子点修饰四氧化三铁纳米复合材料合成过程图示
  18. c++函数模板--(函数模板的定义)
  19. 简账(开源记账软件)-前端环境简介及部署
  20. 微信公众平台安全模式消息体签名及加解密PHP代码示例

热门文章

  1. 识别产品外观的合格软件_机器视觉产品外观质量检测分析系统
  2. 假设当年产值为100c语言答案,C语言程序设计试题题库含答案zdui.doc
  3. python 迭代器详解
  4. CMakeList--->CMakeList的编写,cmake,平台通用项目构建工具
  5. 导线载流量_过路老熊_新浪博客
  6. Cadence PCB仿真使用Allegro PCB SI电磁干扰EMI配置图文教程
  7. 关于basler相机传输速度过慢/传输丢帧
  8. Axure原型的设计规范(更新中)
  9. ChatGPT介绍与使用场景
  10. java 使用抽象类解决长方形与圆求周长与面积的实现