一、业务背景
某零售企业营业范围覆盖20+个省份、数百个城市,为千家万户的生活提供服务,深受大众青睐。近年来,面对新零售和业务规模的不断扩大,该企业致力于实现业务的全面数字化,持续开发新的IT产品,覆盖从供应链到市场营销、客户服务到商店运营,逐步实施数字化转型,以降低运营成本,提升运营效率。
某系统为该零售企业新开发的一款IT产品,已经上线生产环境,计划正式启动线下业务接入和引流。通过混沌演练对该应用生产环境的架构韧性进行一次引流前的“排雷”和“验收”,以确保在正式引流时无重大稳定性风险。
二、业务现状
随着数字化转型和业务规模的扩大,该企业新开发门店运营系统XX。该系统主体采用容器化部署,对周边15+个系统有依赖,所依赖的系统中有超过10年的旧系统,存在较大的可用性隐患。由于担负全部门店的运营重任,企业希望该IT系统有较高的韧性以应对意外灾害、依赖系统不可用、促销活动中瞬时大流量、运营商网络故障等潜在的故障风险。
三、方案实践
COC平台的混沌演练承载华为云混沌演练的最佳实践,包含从风险识别、应急预案制定、故障注入到演练复盘的全流程,其中风险识别采用FT-FMEA风险分析方法论,故障注入采用自研的故障注入探针。在华为云实践超过4年,每年运行超3000+的自动化混沌演练,节约演练人力超过1500小时。设计流程如下:
1.风险识别和管理
结合XX应用的部署架构和对外依赖图,基于FT-FMEA故障分析法分析该应用在生产环境的风险,形成故障模式。COC内置华为云FT-FMEA故障分析法,帮助用户从系统架构、SLO要求、故障场景分类、故障发生条件、客户影响等方面对系统风险进行高效分析,形成故障模式。
FMEA(Failure Mode Effect Analysis)起源于NASA,主要从业务的功能点出发,列出可能的失效模式、效果和原因、相应的控制手段,结合故障的严重等级、发生概率和可检测性等因素,最后对该模式得出RPN乘积分数,通过该分数可以判断该故障模式的风险等级。FMEA给出了面向风险的故障分析方法,但FMEA中故障发生概率、严重程度、可检测等级的分类等级达到10个,在实际实施时难以匹配,容易导致故障模式发散,进而影响故障管理的效率。华为云从实践中总结出FT-FMEA(基于容错视角的故障场景分析法),在FMEA的基础上,结合SRE实践场景,融合为7维故障分析框架,是专门面向SRE场景的故障分析方法,能够在确保故障全面分析的基础上故障模式不发散,有效提高故障场景分析的效率和质量。
对XX IT系统在COC上使用FT-FMEA后总结的故障模式列表如下,将原来90+的故障模式融合为30+个,为后续的应急预案制定、故障注入方案设计奠定了扎实的基础。
2.制定应急预案
根据分析出的故障模式,结合COC内置的华为云应急预案指导模板和该零售企业的运维实际情况,对每一个故障模式制定对应的应急预案。COC支持全自动化、自动化+人工混合,这两种方式的应急预案,以应对不同故障模式的应急恢复所需。
3.制定演练计划
基于故障模式,结合该IT系统的业务繁忙时段,在COC上制定好演练计划。
4.设计故障注入方案、执行演练、应急恢复
针对故障模式,结合应用的部署情况,设计演练方案,以验证该IT系统的自愈能力、应急预案能力、运维人员的恢复能力。
1)根据选择的故障模式,在COC上选择攻击目标和攻击场景,形成演练任务,以准确模拟故障模式的发生条件。
2)启动自动化演练,观察监控系统是否能够快速检测到故障和告警、该IT系统的自愈时长、运维人员是否能够按照应急预案熟练操作,最终记录下该系统的RTO。
5.演练复盘和总结
COC平台对本次演练进行自动打分,本次演练的观察组在COC中录入改进事项。该系统在本次演练活动中RTO不达标,除此之外,演练共发现18个问题,典型问题如:监控缺失、告警系统有功能BUG、该IT系统的实际部署情况和设计图存在一定差异、系统拨测缺失、运维人员对运维工具的使用不熟练等。
四、业务提升
本次演练采用COC平台对XX IT系统进行全流程多场景的混沌演练,演练达成的效果如下:
1)全面分析XX IT系统的潜在风险,使用FT-FMEA分析法,在确保全面风险识别的情况下,故障模式由90+个缩减为30+个,缩减了66.66%,达成故障模式收敛提质的目标。
2)对每个故障模式制定应急预案,沉淀在COC平台上,通过演练验证和改善了应急预案的可行性,为该IT系统面临的潜在风险建立了可靠高效的恢复能力。
3)COC混沌演练平台的自动化演练能力将演练效率提升10+倍,演练发现问题18个,通过改进落实,该系统SLO提升至99.99%,达到门店运营对该系统的可靠性要求。
五 案例总结
本次案例针对零售企业的XX系统对高可用的要求,使用COC平台进行风险分析、应急预案制定和故障演练。本次演练使用FT-FMEA风险分析法快速高效地识别该系统面临的风险,通过自动化的故障注入验证该系统的风险点和应急预案的有效性。对演练发现的问题进行改进落实,将该系统SLO提升至99.99%,达到门店运营对该系统的可靠性要求。
演练是检验和提升系统的可用性的最佳方式,结合零售企业的运维情况,总结出以下混沌演练的最佳实践原则:
1.明确评价标准
• 混沌演练的全流程都能产生价值,要明确混沌工程各环节的输出件和评价标准,并承载到在线演练平台中。
• 混沌演练是主动暴露风险的技术,通过及时激励来鼓励研发和运维人员主动暴露风险,并对风险制定好应急预案。
2.做好混沌演练,要做到故障模式分析先行
• 故障模式作为演练的起点,决定了演练的质量,应急预案作为恢复手段,是演练安全性和日常故障快速恢复的保障。
• 使用FT-FMEA方法分析的故障模式,在精准识别风险的同时也能够有效避免故障模式的数量发散。
3.使用自动化演练方式
• 自动化演练工具能够降低演练的门槛,提升演练效率,确保故障注入的安全性、准确性。
• 自动化演练工具能够对演练进行在线管理,确保演练的按时执行和演练经验的传承和积累。
4.做好演练运营
• 蓝军可以协调组织较大型的演练活动,在检验各IT系统韧性的同时,也能做好示范,带动独立系统的日常演练,达到演练日常化,演练无死角的效果。
• 对演练活动、演练结果进行运营和宣传,能够让IT开发和运维人员意识到系统可能面临的风险,将质量文化主动落实在研发和运维流程中。