售前咨询-李:13308089138
售前咨询-吴:17760489178 English
前沿资讯 真实、准确的物联网、互联网行业新闻

混沌工程如何提高网络弹性

你的位置: 网站首页 新闻动态 行业资讯
混沌工程如何提高网络弹性
2022-10-25 10:07:06 阅读: 发布人:纵横智控

传统智慧说,“如果它没有坏,就不要修理它。” 混沌工程说,“无论如何,让我们尝试打破它,看看会发生什么。”

在线组 Chaos Community 将混沌工程定义为“在系统上进行实验以建立对系统承受生产中动荡条件的能力的信心的学科”。

混沌工程从业者本质上是对系统进行压力测试,然后将他们认为可能发生的事情与实际发生的事情进行比较。目标是提高弹性。


对于整个职业生涯都专注于保持网络正常运行的网络从业者来说,故意试图将其关闭的想法似乎有点疯狂。

公民社会组织执行会议/东盟:林世贤谈安全部门

0秒16分6秒音量0%

为什么混沌工程有意义

但 Forrest Research 的高级分析师 David Mooter 认为,混沌工程是对网络分布在多云平台上且日益受到网络攻击的环境的一种合乎逻辑的反应。

“问题在于分布式系统过于复杂,我们无法完全理解,”Mooter 说。“这意味着他们会违反我们的假设并做出意想不到的事情。现代弹性工作必须建立在我们无法完全理解和预测我们的系统行为方式的假设之上。”

“网络并不总是可靠的,”事件管理软件提供商 Jeli 的创始人兼首席执行官 Nora Jones 补充道,她在流媒体服务 Netflix 工作时是混沌工程的先驱。


“测试网络的概念与测试 CPU 或其他任何东西相同——模拟不利事件并揭示未知的未知数,”琼斯说。混沌工程支持持续验证的概念,即事物永远不会完全可靠,失败总是在拐角处。“这是一场保持领先于八球的持续战斗,它需要在你处理操作的方式上转变思维方式,”她说。

什么是混沌工程的例子?

Mooter 说他曾与一家公司合作,该公司做了一个简单的混沌实验,涉及错误配置端口。“假设是,错误配置的端口会被防火墙检测并阻止,然后记录下来以立即提醒安全团队,”Mooter 说。

该公司通过定期将配置错误的端口引入生产来进行混沌实验。一半时间,防火墙做了预期的事情,但其余时间防火墙未能阻止端口。但是,辅助云配置工具总是阻止它。

“问题在于辅助工具没有提醒安全团队,因此他们对这些事件视而不见,”Mooter 说。“因此,实验不仅表明防火墙存在故障,而且还表明安全团队检测和响应事件的能力存在缺陷。”

发疯是有办法的

如果混沌工程随机引入网络或安全团队不知道的故障,并且实际上关闭了生产网络或导致性能问题,那么它就没有用。

混沌工程方法是非常具体的。Mooter 说,首先,混沌工程主要在非生产环境中执行。

他补充说:“你不会随意破坏事物,而是智能地识别不可接受的风险,形成关于该风险的假设,并进行混沌实验以确认假设是正确的。

“你将有一个测试组和对照组,这样你就可以 100% 确信任何出现问题的原因都是由于你注入测试组的错误,而不是在你进行实验时巧合发生的不相关的事情。”

Mooter 说,就像科学实验一样,假设应该是可证伪的。“每次我进行实验并且实验成功时,我都会更加相信我的假设是正确的,”他说。“如果它失败了,那么我发现了关于我的系统的新信息来纠正我的错误假设。”

这种方法的主要好处之一是它可以在问题对业务产生重大影响之前发现问题。

“假设有一些不明确的情况会导致您的支付服务离线,”Mooter 说。“您是否想在受控环境(可能是非生产环境)中发现可以立即关闭故障并且人们正在积极监控情况的情况?或者你希望它在周五晚上意外发生,而一些关键运营员工恰好在休假?”


混沌工程的最佳实践

组织在试验混沌工程时可以应用几种最佳实践:


包括应用程序开发人员:Mooter 说,“对于复杂的分布式架构,开发人员对他们的应用程序的限制没有很好的直觉。当混沌工程成为软件交付的一部分时,开发人员会看到越来越多的例子表明他们的假设是错误的。这会养成更积极主动地质疑你的假设的习惯。”

改善沟通:在 Netflix,该公司构建了自己的混沌工程工具并随后将其开源,其想法“是为工程师创建一个强制功能来构建弹性系统,”琼斯说。“每个人都知道服务器会随机关闭,系统需要能够处理它。不仅如此,当这种情况发生时,人们还需要知道如何与正确的各方进行沟通。”

选择正确的实验:网络混沌实验“可以说是最流行的测试,用于模拟导致当今复杂分布式系统意外停机的中断,”提供混沌工程工具和支持服务的 Harness 混沌工程负责人 Uma Mukkara 说。企业可以利用混沌工程进行特定实验,例如验证两个服务之间的网络延迟、检查代码中的弹性机制、丢弃服务调用上的流量以了解对任何上游依赖项的影响,或将数据包损坏引入网络流以了解应用程序或Mukkara 说,服务弹性。

安全团队中的循环:混沌工程可以应用于任何复杂的分布式系统,包括网络安全,Mooter 说。“为了安全,我们的心态是假设无论你如何努力做到完美,安全控制都会失败,”他说。例如,一家银行使用混沌工程来改变它测量的指标。Mooter 说,它不是简单地跟踪没有安全事件的时间,而是开始衡量已知哪些特定的安全保护措施有效。

RTU

控制混乱的技巧

混沌工程可能会带来风险,例如在忙碌甚至不那么忙碌的时候关闭网络。这就是为什么遵循这些准则很重要的原因。


限制混沌工程项目。“我认为你不应该给每个工程师钥匙去破坏东西,”琼斯说。“这是一门学科——更具体地说,它是一门人的学科,而不是工具学科——因此灌输适当的心理安全和学习文化是混沌工程有效的先决条件。”


从现有的事件响应系统中学习。琼斯说,组织应该花时间确保他们从已经发生的事件中吸取教训。“如果你正在考虑混沌工程,我保证你已经拥有大量的事件信息,”她说。“探索它们的第一个和表面模式”,这将有助于理解要运行的最佳实验类型。


有办法快速启动混沌工程项目。Mooter 说,在必要时采用自动化方式立即中止混乱活动是个好主意。“每个混沌实验都应该设计成在出现问题时最小化爆炸半径,”他说。“这可以在基础设施、应用程序或业务层。” 例如,在基础设施层,将故障隔离到一组有限的连接。


联合混沌工程程序。“集中的混沌工程团队无法扩展,”Mooter 说。“如果交付团队不直接参与,他们就不会学习和建立弹性直觉,所以如果集中化,你就会失去文化变革的好处。” Mooter 说,在中央混乱团队和交付团队之间创建“我们与他们”的动态是没有意义的。


“例如,一家软件公司发现,在过去,开发团队会指责基础设施没有提供足够的磁盘空间,而基础设施团队会回过头来询问为什么开发人员编写的代码占用了这么多空间,”他说.


Mooter 说,在接受了混沌工程思维之后,双方都不再争论磁盘为何已满,而是转而询问如何使系统对已满的磁盘具有弹性。


改变文化。Mukkara 说,使用混沌工程的组织创建实验文化是明智的。


“没有任何系统可以 100% 可靠,”她说。“但是,您的客户希望它在需要时可用。您需要建立一个能够承受常见故障的系统,并训练您的团队应对未知故障。这首先要尝试了解您的系统的行为和功能,并随着时间的推移不断改进。”


具有可见性和透明度也很重要,Mukkara 补充说:“报告并与多个利益相关者分享您发现的问题以及您正在对系统进行的可靠性改进,以使业务参与进来,”她说。


例如,向产品管理领导报告系统受到保护的故障模式,以及弹性机制是如何成功测试的。“这将使他们有信心了解系统及其应保持的可用性,”Mukkara 说。“您还可以让他们知道您的系统容易受到哪些故障模式的影响,因此可以优先考虑该问题或至少将其确认为可接受的风险。”


友情链接