制造混乱:网飞如何进行性能测试


在类似生产的环境中运行性能测试总是理想的。这样,您可以确保您的测试不受生产中不存在的因素的影响,例如次优规格或测试服务器的配置。那么,一个好的性能测试人员做什么呢?他们比较他们的机器规格,并要求生产尺寸的盒子来运行他们的测试。但这真的够了吗?

现实是这样的:尽管我们有计划,但我们有时仍然会在生产中看到我们在测试环境中看不到、也无法复制的东西。很难预测每一个可能的失败。即使你意识到了危险,也很难重现可能导致危险发生的完美风暴。您的网络架构越复杂,这些故障就越有可能发生。因此,在部署到生产中时会有一种“不要呼吸,否则可能会破裂”的感觉。那么,如何测试您的应用程序以获得对其性能的最大程度的信任呢?

如果你是网飞,你的答案将是融入混乱之中。

简而言之,混沌理论告诉我们,看似随机的东西实际上包含着模式,虽然不可预测,但却是可识别的,因此是可管理的。混乱并不代表混乱,它是我们对那些无限复杂且以不明显的方式相互联系的事件的描述。混沌工程将这一原理应用到软件中。开发人员可以通过编码来尽可能减少混乱的发生,但是他们也可以通过编码来确保应用程序能够承受混乱的发生。作为测试人员,我们测试后者的一种方法是制造混乱

网飞的测试策略非常强调制造混乱,因为他们的商业模式包括按需从世界任何地方以足够快的速度向客户传输千兆位的数据,这样人们就不会因为在龙之母激动人心的演讲中缓冲数据而感到烦恼。在2015年,网飞占了36%的交通流量North America。网飞客户播放了1.25亿小时的视频every day。网飞曾经从他们自己的私人数据中心提供内容,但是在2008年由于数据库损坏中断了他们的业务三天之后,他们转移到了云端。今天,网飞是100%在云中,这提供了有形的好处,例如由于他们使用了亚马逊网络服务(AWS),可以按需扩展的架构——顺便说一句,与我们在Flood IO使用的CDN是一样的。然而,即使是云也不能幸免于混乱。加入猿猴军。

想象一下一群猴子在数据中心制造混乱的幽默画面,猿猴军是网飞开发的一系列工具,它们故意将混乱编码到测试中。在网飞,每个版本不仅要通过功能性和非功能性测试的标准套件,还要通过猿猴军队混乱但可编程的测试,所有这些都是网飞在Github上作为开源工具提供的。每只猴子都是真实世界的人造混沌测试,测试中的应用程序必须通过该测试,才能以对其稳定性和持续性能的高度信心投入生产。

混沌猴子随机选择节点中的一个节点或容器,并意外地终止它,迫使网飞工程师修改他们的代码,通过快速地将请求重新路由到备份节点和容器来处理这种行为。

看门猴检测云中未使用的资源(实例、卷),并终止它们。理想情况下,所有不再使用的资源都应该关闭,但实际上这并不总是发生。人们忘记删除不再使用的东西。应用程序被更改为使用新卷,旧卷被遗忘。虽然这是一个好主意,以确保每个人都意识到需要清理自己,看门猴假设,事情会通过裂缝,并自动前来救援。看门猴还会向资源的所有者发送通知,以便在删除之前有足够的时间将资源标记为异常。

一致性猴子扫描实例并确定它们是否符合组织指定的一组规则。如果实例的配置方式不正确,整合猴子会向所有者发送通知。它可以在没有适当的安全组或标签的情况下检测正在创建的实例。

安全猴子监控您的整个公共云或私有云,以查找可能导致严重安全违规的策略更改或错误配置的实例。它甚至提供了一个用户界面,这样你就可以看到重要政策变化的历史以及它们是由谁制定的。

西米安军队是对传统软件测试技术的显著背离,传统软件测试技术非常程序化,并且基于预先确定的流程。假设人们行为合乎逻辑,都是他们领域的专家,什么都不会忘记,并且总是遵循最佳实践。但这真的现实吗?

网飞的测试方法是创新的,因为他们不认为每个人都知道他们在做什么,从开发人员到基础设施工程师到测试人员。他们也不认为总是有可能知道生产失败的确切原因。有时候,不好的东西只是击中了风扇,没有人看到它来了。我们在技术领域的工作本质上需要不断的变化,并且很难跟上应用程序之间日益集成的所有方式。随着物联网变得越来越流行,这一点只会变得更加明显。

Flood,我们经常看到我们的客户瞄准生产环境,并且有一些强有力的理由支持这样做。生命周期的后期测试意味着我们可以开始解决生产规模的可用性、可伸缩性和可靠性问题,否则这些问题很难重现。面对现实吧。我们有时都会在数据中心看到猴子。也许我们该开始了planning for it

参考文献
Completing the Netflix cloud migration
What is chaos theory.
Principles of chaos engineering
The Netflix Simian Army
Chaos engineering - surviving the failures in distributed systems
Chaos engineering series - Part 1: chaos engineering deep dive
What is Simian Army?