摘要:信息系统从业务需求分析、架构设计、开发测试、部署上线、运维运营等生命周期的各个阶段,都需要由始至终的考虑其韧性能力,混沌工程可贯穿数字韧性各个环节,验证其韧性能力,并不断优化改进脆弱点,体系化提升数字化系统的韧性。
————————————————————————————
2021年3月,《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》(以下简称“纲要”)正式发布,对未来5到15年的国家发展愿景和目标提出明确要求,其中第五篇为专门的数字化章节。纲要提出:我们要迎接数字时代,激活数据要素潜能,推进网络强国建设,加快建设数字经济、数字社会、数字政府,以数字化转型整体驱动生产方式、生活方式和治理方式变革。
1973年,韧性由加拿大生态学家Holling引入到生态系统研究中,于1973年在其论文《Resilience and Stability of Ecological Systems》中提出,用以表示一个生态系统受到扰动后恢复到稳定状态的能力。随后,韧性这一概念逐渐被引入至社会-生态系统、经济、组织、城市等多个领域。美国国家关键基础设施委员会认为,韧性系统应包括如下特性:①鲁棒性,即系统吸收扰动持续运行的能力;②机敏性,即事件发展过程中控制损失的能力;③恢复力,即快速恢复系统功能尤其是持续为重要业务服务的能力;④适应力,从灾害中吸取经验并提升韧性的能力。
在信息系统领域中,韧性的概念较早,但计算机领域有关韧性的研究相对于其他领域仍处于初步阶段。韧性相比较于鲁棒性、脆弱性、连续性等概念,并没有止步于抗压能力,而是同时兼顾了抗压能力和恢复能力。
一、数字韧性概述
数字韧性是指组织的数字化系统在面对故障、灾难或人为攻击破坏等各类事件时抵抗、吸收、适应和恢复的能力。各类组织数字韧性体系的构建,需要结合人员、流程和技术,通过一系列主动和被动措施来保持数字化系统持续运作,并尽可能减少对组织关键业务和运营流程的影响。数字韧性是衡量企业数字化运营能力的重要指标。
在信息系统发展初期,主要通过硬件设备和软件系统本身的可靠性、冗余性设计及双机集群部署等方式来满足单一数据中心内组件级的韧性目标。随着火灾、地震、电力中断、通信线路故障等低概率中断(disruption)事件的发生,部分组织逐步开始通过灾难恢复体系建设来应对信息系统数据中心级故障,主要通过同城灾备中心和两地三中心的灾备架构来实现。
信息系统灾难恢复是指为了将信息系统从灾难造成的故障或瘫痪状态恢复到可正常运行状态、并将其支持的业务功能从灾难造成的不正常状态恢复到可接受状态,而设计的活动和流程。这里的灾难指的是由于人为或自然的原因,造成信息系统严重故障或瘫痪,使信息系统支持的业务功能停顿或服务水平不可接受、达到特定的时间的突发性事件。信息系统灾难恢复的核心目标是恢复能力构建,并通过演练验证切换能力。由于灾难事件实际发生概率低,导致大多数灾备系统存在重建设轻管理的问题。并且,在组织决策层和业务部门看来,信息系统灾备体系建设存在前期建设投资规模大、资源利用率低、投入产出比低等问题。
信息系统应急管理是指贯穿于整个信息系统生命周期中,通过风险防范、应急响应、应急保障以确保信息系统能够满足业务发展战略对业务连续性要求的管理。信息系统应急管理是国家公共安全应急管理体系的一部分,其面向的对象主体是信息系统,贯穿于信息系统的整个生命周期,需要遵循健全机制、明确职责、预防为主、处置高效的原则。信息系统应急管理的核心目标是快速、有效、有序,快速是指快速应急响应和应急处置;有效是指应急预案的有效性、应急工作平台的有效性和处置能力的有效性;有序是指指挥有序、决策有据、流程有序、操作合规。
业务连续性管理是指组织为有效应对重要业务运营中断事件,建设应急响应、恢复机制和管理能力框架,保障重要业务持续运营的一整套管理过程,包括策略、组织架构、方法、标准和程序。业务连续性管理面向的对象是业务,信息系统是承载业务的组成部分,在数字化转型的时代背景下,其重要程度日渐凸显。业务连续性管理除了包括信息系统的灾难恢复和应急管理之外,还包括风险管理、危机管理、公共关系等内容。
数字韧性的核心目标是实现数字化系统在设计目标状况下的持续有效运行。数字韧性包含了信息系统灾难恢复、信息系统应急管理的内容,但其强调了数字化系统面对各类事件时抵抗、吸收、适应和恢复的能力,同时还需考虑对业务的最小化影响和组织内外部数字化系统的整体性。
数字韧性关键指标是平均无故障时间(MTTF,mean time to failure)和平均维修时间(MTTR,mean time to repair),但指标的对象需要从单个系统和整体系统的维度考虑。数字韧性需要从事前的备战能力、事中的作战能力、事后的改进能力三个阶段打造其能力体系。其中,平均维修时间(MTTR)主要依靠事中的应急管理和灾难恢复管理能力来降低,平均无故障时间(MTTF)主要依靠事前阶段备战和事后阶段改进能力来提高。
增加MTTF是一项长期系统工程,需要从信息系统生命周期的各个阶段进行管控,确保其韧性达到设计目标。具体如下图所示:
二、混沌工程助力数字韧性体系构建
中国信通院对混沌工程的定义是“混沌工程是通过向系统中引入软件或硬件的异常状态(扰动),制造故障场景并根据系统在各种压力下的行为表现确定优化策略的一种系统稳定性保障手段”。
AWS CTO Werner Vogels 说过“故障是注定的,随着时间的流逝,一切终将归于失败”。 既然系统故障不可避免,对系统故障的提前预测与防范则是行之有效的措施。与其等待下一次代价高昂的故障,不如首先提高系统对潜在风险的“抵抗力”,通过故障注入,验证系统韧性设计目标的有效性,暴露出可能影响信息系统稳定性的未知问题。
混沌工程可以利用实验提前探知系统风险,通过架构优化和运维模式的改进来解决系统风险,使得信息系统达到预期设计目标,切实提高数字韧性,降低企业损失并保障企业业务连续性。
混沌工程可以从以下方面助力数字韧性体系的构建:
1 ,有效验证数字化系统的韧性设计目标
在大多数软件系统架构设计中,系统的鲁棒性、可靠性、可用性、稳定性等非功能指标通常考虑的不够完善或者未考虑。在编码阶段,软件项目的管理过程中,对代码规范的要求非常考验项目团队的管理水平和所在企业的管理规范,并非每个项目组都能够严格遵守类似MISRA C/MISRA C++的编码标准。并且,非功能指标的设计通过常规测试也较难验证。
因此,通过混沌工程可有效验证数字化系统的非功能性指标设计。如果系统架构设计和开发测试团队未对非功能性指标进行设计、编码及测试,可以将运行维护团队的韧性保障压力反向传递给软件开发项目组。通过混沌工程故障场景实验验证非功能性技术指标集,减少运行维护团队的运维负担,降低故障对数字化系统的影响,大幅降低业务损失。
2 ,可控方式验证故障事件的影响
从技术角度来看,一个完整的混沌工程实验由建立假设、实验场景和评估指标设计、实验结果预期、实验实施、过程监控、故障恢复和实验结果分析组成。整个故障事件相当于在可控范围内持续进行,可以有效观测信息系统面对故障注入时的反应,验证监控告警的有效性,锻炼运行维护团队面向故障事件时的应急响应和应急处置水平。并且,一旦故障造成的影响超出了可控范围或爆炸半径,可以立即终止实验。
混沌工程实验应该更多关注复合故障的注入对系统的影响,复合故障的注入可以更有效的发现单一故障不易触发和级联故障,提升对数字化系统全局韧性的认知。复合故障的注入通常需要借助混沌工程平台进行随机组合并自动化执行,提升实验效率和实验覆盖范围。
3 ,提升和培养数字韧性人才实战能力及组织文化
实战能力和技术水平是数字韧性人才的核心能力,逐步面向真实系统开展混沌工程攻防演练,系统规模、复杂度、人员状态都是测试环境无法比拟的,能更好锻炼实战能力,选拔人才,对专业化人才队伍建设具有积极的指导作用。
混沌工程实验中,可将研发测试团队和运行维护团队(SRE团队)组织成红蓝军,通过基于混沌工程的故障注入攻防演练,在组织内形成贴近真实生产故障场景的氛围。
既然系统故障不可避免,系统的稳定永远是暂时状态,那么提升数字韧性人才实战能力,培养数字韧性的组织文化则是一项长期工作,必须常抓不懈。
三、未来展望
当前,数字化浪潮席卷全球,数字化转型已经成为各行各业的重要发展战略。但随着云计算、大数据、物联网、人工智能和移动互联网等技术持续应用,主机下移、分布式改造和信创等工作进入深水区,对数字韧性提出了新的挑战。
混沌工程作为提升数字韧性的一种创新模式,希望学术和产业界在理论研究和工程实践方面勇于创新、积极探索,为数字韧性的持续提升贡献一份中国智慧和力量。