什么是混沌工程?

2023 年 8 月 3 日

混沌工程是在生产或预生产环境中有意以受控方式造成故障,以了解故障影响并规划更好的防御态势和事件维护策略。

组织的关键应用程序或基础架构每天都会面临新的故障风险,有可能会威胁到组织向客户提供服务的能力。故障原因可能因各个问题而异,包括安全漏洞、配置错误或服务中断。随着越来越多的应用程序和数据被托管在云端,错误或中断的可能性会增加,进而可能会导致安全问题的增加。

解决中断问题的一种方法是混沌工程。这不是一个随意的过程,工程师不会无故终止实例或服务,或以其他方式导致系统故障。此过程可识别未来的潜在问题,使工程团队能够主动解决问题,避免在未来的实际环境中出现这些问题。

混沌工程很重要,因为错误或中断可能会减慢组织的发展势头,随着停机时间的增加,组织要花费大量宝贵时间来即时寻求解决方案。Netflix 在从本地切换到云端1 时亲身了解了这个概念 - 他们经历了一次中断,导致服务交付在 2008 年中断了三天。

这次中断发生在它转型为视频流媒体业务之前,否则停机的成本将会呈指数级增长。因此,Netflix 决定尽一切可能来最大限度地减少中断,并开始将混沌工程引入其工作流。借助混沌工程,他们能够在问题发生之前识别问题,并在发生不可避免的故障时将损失降至最低。

Netflix 创建了 Chaos Monkey2,这是一款开源工具,可在 IT 服务和基础设施中随机创建事件,旨在找出可通过自动恢复程序修复或解决的薄弱环节。为应对云的不可靠性,当公司从私有数据中心迁移到 Amazon Web Services (AWS) 时,他们实施了“Chaos Monkey”。许多组织现在都使用 Chaos Monkey 来运行其混沌工程实验。

混沌工程是防范组织生产环境中基础设施故障、中断或组件缺失的重要防御措施。它通过避免服务严重中断,帮助站点可靠性工程师 (SRE) 和其他开发运维团队成员提供持续的服务交付。混沌工程帮助他们更好地了解自己的漏洞,并告知如何在发生中断时将影响降至最低。

因程序的依赖关系不同,即使代码中的一个小问题也可能对整个生产环境产生灾难性影响。例如,金融服务公司的交易软件系统中的错误可能导致数百万美元的损失3

组织可能无法避免所有 IT 事件,但他们可以通过混沌管理来了解可能的情况及其最佳解决方案,从而最大限度地减少损失。

小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

受益于混沌工程的组织

通过仪表板和其他工具获得高弹性、数字成熟度和高度可观察性的组织应该采用混沌工程,因为他们可以对实验中出现的问题立即采取行动。缺乏这种可观测性4 的组织可能需要很长时间才能解析他们通过混沌工程创建的实验。

对于使用(特别是公有云)和云原生应用程序的组织来说,混沌工程也是必备操作。公有云引入了潜在的中断问题,需要与云提供商协调解决,这就创建了一种与处理本地问题不同的方法。

根据 Constellation Research5 的数据,使用云的企业仍然经常处理 IT 事件,而不考虑云和软件即服务 (SaaS) 对这些事件的不同影响。

此外,微服务使用不断攀升,增加了系统中运行的主机或容器的数量,也带来了独特挑战,这些挑战可通过混沌实验来发现和解决。它将复杂性从代码设计转移到系统操作,这并没有消除复杂性,但提高了自动化程度。

混沌工程还可以帮助组织提高持续集成持续交付 (CI/CD) 管道的速度。像 Netflix 那样6 将混沌工程纳入 CI/CD,组织便能够自动进行持续实验,同时控制其潜在影响。

最后,组织越来越多地通过 API 与合作伙伴建立联系,这意味着其系统中的问题可能会对其他组织产生连锁影响。部署混沌工程可以帮助组织了解架构中的漏洞并加以纠正,最终能够预测未来的故障。

