需要避免的四个混乱工程错误

需要避免的四个混乱工程错误

根据principlesofchaos.org

“混沌工程是在系统上进行实验的学科,以便在系统抵御生产中稳定动荡的条件下建立信心。”

这些实验采用模拟真实世界失败(“混沌变量”)的形式,例如硬件或网络故障,并检查运行系统的影响。由Netflix推广并归功于帮助他们以大规模成功运行复杂的系统,混沌工程一直在软件工程界的关注和验收。

随着更多团队开始使用混沌工程,我们看到一些值得讨论的常见错误。

错误1:从工具开始

由Netflix开发,几乎等同于混沌工程,混乱的猴子随机选择服务器并禁用它们,模拟真实世界的故障。虽然常规的、自动化的混沌实验是实现混沌工程全部价值的重要方法,但它们可能不是最好的起点。

混沌变量可以像登录到云控制台并禁用服务器一样简单,这个简单的操作通常会导致更快地学习,而不是花时间评估和部署许多可用的混沌工程工具。常规的、自动化的混沌实验是一个重要的目标,但手动实验通常是一个更快的开始方式。

错误2:不限制你的爆炸半径

Netflix的混沌工程方法,在他们的生产环境中不断地进行实验已被广为人知,但像混乱猴一样,这代表了成熟的状态,而不是起点。

有很多方法可以限制你的混沌实验的爆炸半径:

  • 对非生产环境进行实验

  • 只针对服务的一个子集

  • 在限定的时间内进行实验

  • 在使用寿命下降期间运行实验

这些方法中的每一种都具有成本,但限制了实验的潜在爆炸半径。例如,在非生产环境中进行实验永远不能像生产一样教授,但不能影响真实的用户。

在生产中运行混沌实验是了解您的系统的奇妙方式,以及对混沌工程的任何严重投资的重要目标,但从非生产环境中开始,是建立信心和经验的好方法,而不是太多通过降低生产来敌人。

错误3:没有假设

混沌实验代表了来自业务的重大投资:除了系统的固有风险外,还需要时间来计划混沌变量、计划回滚、监控系统和响应任何事件。考虑到成本,作为混沌工程实践者,我们的工作之一就是确保投资的回报,而测试假设是实现这一目标的重要方法。

创造你的第一个假设可能就像询问你的团队“我们所关注的是什么一样简单?或指向架构图并询问“如果此服务发生故障会发生什么?”。尝试将您的质疑集中在不确定性最大,并且潜在的影响最高。

当你有问题而没有答案时,简单地加上你的期望:

“我们假设,如果推荐服务不可用,顾客仍然可以完成他们的购买。”

“我们假设,如果我们集群中的一个数据库不可用,客户仍然会体验到合理的性能(95%的请求在<200毫秒内完成)”

测试这些假设将发现关于系统的重要信息,并确定需要改进的地方。这是你第一次混沌实验的一个很好的起点。

错误4:不投资于可观察性

如果我们不能验证一个假设,它就没有多大用处。为了验证“如果我们集群中的一个数据库不可用,客户仍然会体验到合理的性能(95%的请求在<200 ms内完成)”的假设,我们需要了解系统中的所有请求、它们的响应时间和成功率。

虽然一个简单的仪表盘可以帮助我们回答其中一些问题,可观察性是允许我们挖掘数据并回答混乱实验的重要问题,如“在实验期间为什么响应时间增加?”。

如果你想看到混沌实验的任何回报,实践混沌工程迫使你认真对待你的系统的可观测性。同样地,在可观测性上的投资可以使更有趣和更广泛的混沌实验,所以这两种实践自然地共同发展。

结论

混沌工程不仅仅是打破东西,我们想要从我们进行的实验中学习。作为约翰Allspaw所说:

“事件是计划外的投资;他们的费用已经产生。你的组织面临的挑战是如何从这些活动中获得ROI。”

有了混沌工程,我们有了一个独特的机会来规划这些投资。遵循这里的建议,充分利用这个机会。

免责声明:本文中所表达的声明和意见均为作者本人的观点,并不一定反映Thoughtworks的立场。188bet宝金博app下载

及时了解我们的最新洞察力

Baidu