实战 | 混沌工程为数字招行保驾护航
金融电子化
2024-04-10 11:59:06

原标题:实战 | 混沌工程为数字招行保驾护航

文 / 招商银行信息技术部 林耘毅 郑晖

混沌工程通过模拟和“主动制造”系统中的故障和不稳定因素,验证系统对这些故障的反应和恢复能力,以此提前发现、及早解决系统存在的弱点,实现降低系统风险和成本的目的。混沌工程就像给系统打疫苗,不是说打了疫苗就不会生病,而是通过注入可控病毒提高系统免疫能力。

招商银行信息技术部 林耘毅

项目背景

互联网金融时代,金融机构纷纷启动数字化转型,快速推进金融产品和服务模式创新。面对互联网金融的全新发展态势,IT系统作为数字化转型的技术底座,发挥着至关重要的作用。随着系统规模的增长,敏捷且快速的迭代模式流行,使得分布式、微服务间的关联关系错综复杂,对系统进行全链路观测和持续性维护的难度大大增加。内生复杂性的事件与不可预见的用户行为交织在一起,使得拓扑链路中的一个环点异常就可能引发级联故障,从而对整个系统造成重大影响,同时也给稳定性测试带来了新的挑战,但其背后隐藏的真实问题是传统稳定性治理手段的落后。

当前,稳定性和时效性是金融应用系统的核心关注点,为了应对上述挑战,招商银行在2020年正式启动可用性治理的混沌工程项目,通过构建IT系统免疫屏障,支撑科技敏捷和业务敏捷。在此过程中,招商银行形成多项混沌工程领域最佳实践,持续赋能同业及其他金融企业。

价值和愿景

项目价值:招商银行可用性治理的混沌工程项目通过自主创新,打造了全栈式混沌工程体系,有效提升金融云的可用性及对未知风险的应急能力,营造开放融合的系统稳定性开源社区,助力混沌工程技术在国内快速发展。

项目愿景:架构设计层面,应对复杂架构带来的不确定性,及时发现架构潜在的隐患和缺陷;开发测试层面,通过对基础环境、中间件和应用等充分验证实现“风险左移”;运维层面,通过验证告警能力、完善指标体系等方式,提升故障定界和应急处置能力,不断优化应急预案;用户层面,培养拥抱失败的文化,建立抵御失控条件下的自身应变能力和信心。

整体架构

招商银行可用性治理的混沌工程项目推出一体化混沌工程创新实践的实验平台,分别是资源层、支撑层、实验层、控制层及防护层,将故障模拟注入能力作为重点,实现底层资源与上层业务的无缝衔接,充分提升IT系统的反脆弱性,提前暴露系统风险和问题。平台支持丰富的资源类型,也具备复杂场景的编排能力,具有场景实施快、部署方式灵活等特点。平台采用分层治理的模式,各层之间逻辑紧密,满足业务场景需求,支持故障场景横向扩展,兼容各类其他平台的对接方式,加强混沌工程实施过程中的稳定性。整体业务架构如图1所示。

图1 整体业务架构

资源层涵盖四大类型,分别为数据库、容器、主机及中间件,针对不同类型资源,实现全自动化对接和基于资源模型分类进行新建、编辑、查看、查询、导入、导出、删除、批量删除、关联资源及查看删除记录的功能。

在支撑层方面,平台集成了丰富故障场景的专家库,涵盖从故障注入、故障预案到故障治理的全链路解决方案,为用户提供了全面、高效的故障处置流程。

在实验层方面,支持用户以自定义、可视化的方式编辑混沌工程爆破实验计划和模拟业务接入流量,满足云上业务的实验需求,提高了混沌工程爆破实施的效率和精确度。

在控制层方面,平台根据用户的实验计划,自动编排和调度故障场景,以实现高并发和自动化支持能力,在确保平台的稳定性和可靠性的基础上,最大程度满足用户个性化需求。

在防护层方面,平台严控各层级混沌工程爆破实验的用户权限,以及管控各类资源操作权限等。对于故障生效范围和实施过程也严格按照部署环境相关标准来执行,最大程度地控制爆破半径,以确保生产业务稳定和安全不受影响。