成功的混沌工程可帮助组织最大限度地减少对客户产生重大影响的技术故障,同时支持构建更强大、更具弹性的复杂系统架构。一旦组织决定采用混沌工程,下一步就是确定是否预生产环境还是生产环境中执行。

AI 学院

面向企业的生成式 AI 的兴起

了解生成式 AI 的历史兴起及其对企业的意义。

混沌工程实验的类型

DevOps 团队可通过多种选项运行混沌工程实验,以测试各种系统流程。

  • 延迟注入:DevOps 团队有意创建模拟缓慢或失败网络连接的场景。其中包括引入网络延迟或拖慢响应时间。
  • 故障注入:可能会故意向系统引入错误,以确定错误将如何影响其他依赖系统以及是否会中断服务。故障注入的例子包括诱发磁盘故障、终止进程、关闭主机,或导致功率或温度上升。故障注入可帮助组织识别任何单点故障,如果发生问题,可能会导致整个系统发生故障。
  • 负载生成:这有关于通过发送远超正常运营的显著流量水平来故意对系统施加压力。此举有助于站点可靠性工程师 (SRE) 了解系统中的任何瓶颈,从而使他们能够构建更具可扩展性的系统。
  • 金丝雀测试:指的是向一小部分用户发布新产品或功能。这样,任何故障或错误都只会影响一定比例的访客,而其他受众仍获得访问现有网站的体验。

 

混沌工程的最佳实践

创建理想的混沌工程流程需要遵循多种原则,以确保组织能够拥有一个大规模的分布式系统。

  • 了解系统:包括全面了解整体系统、系统的新增特性和功能,以及系统的拓扑、架构、依赖关系、稳态行为、输出响应,以及可用性、延迟和吞吐量等特征。
  • 采用失败:对于软件工程师来说,他们本来是为了防止此类事件发生,却又允许事件发生,这似乎自相矛盾。然而,IT 服务中总会发生中断,较好的做法是先在受控环境中体验中断,以便先行一步找到解决方案,而不是在组织团队下班后,或在以前未遇到此类特定问题时,延后几小时才找到解决办法。
  • 建立稳态行为:首先,工程团队必须定义系统正常运行时的行为方式,这样才能比较实验对稳定状态的影响。
  • 识别实际事件:混沌工程实验应尽可能接近一天的正常运行情况,而不是创造不可能的情况。网络和基础架构故障、错误代码、电源问题和流量过载情况都有可能发生。
  • 创建比赛日:混沌工程可以研究比赛日的环境,在特定某天内进行多次测试,以最大限度地利用资源来识别和解决尽可能多的问题。
  • 使用自动化:各种规模的组织都可以通过自动开展实验来使用混沌工程,如果公司手动进行实验,则工作强度太大。这减轻了混沌工程流程中 IT 团队部分负担。组织可以在实验设计、故障注入和基础架构配置等各个方面实现自动化。
  • 注意爆炸半径:混沌工程师必须尽最大努力来缩小爆炸半径,尽可能减少对客户造成的实际伤害。可通过以下方式来最小化爆炸半径:
    • 瞄准服务子集:混沌工程不应从根本上中断组织的服务,尤其是在生产设置中。瞄准特定服务子集可以最大限度地减少事件发生时造成的影响,确保事件不会导致整个系统瘫痪。
    • 在有限时间内运行实验:实验应该有开始和结束时间。实验的重点是创造一个事件并将其解决,而不是让事件长期不受控制地运行。
    • 远离高峰期进行实验:组织应尽量避免在高峰时段进行实验,除非在特殊情况下,他们试图评估事件发生期间高容量对系统造成的影响。
    • 在开发环境中运行实验:确保不会出现客户体验服务中断的最简单方法是在预生产环境中运行。然而,这意味着条件将与生产环境不同,可能会错误地描述正在发生的情况。为了最大限度地减少这种情况,请确保预生产环境和生产环境尽可能相互镜像。
    • 针对每个组件进行实验:组织系统不断发生变化,因而混沌实验永远不会结束。另一个目标应该是“全面”测试:检查整个过程中的所有组件、层级、服务及其依赖关系。

