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