从功能角度来看,平台实现的功能组件如图2所示。

图2 平台功能组件

除此之外,平台拥有强大的安全保障能力,在系统安全方面:平台部署在招商银行高保资源池,采用多AZ、多集群的高可用标准,满足7×24小时稳定运行的要求;产品技术自主可控,由项目组统一负责研发、投产和后期运维,可快速响应可能遇到的技术风险。

实践成效

从2020年9月开始,项目组就开始调研和分析行业内可用性治理和混沌工程领域,构建了130种以上典型云上故障场景,帮助用户提前发现和解决潜在未知风险。在实践过程中,项目组开展了上万次混沌工程爆破实验,识别出近百个隐患问题,通过早预防、早发现规避了经济损失。在混沌工程爆破实验过程中采用自动化资源对接、自助式实验报告输出、实验计划模板化创建、可视化的复杂故障场景编排等技术,整体执行效率较初期提升了50.8%以上,自动化率达到99.9%,支撑并赋能手机银行、掌上生活、快捷支付等上云系统和相关核心业务。

除此之外,项目组突破了业界难题,形成混沌工程领域典型案例,并赋能开源技术社区。

案例一:在LitmusChaos社区版本中存在一个缺陷,导致针对Pod IO的故障模拟场景无法正常工作。为此,项目组进行了充分的验证和测试,追根溯源,解决了Docker Hack跟Control Group不兼容的底层问题。

案例二:业界目前不具备针对OpenShift容器进行混沌工程爆破实验,项目组通过深度研究LitmusChaos社区版本的代码,对OpenShift容器技术栈进行自研开发和兼容适配,使得优化后的故障注入组件具备高内聚、低耦合、高移植性等特点。

创新特点

招商银行可用性治理的混沌工程项目在爆破实验过程中,结合本行应用需求在多个关键技术上进行了创新。

1.银行领域故障注入专家库,意在用故障注入方式驱动可用性治理。对银行领域真实生产事件进行全面根因分析,结合业界通用原子故障,再根据根因划分所属故障类型。并在根因分析完成后根据事件严重程度、发生次数排定优先级,最终形成了130种以上典型云上故障场景。在分析生产事件过程中,除高优先级原子故障外,还形成了银行领域混沌工程故障专家库。此外,专家库在原子故障基础上结合生产事件的上下文补充了实验背景信息,根据需要模拟的原子故障设置了具体的实验步骤,根据生产事件发现后采取的改进措施等形成了稳态假说。这样用户在开展混沌工程爆破实验时,可在专家库中查找符合自己系统的实验场景,通过平台一键完成实验复用,让用户能在一分钟内触发整个实验。专家库中的实验步骤设计、稳态假说设计、防护手段说明等都来源于真实的生产事件经验,对混沌实验设计有很大的参考价值。解决了对混沌工程研究还比较浅的组织在落地推进过程中,业务团队不知道如何设计实验、开展哪些实验、观察哪些指标等实际问题,可帮助同业更快、更好地落地混沌工程。

2.支持多样化复杂真实场景的故障模拟能力,让可用性治理覆盖更加全面。为了实现专家库所涉及的全部原子故障自动注入能力,平台融合了ChaosBlade、Litmus等混沌工程领域业界技术。目前基础资源层覆盖了主机硬件、主机网络、主机状态和脚本等多类故障场景。平台资源层包括了Docker、OpenShift和Kubernetes等多层级故障场景,全面覆盖整个云原生的容器架构。在应用资源层从JVM、Servlet、微服务等方面进行了有效地补充,包括方法延迟、线程阻塞、消息队列打满、应用流量突增等故障场景。另外,为了让用户灵活模拟各类真实故障事件,平台还提供API接口方式对外服务。

3.构建企业级编排调度能力的实验平台。作为一个企业级的平台,服务招商银行所有IT团队,必须具备高并发处理、多技术栈接入、对外输出等核心能力。

