您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[华为]:从理念到实战-商业银行混沌工程研究和实践白皮书 - 发现报告
当前位置:首页/行业研究/报告详情/

从理念到实战-商业银行混沌工程研究和实践白皮书

金融2023-07-03华为亓***
从理念到实战-商业银行混沌工程研究和实践白皮书

HUAWEI中国农业银行从理念到实战商业银行混沌工程研究和实践白皮书中国农业银行华为技术有限公司联合发布 编写单位及作者编写单位及作者招导单位北京金融科技产业联盟混沌工程实验室编写单位中国农业银行研发中心华为2012服务实验室华为云计算技术有限公司编写委员会专家顾问蔡仕志闫晓林聂丽琴陈屹力贡佳炜谢友瑶许国平罗学平刘跃光邓锐龚毅贾磊刘柳明徐志华魏坤孙虎胡玉海郭婷何亮齐泊淞主要执第人赵勇帅慧数刘浩彭尚峰杨易寰刘福铭李军王郁黄容萍王海清编写组成员李惠婷徐进晓邱春丽刘蓉张少博张泽陈飞云王嘉良胡莉莉刘一童张慧萍王宽刚涂锐来丽晗耿鹏赵欣何学辉曹铉曾剑鹿王晓华耿鑫王振刚常佳曼刚陈鹏飞张子阳王耀园博晟刘平郑云洲胡志远梁晓豪胡晓嘉林丽鑫曾磊刘丽产01 前言前言二十大报告指出要加快建设数字中国,并对加快发展数字经济做出了战略部署,具体到金融领域,《国务院关于金融工作情况的报告》明确要统筹发展与安全,牢牢守住不发生系统性金融风险的底线,坚定不移走中国特色金融发展之路,实现金融高质量发展。对于商业银行,IT系统作为数字业务的承载,是支撑数字化转型的重要力量。随着金融创新越来越多、产品交付效率越来越高,IT系统规模愈发庞大、链路结构依赖日益复杂,这种结构性的内生复杂与不可预见的用户行为交织在一起,对系统的稳定性提出了更高要求,稳定性建设已成为云原生时代银行T部门的关注重点,在此背景下,混沌工程(ChaosEngineering)作为一种以主动注入故障方式识别和修复未知隐患的手段,已成为稳定性提升的有力抓手,本白皮书针对混沌工程在商业银行落地过程中如何构建体系化实践方法论、如何评价实践效果、如何建设企业文化三方面挑战,给出了参考方案,《从理念到实战一一商业银行混沌工程研究和实践白皮书》在北烹金融科技产业联盟、漏沌工程实验室指导下,由中国农业银行研发中心、华为2012服务实验室、华为云计算技术有限公司联合编制而成,是践行数字化转型、高质量推进业务发展过程中对于混沌工程的研究和实践集成,对同业具有较强的参考和借鉴价值。02 目录目录第一章商业银行混沌工程应用背景041.1IT系统走向分布式时代· 041.2混沌工程提供了分布式系统稳定性分析和检验手段051.3混沌工程在商业银行快速发展06第二章混沌工程落地挑战072.1如何构建混沌工程实践的体系化方法论072.1.1打法思路探素072.1.2支撑平台建设602.1.3管理机制适配092.2如何评价混沌工程实践效果2.3如何建设混沌工程团队文化第三章混沌工程落地体系研究113.1混沌工程基本原理研究- 113.1.1从,风险到事故的“海因里帮法则”3.1.2稳定性风险控制的“奶酪原理”123.2混沌工程基本原则研究.- 133.3混沌工程落地体系研究. 13第四章混沌工程落地体系要点164.1实践方法体系164.1.1打法思路4.1.2技术平台· · 264.1.3管理机制- 274.2评价体系294.3企业团队文化304.3.1技术认同感304.3.2数练人才培养31第五章实践案例32第六章未来展望· 376.1技术层面展望· 376.1.1自动化故障场最分析376.1.2超大规模故障注入和回退- 386.1.3请求级别的无侵入故障注入386.2应用层面展望386.2.1混沌工程信心值模型· 386.2.2领域故障场景库建设- 39第七章总结· 39附录术语解释· 4003 商业银行混沌工程应用背票第一章商业银行混沌工程应用背景1.1IT系统走向分布式时代党的二十大报告指出要加快建设数字中国,并对加快发展数字经济做出了战略部署。具体到金融领域,《国务院关于金融工作情况的报告》明确要求统筹发展与安全,牢车守住不发生系统性金融风险的底线,坚定不移走中国特色金融发展之路,实现金融高质量发展,IT系统作为数字业务的承载,是支撑商业银行数字化转型的重要力量,随着金融创新越来越多,支付效率越来越高,传统单体IT架构已暴露出很多不适应的地方,为此商业银行广泛应用云原生,分布架构等新技术来支撑快速转型发展,新技术在具备“高性能,高弹性,低成本”的优势同时,也伴题IT系统规模意发鹿大,暴露出风险点位增多、依赖关系复杂等特征,这种结构性的内生复与不可预见的用户行为交织在一起,对系统的稳定性提出了更高要求,稳定性建设已成为云原生时代银行部门的关注重点相比小型机时代的集中式单体应用,分布式系统由大量PC服务器组成,强调通过横向扩展来提升整体性能,但当前PC服务器的单点可靠性与小型机还存在差距。这意味着为了达到同等甚至更优的稳定性水平,技术路径上须要从依赖硬件可靠性,转为主动在软件层面构建稳定性。04 商业银行混沌工程应用背票1.2混沌工程提供了分布式系统稳定性分析和检验手段稳定性属于IT系统非功能性需求,在实际工作中存在不易验证的特点,由于单体应用故障率相对较低,所以在单体时代,需要在软件层面关注的稳定性问题并不复杂,而在分布式时代,系统规模呈指数级上升、故障发生的频率变高,这种变化驱使软件层面必须提升系统稳定性的建设和运营能力。关于系统稳定性,业界专家积累了很多正向建设经验和原则,但缺乏有效的反向验证手段。混沌工程作为近些年兴起的一种新理念,其通过设计并执行一系列实验,帮助发现IT系统技术架构(需求、设计、架构、代码、运维等)与运营流程方面的隐照风险和薄弱环节,从而全面提升系统稳定性,混沌工程起源于察飞公司(Netflix)的一次停机故障,此次故障导致了DVD租赁业务中断三天,多个国家的大量用户受到影响,随后,奈飞的工程师逐步探索创建了一种名为ChaosMonkey的工具,通过随机终止在生产环境中运行的实例可以快速了解正在构建的服务是否健壮,是否有足够的弹性可以客忍计划外的故障,混沌工程理念一经提出便在技术领域引起了广泛的注意和讨论,相比传统测试手段,混沌工程的价值不仅仅是发现系统的风险或“暗病”,而是综合验证系统和业务健壮性、优化应急预案、锤炼技术运营和应急响应能力、提升对客响应和舆情攻关能力,最终提升业务、开发、测试、运维全条线人员对业务稳定性的信心。根据《中国混沌工程调查报告》“统计,“混沌工程使用频率”与“组织内产品可用性”是正相关的,体现了混沌工程在分布式系统稳定性提升的价值。都文都会害域11.11%11.11%22.22%55.56%14.71%38.24414.71%32.15%每个月括会高510.13329.11%25.52%35.44%每季度滨然一次15.09429.25%25.47%30.19%15.34%32.9%21.57%29.19%从末使用25.8%27.27%2栋.36%21.57%鲁可用性低于99%鲁 可用性在99%,99.9%之0)用在99.9%测99.99%,2)鲁 可用性离于99.99%图1产品可用性在不同混沌工程使用频率上的分布稳定性测试非混沌工程首创,但传统的稳定性测试侧重点在于如何防范已知范围内系统缺陷的引入,对于需要特定外界扰动才能触发的故障缺乏识别和修复手段,只能在系统故障发生时对故障进行被动的响应,导致故障应对的进工程代码侵入性相对较低,很好地欢补了这个短板,(中国限工程网查报告)中国信递募·晟纯工程实险室05 超业银行混沌工程应用背景1.3混沌工程在商业银行快速发展近年来随看对T系统稳定性要求的不断提高,混沌工程在国内呈现快速发展趋势,其中商业银行对于混沌工程的探索和实践处于“头部”位置。混沌工程受到商业银行“青陈”有着必然因素:一是对于资金安全有着极高要求。提升系统稳定性、防范金融风险是商业银行义不客辞的责任,二是处于技术转型深水区。技术架构、开发模式、运维模式均在变化,混工程作为稳定性提升的重要手段,必然受到更多关注。三是整体研发实力较强。有着良好的研究和实践基础,更容易落地混沌工程。商业银行混沌工程发展的过程中,也针对业务稳定性提升积累了大量的特色场景和实践,以下简要列举了4类:一是业务依赖。对于交易来说,响应时间有着比较高的要求,那么在服务链路日趋复杂的背景下,梳理清服务间的强弱依赖关系、路由关系对于业务健康发展是十分必要的。二是业务连续性。对于极端情况下业务连续性保障,容灾建设是有效的应对措施,但是这并不是单纯的“堆设备”,需要在平时定期/不定期开展演练,检验从接入层、应用层到数据层的接管能力和时长是否符合预期,应急预案和切换步骤是否可热行、有效果。三是营销活动。纪念币预约、信用卡营销等典型的营销活动是极具有银行特色的,不仅与单一的交易、业务条线相关,而是整个体系的“压力测试。,演练中可以通过混沌工程手段验证业务逻辑(例如错峰预约策略的合理性)和技术能力(扩缩容、熔断限流能力等),以及人员应急处置能力。四是资金一致性。围绕着资金安全,对于交易高等验证、不完整事务发生后的处理策路、差错处理机制等的验证。特别地,商业银行结合当前国际形势和趋势导向,从实际金融需求出发,以应用场票为牵引推动关键技术持续送代完善,在多个领域针对新技术、新产品进行攻关,以应用促提升,以应用促创新,在此过程中,混沌工程通过模拟各种故障场景,为新技术、新产品的攻关提供了更为丰富的运行观测数据,加速了经险的积累。06 混沌工程落地挑战第二章混沌工程落地挑战混沌工程的理念非常吸引人,并且经过前期探索实践取得了阶段性成果,但在实践过程中,仍然追切需要系统性的方法体系发挥指导和引领作用,以便更好、更全面地推广并真正释放技术价值,结合调研分析及自身实践,方法体系需要解决三类挑战,一是如何构建混沌工程实践的体系化方法论,二是如何评价混沌工程的实践效果,三是如何建设团队文化。2.1如何构建混沌工程实践的体系化方法论与较为成熟的开发、测试及运维技术体系相比,混沌工程作为一门“年轻”的技术,在实践环节中尚未形成通用的方法体系或最优实践,主要体现在以下3个方面。2.1.1打法思路探索1.如何分析故障场景?混沌工程推广初期,不同工程师对怎样进行混沌工程实践,理解和行动上的差异很大。有的工程师不清楚怎样进行故障实验,是在一个节点注入还是多个节点注入,是注入CPU满还是注入网络丢包,是否需要组合注入,面对灵活的注入工具反而感到迷范;有的工程师选择“随机注入”,有甚者为制造故障“不择手段”,这种做法确实会导致业务不可用,但现实中显然也很难出现这种故障,脱离了实际,使得混沌工程实践偏离目标,变成为了故障而制造故障。以上做法与混沌工程内涵是相违背的,一般而言,混沌工程的目标是验证某个故障场景下系统的稳定性。但是到底如何分析并找出有针对性的故障场景,当前并没有很好的参考实践。07 混沌工程落地挑战注入的目的是验证故障场景,但故障场景如何分析?CPU满故障场景1内存满故障场景2系统内存延迟故障场景3. ..图2混沌工程场景分析示例2.如何进行故障注入降维?经过多年发展,当前故障注入工具所能模拟和注入的故障场景非常丰富,少则四五十种、多的达到几百种。工程师在开展混沌工程时常会有疑问:这么多故障场景,是不是每个都要测一遍?IT系统模块、组件、服务、功能的复杂性叠加故障模拟和注入手段的丰富性,会导致“场景爆炸”现象发生。从故障注入角度计算,故障验证场景数量爆炸内存满模块1CPU满200+模块21000. .200000+丢包故障谢试?超时模块3模块4图3故障注入“场景爆炸”示例3.混沌工程的实验步票包括哪些环节?完整的混沌实验应该包括哪些环节,这也是混沌工程在组织中推广面临的挑战之一,标准化的实验步握可以统一工艺流程、降低推广成本,同时混沌工程的实施具有一定破坏性,标准化的步骤可以控制和规避风险,08 混沌工程落地挑战4.以何种业务形式开展混沌工程?经过多年的发展,工程师们在监控、故障处理等领斌已经形成了标准化思路或最佳实践,例如监控的最佳实践是SLI(ServiceLevelIndicators,能体现业务质量的措标)、SLO(ServiceLevelObject,业务期望达到的质量目标)、ErrorBudget(一般称为错误预算,一年允许的不可用时长),运维工程师实施监控的时候,可按照先分析业务的SLI指标、再商讨过S