在美国旧金山举行的首届ChaosConf大会上,Kolton Andrus做了一个有关混沌实验在过去八年中如何演变的演讲。他认为,与处理故障有关的人力和组织方面的内容不应该被忽略,并建议工具应该支持应用程序和请求级别的故障注入测试,以便最小化潜在的故障影响范围。
Andrus是Gremlin的首席执行官,他通过谈论混沌实验在行业内的演变拉开了活动的帷幕。他将“level 0”实验视为为云端的主机故障做准备。这需要较低的成熟度,而且通常需要使用诸如Chaos Monkey之类的工具将主机故障随机地注入到系统中。随着实践的成熟,“level 1”和“level 1.5”实验的实现变得训练有素,并且将额外的重点放在试验网络故障上。这需要网络专业知识和更高级的运营成熟度。
与处理故障有关的人力和组织方面的内容也成为level 1.5的一个焦点。这里的实验通常是通过“游戏日”来实现的,这些游戏日提供了训练机会,并模拟故障,以便观察人们在真实情况下的反应。Andrus警告说,并非所有组织都认识到发展组织应对故障能力和对员工进行适当训练的价值:
我工作过的很多公司在进行轮班待命训练时,摆出一副“这里是你的寻呼机和仪表盘——祝你好运”的姿态。这是不可接受的。
接下来,Andrus表示,主机测试和基于OSI Layer 3和Layer 4的网络测试对于很多想要运行混沌实验的组织来说是不够的,因为需要更精细的粒度来限制影响并安全地测试应用程序。他说,“运营人员通常考虑的是请求级别的东西”,为了使用请求级别的数据和元数据来选择性地控制测试和实验,工具需要知道应用级别(Layer 7)的东西。
在这个时候,Andrus宣布了Gremlin的新应用级故障注入(ALFI)产品。ALFI支持“level 2”的实验。这是通过在系统中指定“坐标”并匹配针对一组目标运行的实验来实现的。坐标包括应用程序的关注点,例如用户标识符或A/B测试,以及平台的关注点,例如服务或地理区域。工程师还可以使用自定义实现来定义自己的坐标。
在演讲结束时,Andrus总结说,有针对性的坐标可以用来最小化实验的潜在影响范围,并且可以在不干扰整个系统的情况下重现生产环境的中断。应该以迭代的方式安全地扩展实验:
- 使用测试用户或设备验证用户体验;
- 运行1%的流量,对影响进行评估;
- 运行10%的流量;
- 扩展到25%、50%、100%。
也可以使用类似的模式来重现中断:
- 发生中断时,请假设一个原因;
- 创建一个针对单个测试用户的实验;
- 以测试用户身份登录并加载页面或应用程序;
- 找到日志或证据并验证假设;
- 创建拉取请求以修复问题。
有关首届ChaosConf的详细信息可以在大会网站上找到,演讲的录像可以在Gremlin的YouTube频道“ChaosConf 2018”中找到。