主页
topics
什么是混沌工程
混沌工程是在生产或预生产环境中有意以受控方式造成故障,以了解故障影响并规划更好的防御态势和事件维护策略。
组织的关键应用程序或基础架构每天都会面临新的故障风险,有可能会威胁到组织向客户提供服务的能力。故障原因可能因各个问题而异,包括安全漏洞、配置错误或服务中断。更多的应用程序和数据托管在云端,更有可能会出现错误或中断,进而可能会导致安全问题增加。
解决中断的一种方法便是混沌工程。这不是工程师终止实例或服务或以其他方式导致系统无故失败的随机过程。此过程可识别未来的潜在问题,使工程团队能够主动解决问题,避免在未来的实际环境中出现这些问题。
混沌工程很重要,因为错误或中断可能会减慢组织的发展势头,随着停机时间的增加,组织要花费大量宝贵时间来即时寻求解决方案。Netflix 在从本地切换到云时亲身体验到了这一点1(ibm.com 外部链接);他们经历了一次中断,导致 2008 年的服务交付中断了三天。该情况是在向视频流媒体业务转型之前发生的,否则停机的成本将呈指数级增长。因此,Netflix 决定尽一切可能来最大限度地减少中断,并开始将混沌工程引入其工作流。借助混沌工程,他们能够在问题发生之前识别问题,并在发生不可避免的故障时将损失降至最低。
Netflix 创建了 Chaos Monkey2(ibm.com 外部链接),这是一款开源工具,可在 IT 服务和基础架构中创建旨在识别漏洞的随机事件,当它从私有数据中心迁移到 Amazon Web Services (AWS) 以应对云端的不可靠时,可通过自动恢复程序修复或解决这些漏洞。许多组织现在都使用 Chaos Monkey 来运行其混沌工程实验。
混沌工程是用于应对组织生产环境中的基础架构故障、中断或组件丢失的重要防御措施。可帮助站点可靠性工程师 (SRE) 和 DevOps 团队的其他成员避免服务出现重大中断,更好地了解其漏洞,并了解如何在发生中断时最大程度地减少影响,从而持续交付服务。
因程序的依赖关系不同,即使代码中的一个小问题也可能对整个生产环境产生灾难性影响。例如,金融服务公司的交易软件系统中的错误可能会造成数百万美元的损失3(ibm.com 外部链接)。组织可能无法避免所有 IT 事件,但他们可以通过混沌管理来了解可能的情况及其最佳解决方案,从而最大限度地减少损失。
利用 IBM Instana Observability,企业中的每个人都能以用户友好的方式访问他们想要的数据和需要的环境,快速预防和修复问题。
通过仪表板和其他工具获得高弹性、数字成熟度和高度可观察性的组织应该采用混沌工程,因为他们可以对实验中出现的问题立即采取行动。缺乏这种可观察性的组织4(ibm.com 外部链接)可能需要很长时间才能解析他们通过混沌工程创建的实验。
对于使用云(特别是公有云)和云原生应用程序的组织来说,混沌工程也是必备操作。公有云引入了潜在的中断问题,需要与云提供商协调解决,这就创建了一种与处理本地问题不同的方法。
根据 Constellation Research5 的数据,使用云的企业仍然经常处理 IT 事件,而不考虑云和软件即服务 (SaaS) 对这些事件的不同影响。(ibm.com 外部链接)
此外,微服务使用不断攀升,增加了系统中运行的主机或容器的数量,也带来了独特挑战(ibm.com 外部链接),这些挑战可通过混沌实验来发现和解决。它将复杂性从代码设计转移到系统操作,这并没有消除复杂性,但提高了自动化程度。
混沌工程还可以帮助组织提高持续集成和持续交付 (CI/CD) 管道的速度。像 Netflix 那样将混沌工程纳入 CI/CD6(ibm.com 外部链接),组织便能够自动进行持续实验,同时控制其潜在影响。
最后,组织越来越多地通过 API 与合作伙伴建立联系,这意味着其系统中的问题可能会对其他组织产生连锁影响。
部署混沌工程可以帮助组织了解架构中的漏洞并加以纠正,最终能够预测未来的故障。成功的混沌工程可帮助组织最大限度地减少对客户产生重大影响的技术故障,同时支持构建更强大、更具弹性的复杂系统架构。一旦组织决定采用混沌工程,下一步就是确定是否预生产环境还是生产环境中执行。
DevOps 团队可通过多种选项运行混沌工程实验,以测试各种系统流程。
创建理想的混沌工程流程需要遵循多种原则,以确保组织能够拥有一个大规模的分布式系统。
利用混沌工程的组织必须决定是在其生产环境还是预生产环境中使用混沌测试。混沌工程能在生产环境中发挥最大作用的原因有几点。实时环境最为准确,有助于了解事件如何影响客户体验。另一个原因是预生产环境的设置可能与实际环境并不完全相同,因此给实验引入了一些可变性。
例如,预生产环境中的事件可能不会产生实际响应,因为它缺乏与实时环境相同的流量水平。此外,预生产环境的安全配置与生产环境可能也不同。
一些组织担心会故意造成自己的实时站点出现问题,因此他们在预生产或开发站点上运行实验。这样可确保发生的任何问题都不会影响实时客户体验。为了缓解这种情况,一些组织从预生产环境开始,在迁移到实时生产环境之前便处理该过程。
组织会根据其风险承受能力选择要使用的环境。最终,混沌工程的目标是测试大规模出现的实际问题,因此,生产环境将提供最准确的事件信息,以及需要修复的问题。
混沌工程为组织提供了几个关键优势。
客户对于从公司所购买服务的可用性期望很高。任何停机或无法访问他们为之付费的内容都会严重影响客户满意度,造成收入损失和声誉受损。测试系统和确定解决方案意味着系统长时间瘫痪的风险有所降低。
中断可能来自不良代码、服务器问题或外部威胁。即使有出色的安全措施,也无法杜绝外部威胁。混沌工程有助于识别可能会遭到利用的问题,因此组织可以引入补丁和错误修复(ibm.com 外部连接),以确保服务安全。
利用混沌工程,组织能够为如何应对未来发生的问题制定更明智的蓝图。采用混沌工程的组织将为多起事件制定具体的应对计划,从而更快修复问题,减少停机时间。混沌工程可以将停机时间减少7(ibm.com 外部链接)高达 20%。
混沌工程实验可确定系统如何分配资源。引入实验将演示系统如何处理负载,并显示瓶颈出现或可能出现的位置。
混沌工程可帮助团队提高系统弹性和灵活性,更加高效地开发软件。因此,组织可以更智能地编码新软件和解决方案,因为他们知道当前系统如何处理问题。
了解 IT 运营人工智能 (AIOps) 如何使用数据和机器学习来改进和自动化 IT 服务管理
利用应用程序性能管理,预测性能问题,防止此类问题影响业务
IT 运营和 AIOps 负责监督和自动化整个组织内 IT 服务的管理、交付和支持
ITSM 是指组织如何确保其 IT 服务按照用户和业务需要的方式工作
利用站点可靠性工程自动化 IT 运营任务、加速软件交付并最大限度降低 IT 风险
智能自动化结合了 AI 和自动化技术,可自动处理企业内的低级任务
1 混沌工程:实际的系统弹性,(ibm.com 外部链接)Casey Rosenthal,Nora Jones,2020 年
2 什么是 Chaos Monkey?混沌工程有所解释,(ibm.com 外部链接)InfoWorld,2020 年 5 月 13 日
3 Knight Capital Says Trading Glitch Cost It $440 Million,(ibm.com 外部链接)New York Times,2012 年
4 There Is No Resilience without Chaos, The New Stack,(ibm.com 外部链接)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 日