产品定义
故障演练服务是云原生混沌工程平台,深度融合云原生应用产品体系,提供标准化引导、正确性约束和自动化运行的实验管理,支持大规模、低成本、影响可控、形式多样的应用故障演练,帮助企业增强应用系统的容错能力和恢复能力,提升客户应用云上运行的稳定性。
为什么需要故障演练
应用高可用建设往往是基于先验设计的具体实施,描绘一幅全面但静态的蓝图。而问题在于,随着部署环境、流量模式和调用依赖的日益复杂,系统运行时的动态变化远超预设,没人能预判所有潜在问题。每一次故障都是独特的,但故障的成因是可枚举的,从基础设施到上层服务,功能趋同形成内聚的节点,这有限的故障归因,是高可用建设的结果能够预期的基础。
每一种容灾手段就像针对某类疾病的靶向药,从实验室开发到药品上市,要经过一期又一期的临床实验,才能勉力对抗人类基因的无限性,确保药品在广泛的病患群体中取得符合预期的疗效。异常是不可避免的,高可用建设不是消灭异常,而是消化异常。故障演练就是应用高可用的临床实验,在生产的可控范围内进行可预期的异常暴露和处理,随着不断迭代改进,演练形成的风险处置预案就像给系统注入的疫苗,随时应对真实的生产故障。
混沌工程的最佳实践
混沌工程是指导故障演练进行系统性实验的学科,萌发于2008年Netflix业务上云后的实践需求,随后被诸多大型互联网企业采纳实践,伴随着系统复杂度和不可预知性而发展,逐渐形成体系的方法论,成为保障分布式系统稳定性的核心方法论之一。
建立一个围绕稳定状态行为的假说,用可测量的输出来定义系统的运行状态,验证系统是否正常工作,而不是试图验证它如何工作。
多样化真实世界的事件,关注任何能够破坏稳态的事件,既有状态引发的异常(如硬件故障、软件故障),也有行为引发的异常(如错误配置、流量过载),引入的故障成因要尽可能贴近现实,按潜在影响和发生概率进行优先级排序。
在生产环境中运行实验,系统的行为会依据环境和流量模式而有所不同,最佳的拟真环境就是真实的环境,但稳态破坏的风险暗含故障影响的不可逆性,渐进式多环境实验更为恰当。
持续自动化运行实验,故障演练是循环改进的过程,避免人工依赖的不可持续性,要在系统中构建实验的自动化编排和分析。
最小化爆炸半径,引入故障是为了暴露问题,不是创造问题,演练应该尽量避免对业务造成不可接受的实质伤害,要确保负面影响最小化且都被考虑到。
故障演练的业务痛点
技术要求高:异构的故障源,从基础设施到操作系统,从容器环境到应用进程,以及依赖的中间件,都需要理解其原理才能模拟故障。
实施难度大:跨团队、长流程、多权限,故障演练不仅是技术问题,更涉及组织流程与制度,需要建立相应规范。
影响不可控:故障是已知的,影响是未知的。如何感知并最小化“爆炸半径”,既要有处置预案,又要有工具支持。
故障演练的产品功能
标准化流程管理:固化演练流程,提供组织、人员、应用、资源等多维度的数据与权限管理规范。
丰富的故障场景:实现涵盖应用不同分层的原子故障注入能力,并提供具备业务含义的故障场景组合。
完备的演练防护:实现隔离与熔断双重演练防护,包括权限隔离、环境隔离和范围隔离,以及主动熔断、指标熔断和超时熔断等多种保护机制。
一站式接入管理:深度整合现有应用体系,自动导入组织权限、应用架构和关联资源,实现一站式可编排、可控制、可观测。