《基于混沌工程理念在测试领域的探索与实践.docx》由会员分享,可在线阅读,更多相关《基于混沌工程理念在测试领域的探索与实践.docx(12页珍藏版)》请在课桌文档上搜索。
1、基于混沌工程理念在测试领域的探索与实践顺应分布式架构转型趋势,工商银行基于混沌工程理念开展了可靠性测试实践与探索,依托“自研+开源”的方式打造可靠性测试的工具支撑体系,并通过实施内外双层管理措施与分级分类推广策略,切实保障了可靠性测试的落地实施,显著提升了分布式服务架构的稳定性和业务连续性。近年来,伴随分布式、云计算等新兴技术的快速发展,银行信息系统正逐步从单体集中式架构向分布式架构转型,以实现灵活、高效服务。顺应这一趋势,工商银行积极响应技术发展变化,基于分布式、云计算技术搭建了全新的开放平台核心银行系统,并同步构建了较为成熟的分布式服务架构体系。为更好地保证系统稳定性和业务连续性,工商银行
2、基于混沌工程理念在测试领域开展了深度探索及实践。一、运用混沌工程原理增强系统稳定性截至目前,工商银行基于分布式架构体系,已成功实现了分布式、服务化、容器化及DevOps等多项变革,大幅提升了从系统开发到上线运行的便捷性。与此同时,为进一步减少故障影响、增强系统稳定性,工商银行于2019年开展了基于混沌工程理念的可靠性测试,并依托故障演练平台实施了常态化与专项深度测试,以夯实分布式应用的高可用服务能力。1 .强化可靠性测试工具支撑为构建混沌工程故障演练工具体系,工商银行采用“自研+开源”方式打造可视化混沌工程故障演练平台,提供了故障演练配置管理、性能实时查询、演练结果分析报告自动生成等多项能力,
3、成功实现从故障场景设计、故障场景注入及撤销到故障结果智能分析的一站式服务。混沌工程故障演练工具体系如图1所示。一是建设故障演练平台,提供故障注入能力。故障演练平台屏蔽应用底层部署差异性,将物理机、虚拟机、容器等多种基础部署环境透明化,抽象形成了系统、应用、容器三方面故障演练能力,可高效支持CPU满载、磁盘IO高、数据库访问延时等百余种故障类型演练,并基于园区、应用、节点提供了分级分类的故障快速编排能力(如图2所示),大幅降低了可靠性测试的操作门槛。园区级别系统层面应用级别应用层面节点级别容器层面图2分级分类的故障快速编排能力二是建设高可用专家库,提升故障演练精准度。通过生产问题总结、可靠性测试
4、实践、业界场景等探索建立高可用测试模型,高可用专家库覆盖了应用层、数据库层、平台层、缓存层、消息中间件层、路由层等六大类70余种测试案例。在此基础上,故障演练平台根据被测试系统的技术架构特点,可自动匹配高可用专家库的测试案例,并“一键式”生成故障演练测试任务。高可用专家库架构如图3所示。CPUDiskNetworkMemoryJVMProcessMySQLServletDubboDockerK8s专家库kafka消息中间件MQ路由层厂F5SLB上下游服前置机异分布式批数据库访数据库抛数据库负分布式事容器资源IO限流异缓存访问kafka集至MQ集群异F5异常SLB异常图3高可用专家库架构三是构建
5、自动化支撑体系,持续提升故障演练水平。基于故障演练平台、性能测试工具和应用监控系统,工商银行打造了故障演练自动化体系(如图4所示)。该体系可根据当期版本架构变化选取测试对象,并获取测试对象稳态时的TPS,交易响应时间、交易成功率等监控指标,进而预设自动化执行目标;此后,故障演练平台调用性能测试工具,即可发起压力测试并调起自动化脚本执行,同时基于测试结果判断自动化执行前后关键指标的变化情况,分析系统优化提升改进方向;最终,通过不断扩大自动化执行范围,循环调起自动化执行流程,实现可持续与常态化的高可用服务守护。分析测试结果调起自动化泅试识别要监控的指标设定测试目标选定假设配置演iS下发故隆注入介质
6、物理机4KOA质依籁L障演练信,图4故障演练自动化体系2 ,建立内外双层保障机制在构建基础性工具后,工商银行秉持“内筑制度流程规范、外修专项团队建设”的原则,创新搭建了分层分类保障机制,以加速推进可靠性测试工作的落地实施。一是建立持续改进机制。面向实施流程,工商银行通过明确实施阶段、实施环境与分工安排,以及完善测试案例及测试问题管理系统,实现了对可靠性测试的精细化管理,并在持续改进过程中,以月为周期建立了培训I、交流、总结螺旋上升的持续改进机制。其中,在培训方面,重点针对故障演练工具的特点和运用方式展开培训;在交流方面,定期组织召开可靠性测试交流会;在总结方面,不断将优秀经验提炼固化到高可用专
7、家库中,并针对性优化工具或管理流程,避免问题事件再次发生。二是组建管理和实施团队。在团队建设方面,工商银行优先组建了由各部门可靠性测试牵头人、故障演练平台维护人员共同参与的管理团队,负责牵头组织工具推广、测试设计和测试实施等工作,并组建了由应用架构师、测试人员、开发人员、运维人员参与的专项实施团队负责具体实施。其中,应用架构师负责根据应用系统的高可用架构特点,制定本应用可靠性测试的演练方案;测试人员负责根据演练方案开展具体的实施工作,并通过监控指标开展系统容错的结果分析;开发人员和运维人员负责故障发生后的问题分析和应急响应。基于上述部署,通过专项管理和具体实施两个团队的分工协作,工商银行切实保
8、障了可靠性测试工作的推广质量。3 .实施分级分类推广体系基于“分步实施、分级提升”的推广原则,工商银行按照“先试点再推广、先重点再全面”的方式逐步推进可靠性测试落地。一是开展试点应用,打造先锋榜样。2019年,工商银行优先选取业务需求多、贴近生产的快捷支付、智能投顾等业务线作为试点,以系统层、应用层、基础设施层为入口,针对性注入服务提供方与消费方节点异常、注册中心集群异常等故障,成功发现了节点亚健康缺乏熔断机制、超时时间过长无法实现隔离等问题。二是选取典型应用,强化重点领域。工商银行从故障表现、故障节点等维度梳理演练场景,选择生产重点保障应用,基于同城双活、优雅启停、限流、超时等七种常用的高可
9、用服务能力,结合演练场景组合开展了深度专项测试,全面覆盖服务器隔离要求、去单点要求等十余种高可用服务规范。基于上述举措,工商银行成功发现并解决了优雅启停响应时间超长、熔断未生效等多个问题,有效保障了重要对客应用的持续服务能力。三是面向全量应用,开展全面推广。按照版本研发节奏,工商银行面向当期版本涉及改造的分支模块,以及存量应用系统架构有变动的场景,针对性设计了可靠性测试方案和测试案例;同时,组织架构师、开发负责人、测试人员等项目组成员,对可靠性测试覆盖的交易分支、注入故障类型、交易观察指标变化情况等开展专题评审,并根据评审结论不断调整测试方案和测试案例,以及适时修正程序处理逻辑,切实提升了应用
10、系统的持续对外服务能力。二、实践成效与后续展望实践中,工商银行基于混沌工程测试体系,对某期版本快捷支付进行了可靠性测试,具体步骤如下:针对快捷支付链路,工商银行首先开展了面向服务提供方与服务消费方节点异常、注册中心集群异常的故障设计,之后按照全链路交易流程,实施了网络、硬盘、进程破坏等故障注入,并持续观察快捷支付链路的交易成功率、TPS.交易耗时变化;同时,为进一步完善测试场景,还制定了交易成功率、TPS在一分钟内恢复正常等系统稳态指标。测试结果显示,服务消费方在亚健康情况下,交易量有所下降,但交易成功率未受影响;服务提供方在亚健康情况下,交易量下跌一段时间后能够自动恢复;注册中心在亚健康的情
11、况下,交易量与交易成功率均未受影响。基于上述结论,工商银行得出如下优化思路:对于服务消费方部分节点亚健康影响整体交易的情况,选择增加熔断机制,对服务调用成功率在连续一段时间内下降的服务节点进行熔断屏蔽,从而快速恢复交易。此外,在实际操作中,当开发人员增加熔断机制后,测试人员还会再次针对该场景进行复测,以确保问题得到妥善解决。截至2022年5月底,工商银行已在超过300个应用系统中开展了基于混沌工程的可靠性测试,累计编制测试案例1.7万余条,系统高可用服务能力、生产应急响应处理准确性等均实现了大幅提升。展望未来,遵循混沌工程“控制爆炸半径”等原则,工商银行将持续研究、建设稳定性模型,并尝试基于服务关键指标和机器学习算法实现系统稳态计算,同时不断提升可靠性测试场景的自识别能力与测试效能,为打造可持续提升的高可用能力保驾护航。