生产环境与预生产环境

组织在采用混沌工程时,必须决定是在生产环境还是预生产环境中使用混沌测试。混沌工程能在生产环境中发挥最大作用的原因有几点。

实时环境最为准确,有助于了解事件如何影响客户体验。另一个原因是预生产环境的设置可能与实际环境并不完全相同,因此给实验引入了一些可变性。

例如,预生产环境中的事件可能不会产生实际响应,因为它缺乏与实时环境相同的流量水平。此外,预生产环境的安全配置与生产环境可能也不同。

一些组织担心会故意造成自己的实时站点出现问题,因此他们在预生产或开发站点上运行实验。这样可确保发生的任何问题都不会影响实时客户体验。为了缓解这种情况,一些组织从预生产环境开始,在迁移到实时生产环境之前便处理该过程。

组织根据其风险承受能力选择要使用的环境。最终,混沌工程的目标是测试大规模出现的实际问题,因此,生产环境将提供最准确的事件信息,以及需要修复的问题。

混沌工程的优势

混沌工程为组织提供了几个关键优势。

更好的客户服务

客户对于从公司所购买服务的可用性期望很高。任何停机或无法访问他们为之付费的内容都会严重影响客户满意度,造成收入损失和声誉受损。测试系统和确定解决方案意味着系统长时间瘫痪的风险有所降低。

提高数据安全性

中断可能来自不良代码、服务器问题或外部威胁。即使有出色的安全措施,也无法杜绝外部威胁。混沌工程有助于识别可能会遭到利用的问题,因此组织可以引入补丁和错误修复以确保服务安全。

最大程度减少停机时间

利用混沌工程,组织能够为如何应对未来发生的问题制定更明智的蓝图。采用混沌工程的组织将为多起事件制定具体的应对计划,从而更快修复问题,减少停机时间。混沌工程可以将停机时间7 减少多达 20%。

提高可扩展性

混沌工程实验可确定系统如何分配资源。引入实验将演示系统如何处理负载,并显示瓶颈出现或可能出现的位置。

为未来软件开发提供信息

混沌工程可帮助团队提高系统弹性和灵活性,更加高效地开发软件。因此,组织可以更智能地编码新软件和解决方案,因为他们知道当前系统如何处理问题。

相关解决方案
业务咨询服务

将业务转型和技术转型融为一体,重塑工作方式,从而增强企业敏捷性。

    深入了解业务咨询服务
    人力资源和人才转型咨询

    以 AI 为核心,重塑人力资源并对其进行现代化改造,以实现更好的业务成果并释放员工的全部潜能。

    深入了解 HR 转型服务
    金融咨询服务

    通过端到端服务将数据分析、AI 和自动化技术融入核心流程,提升财务绩效并实现业务价值。

      深入了解金融解决方案
      采取后续步骤

      通过重新规划公司策略和工作方式来发展和转变业务模式。

      深入了解业务战略服务 探索人工智能服务
      脚注

      1 Chaos Engineering: System Resiliency in Practice(ibm.com 外部链接),Casey Rosenthal,Nora Jones,2020 年。
      What is Chaos Monkey? Chaos engineering explained(ibm.com 外部链接),InfoWorld,2020 年 5 月 13 日。
      Knight Capital Says Trading Glitch Cost It USD 440 Million(ibm.com 外部链接),New York Times,2012 年。
      4 There Is No Resilience without Chaos(ibm.com 外部链接),The New Stack,2023 年 4 月 13 日。
      5 Incident Management in the Cloud Era(ibm.com 外部链接),Constellation Research,2023 年。
      6 ChAP: Chaos Automation Platform(ibm.com 外部链接),Netflix 博客,2017 年 7 月 26 日。
      7 The I&O Leader’s Guide to Chaos Engineering(ibm.com 外部链接),Gartner,2021 年 10 月 28 日。