本文要点:
- 虽然混沌工程是一种已被证明可以提高系统弹性的技术,但当涉及到关键系统时,涉众通常不愿意引入这一实践。
- 对于关键系统,最好首先在开发/测试类的环境中进行实验,将实际风险和感知风险都降到最低。当你从这些早期实验中了解到新东西时,你可以向涉众解释说,生产环境是一个更大、更复杂的环境,可以进一步从这种实践中获益。
- 使用真实的生产流量,而不是合成作负载,可以提高这些在早期阶段进行的实验的有效性。
- 良好的混沌工程实践可以帮助你提高系统的弹性和事件发生时的可观测性。
近年来,人们对混沌工程越来越感兴趣。它定义了一种有价值的实践,通过接受系统将会失败的事实来提高系统的可靠性。虽然关于如何应用这种方法的文献和讨论比比皆是,但当系统被视为“关键”系统或太重要而不能失败时,人们往往就会产生犹豫。尽管在关键系统中应用此方法可能有更令人信服的理由,但是可以预见,这些系统的涉众对任何可能增加风险的新事物都很敏感。在本文中,我将分享我们Cerner公司(一家医疗保健信息技术公司)的团队在我们的系统中引入这一实践时找到的一种有效的方法。
组织工作
在你开始尝试开展这些类型的实验之前,你希望确保系统涉众就这个方法达成了共识。这在早期阶段是很重要的,因为你的一些发现可能会改变你的软件交付时间表。你希望确保他们理解这个开发过程中新增加的部分,并且这些发现可能比其他计划好的开发工作具有更高的优先级。这就像在生产事件中发现的可靠性问题优先于其他计划好的特性。你通过混沌测试发现的问题可能同样重要,但你是主动发现它们,而不是在实际的事件中被动地发现它们。
在准备引入这些类型的实验时,你需要确定最初关注哪些系统组件。为了尽量减少涉众之间的沟通成本,让这些组件的所有者参加最初的会议是很有帮助的,这样他们就可以理解要实验什么以及为什么要做这些实验,这样你就可以得到他们的全力支持。就像任何新事物一样,最简单的做法可能是同意在第一次实验中与他们合作,这样他们就可以密切参与其中,从而看到其中的价值,并就如何继续参与最好提供反馈。这通常是有价值的,因为他们可以立即就观察到的系统行为提供信息,而不是必须记录这些基本的细节并提供最初的反馈。让他们参与实验,他们就能够在发现问题的时候更深入地分析他们的组件,这个时候收集额外的细节最有效。
识别引入混沌工程实践的安全点
对于关键系统,最好首先在开发/测试类的环境中进行实验,将实际风险和感知风险都降到最低。当你从这些早期实验中了解到新东西时,你可以向涉众解释说,生产环境是一个更大、更复杂的环境,可以进一步从这种实践中获益。同样,在将类似这样的东西引入生产环境之前,你需要确信你有一种安全的方法可以使用,这种方法允许存在令人惊讶的新发现,而且不会引入额外的风险。
下一步,考虑在一个新的生产环境中运行混沌实验,在处理实时流量之前使用生成的合成负载。这样做的好处是可以在生产配置下开始测试系统的一些边界,有利于其他利益相关者理解这将如何被应用,它不会增加客户的风险,因为还没有处理实时流量。
Comments