支持高并发:构建了基于分区-控制器-介质的三级高性能分布式系统,实现了控制器节点自由弹性伸缩,性能达到10000TPS以上。

支持多技术栈接入:平台除提供故障模拟注入原子以外,还支持自定义故障模拟注入原子,从而实现了多技术栈系统接入。

支持对外能力输出:以OpenAPI方式对外输出平台能力,利于招商银行内各类原子能力的整合。

4.支持多样化安全防护措施,以便让实验最小化影响业务。在开展混沌工程爆破实验过程中,需结合系统自身特点,考虑通过有效的措施保证实验产生的影响最小化,严控爆破半径。

精细化流量管控能力:招商银行混沌工程平台在爆破实验过程中将系统划分为实验组和控制组进行对照实验,通过两组对照实验来全面观测异常故障下的系统稳态表现,可以实现0.1%的精度流量控制。因用户流量小,影响范围可控,且流量分配比例可以实时调节,如果发生异常情况,可及时调整和中断实验组用户流量,保证用户对实验的可控。

控制爆破范围能力:提供一键自动故障中止、故障影响范围阈值设定等手段保障实验过程可控。

权限管理能力:提供严格的角色权限管理、资源权限限制等,保证混沌工程爆破实验不被滥用。

5.构建可视化混沌爆破实验过程、全链路指标观测。为了帮助用户直观了解整个混沌工程爆破实验过程,平台集成了可视化实验的全生命周期管理,包括从业务数据流量、关键基础资源指标以及业务实例状态等进行全方位监测。涵盖了从平台、集群、应用等多维度健康检测手段,针对不同种类资源建设了丰富的观测部件库及自定义监测面板,协助用户更好地了解实验过程的各个阶段,还原带载业务真实流量的注入情况,评估实验效果。例如:通过应用间的调用次数、频率、错误率检测,服务之间的依赖关系拓扑图,实时检测服务内部接口健康状态,实时监控资源指标等多元化观测手段来验证系统韧性以及评估实验过程的稳态,及时发现异常情况。

6.构建平台全方位自动化能力。为构建更加便捷的一体化混沌工程创新实践平台,平台致力于优化从资源层、支撑层到实验层、控制层的多层级自动化能力,实现了多种类型资源自动化对接、自动化输出实验报告、一键实验计划模板化创建、复杂故障场景智能化编排、批量计划创建实验参数固化,以减少用户手动输入和重复性操作,提高执行效率。通过对平台进行全方位、全链路、自动化的建设,帮助用户更好地评估系统的可靠性和稳定性。

结束语

事物发展,风险蕴含其中。风险无法完全避免,但可以通过合理的措施降低其发生的概率及影响。混沌工程的诞生源于云技术的使用,破解了传统业务连续性被动响应的困境,通过架构分层理念和尽可能多的制造故障场景,寻找导致系统异常的因素,通过混沌工程反复爆破和迭代,建立起稳定、高效、可控的全免疫屏障。这一举措将持续驱动招商银行在数字化时代稳步向前,为业务连续性建设提供强有力的保障,夯实金融行业稳定、安全的发展之路。

(此文刊发于《金融电子化》2024年3月上半月刊)

相关内容

热门资讯

星河动力回应发射失利 来源:上海证券报 1月17日12时08分,星河动力谷神星二号运载火箭在酒泉卫星发射中心点火升空,火箭...
深圳天境羽宏科技申请仿真机器人... 国家知识产权局信息显示,深圳天境羽宏科技有限公司申请一项名为“一种仿真机器人的嘴角控制装置”的专利,...
华陆工程科技申请精馏系统专利,... 国家知识产权局信息显示,华陆工程科技有限责任公司申请一项名为“精馏系统”的专利,公开号CN12131...
“HBM之父”预测:HBF商业... IT之家 1 月 17 日消息,在部分业内人士中有“HBM 之父”之称的韩国 KAIST 学者 Ki...
商业航天“独角兽”!中科宇航上... 【大河财立方消息】又一商业航天企业IPO取得新进展! 1月17日消息,证监会公开发行辅导公示平台显示...