简介:生产环境的突袭演练是我们迈出的艰难但有力的一步,锻炼了研发运维人员的应急响应能力,在真实用户场景下锤炼系统,推进了产品的轮班制度,提升了云原生底座的稳定性和竞争力。
作者:智妍(郑妍)、浣碧(何颖)
什么是混沌工程,云原生大潮下的混沌工程特点
通过使用云计算厂商如阿里云、AWS 等提供的服务,现代服务提供者得以用更低廉的成本,更稳定地进行丰富的软件服务提供。但是真的一切如此轻而易举吗?主流云计算厂商在 SLA 承诺的范围内,都各自出现过一些历史故障,可参见这份血淋淋的 github 上的报告列表[1]。另一方面,各个云产品提供给了用户使用的一些高可用能力,经常依然是需要用正确的姿势来配置和使用的。
混沌工程可以帮助业务系统服务提供者通过创建破坏性事件、观察系统和人员响应方式、针对优化改进这 3 个步骤来发现生产服务中脆弱的环节,并根据预期的 SLA 目标进行实施改进。除了指出需要改进的系统组件设计问题之外,混沌工程还可帮助发现需要监控和告警上的盲点、发现人员对系统理解、应急响应 SOP、排查能力上的不足,进而使得业务系统及其研发、运维人员整体的高可用能力水位大大上浮。因此 Netflix 提出此概念后,各大软件厂商纷纷进行了对内实践和对外产品提供。
云原生在传统云计算基础上,提供了更快更低成本的弹性,更好的软硬一体化灵活性,已经成为云计算发展最快的技术方向。云原生帮助开发者大幅度降低资源成本和交付成本,从而更快更好地赢得市场。同时,云原生也给传统运维、研发方式带来了彻底的变革,这就使得传统的混沌工程手段需要跟随演进。
云原生背景下,其上的应用服务的混沌工程实施和传统有什么不同呢?从我们在阿里电商、中间件云原生化的大量实践中,总结出以下主要差异:
在这样差异的背景下,用云原生的手段,实施更加针对植根于云原生应用的场景的混沌工程,是更加恰如其分,能够提供更多能力提升的。
混沌工程实施模式的阶段和发展
既然混沌工程能带来如此多的好处,一个基于云原生的应用服务或体系想要实践,要如何落地呢?
从演练工具和落地实施来看,一个组织的故障演练经常分为几个发展阶段:手工演练,流程工具自动化演练,常态化无人值守演练,生产突袭演练。
这几个阶段的实施难度是从低到高,当然相应的收益也是从低到高。一个组织(云用户)可以随着自己业务应用服务体量的增大、复杂化和高可用能力的增高的历