为什么大型科技互联网公司会故意在生产环境中破坏其服务?有几点原因:
- 验证系统的韧性
验证系统是否能应对预期外的故障情况。这种方法帮助公司确认系统的容错能力、恢复能力和弹性。例如,可能会模拟数据库故障、网络延迟、服务器宕机等,以验证系统能否及时恢复,不会对用户造成重大影响。
- 早发现早治疗
帮助团队提前发现并解决潜在的问题,而不是等到问题在真实环境中发生时才去应对。及早发现并修复瓶颈和薄弱环节,避免出现系统崩溃等灾难性后果。
- 提升团队的响应能力
团队在控制的环境中反复进行故障恢复演练,可以有效提升对真实故障的响应速度和处理能力,减少实际发生时的恐慌和混乱。
这种方法被称为 “混沌工程”,大约在12年前由 Netflix 公司首次使用。
图片
如何在系统中尝试混沌工程?
显然,在这样做时必须小心谨慎。毕竟,我们不是为了好玩或吓唬客户而破坏我们的生产服务。我们做混沌工程是为了找到系统中的痛点;这是我们为客户提供的一项服务。要想成功完成这项工作,做好以下准备是很有帮助的:
- 制定计划。用统计学术语来说,我们需要对所选服务的行为提出假设,我们要通过混沌工程将其击垮。
- 计算爆炸半径(Blast Area)。当一项服务宕机时,故障可能会连锁到其他服务。因此,我们需要了解影响的范围,即 “爆炸半径”。
- 良好的监控。您需要仔细检查爆炸半径内的服务是否有良好的监控,这样我们才能知道实验进行得如何,爆炸半径是否扩大。
- 制定运行手册。在运行手册中,我们将记录下关闭服务的步骤、恢复服务的步骤,以及最重要的停止实验的应急计划。
一切就绪。可以开始了。
思考一下:一些团队(如 QA 和 SRE)可能会反对混沌工程,有时原因是可以理解的。如何让他们相信这是一项有价值的工作?