何波:中泰证券互联网金融业务混沌工程实践

Connor 比特币交易平台 2023-02-14 83 0

中泰证券股份有限公司金融科技委员会主任兼科技研发部总经理 何波

背景分析

随着金融行业的高速发展,业务需求不断激增、产品迭代速度越来越快,从而导致系统规模变得越来越大,传统的单体架构模式已无法满足金融行业当前业务的发展需求,分布式微服务架构正在越来越多地被应用到金融行业之中。与传统的软件架构相比,微服务架构更加复杂的部署结构使其面临更多故障的威胁,且微服务架构系统故障的症状也更加多样化。同时,因为金融行业需要涉及到大量的资金交易,系统会涵盖到多数据中心、多活、灾备、容器、虚拟机等众多复杂的基础设施,系统间的交互会尤为复杂,使系统的运行增加了更多不确定性。

现有的稳定性保障措施侧重点在于如何防范已知范围内系统缺陷的引入,对于需要特定外界扰动才能触发的故障缺乏识别和修复的手段,只能在系统故障发生时对故障进行被动响应,导致故障应对的进度和成本不可控。

混沌工程简介

混沌工程是在分布式系统上进行实验的学科,首次提出是在2008年8月,由网飞公司(Netflix)提出。2012年Chaos Monkey在Simain Army项目中开源,SimianArmy成为首个开源的混纯工程工具集,此举为混沌工程工具的发展打下了基础。2015年网飞公司正式发布《混沌工程理念》(Principal of Chaos Engineering),主要介绍了混沌工程实验的目的、意义和方法论。2016年混沌工程商业公司Gremlin成立,混沌工程正式走向商用化。2019年开始,国内企业纷纷引入并实践混沌工程。

混沌工程旨在提升系统容错性,建立系统抵御生产环境中发生不可预知问题的信心;将故障扼杀在襁褓之中,也就是在故障造成中断之前将它们识别出来。通过主动向系统注入可能引发故障的扰动来探究系统对扰动的承受能力,测试系统在各种压力下的行为,识别并修复故障问题,避免造成严重后果。混沌工程是一种提高技术架构弹性能力的复杂技术手段,经过实验可以确保系统的可用性。这种通过实证的验证方法显然可以打造更具弹性的系统,同时让我们更透彻地掌握系统运行时的各种行为规律,能够在不断打造更具弹性系统的同时,树立运行高可用分布式系统的信心。

基于此,中泰证券开展了混沌工程试点应用,选取了业务需求多的互联网金融业务系统作为试点,以系统层、应用层、基础设施层为入口,针对性注入业务级、架构级故障,成功发现了超时过长、节点亚健康等问题,使得公司系统稳定性和金融科技水平得到显著提升。

建设方法

基于“分步实施、分级提升”的推广原则,公司按照“先试点再推广、先重点再全面”的方式逐步推进混沌工程落地。中泰证券互联网金融业务系统由零售业务能力体系、金融产品体系、综合金融服务体系三大体系构成,用于满足客户日益增长的投融资需求。互联网金融系统平台架构分为互联网接入层、业务服务层、基础服务层、环境部署层,业务服务层包括用户中心、行情中心、资讯中心、交易中台、理财中台、业务办理、投顾中台、增值工具等具体业务。系统架构采用SpringCloud微服务框架,并结合缓存、分布式存储、搜索引擎、消息队列等高性能、低成本的分布式中间件以及数据采集、实时数据计算、日志中心等提供的基础服务构建业务系统整体架构。

展开全文

作为公司重要的业务系统,互联网金融系统需满足金融级高可用,实现了高可用SLA保障以及多区域多中心的高可用支持。为了进一步完善系统稳定性保障体系,中泰证券决定基于混沌工程的思想对互联网金融系统的稳定性进行探索实践。

现阶段,我们制定了在互联网金融业务线展开混沌工程实验的建设方案,具体方案如下。

1.混沌工程仿真环境的建设方案

首先需要进行互联网金融系统仿真环境的搭建,仿真环境参照生产环境部署架构进行仿真环境1:1建设。中泰证券互联网系统架构如图1所示。

图1 中泰证券互联网系统架构

2.混沌工程监控体系的部署方案和监控指标整理

监控体系的部署基于混合云的部署环境,从上到下对业务应用、基础服务、基础设施即SaaS、PaaS、IaaS实施监控。监控系统应用状态监控主要组件包括:Exporter、Prometheus、Alertmanager、grafana,此外,为了更好地监控演练过程中的应用及架构状态,也引入了链路监控和性能监控体系。通过各个Exporter数据采集器收集服务器基础资源监控指标数据、数据库集群监控指标数据、消息队列等中间件集群监控指标数据、应用服务监控指标数据等。具体包括如下。

(1)业务应用:主要包括服务可用性监控(服务、端口是否存在,是否假死)及应用性能监控(应用处理能力,比如交易量、成功率、失败率、响应率、耗时)。

(2)基础服务层:包括各种中间件、Docker容器、云原生平台的性能指标。

(3)基础设施层:监控基础资源的性能情况,CPU(CPU使用率、CPU各核使用率、CPULoad负载)、内存(应用内存、整体内存等)、磁盘IO(读写速率、IOPS、平均等待延时、平均服务延时等)、网络IO(流量、包量、错包、丢包)、连接(各种状态的TCP连接数等)等。

3.混沌工程平台的建设方案

混沌工程平台总体上分为五层,分别是上层业务、平台模块、任务调度、底层能力、基础设施。最下面的是公司所部署的基础设施,包括容器、虚机、物理机和其他非标准服务器。最终,混沌工程故障注入介质将会安装在这些基础设施上实施各类故障注入。

平台应主要包含环境管理、应用管理、探针管理、演练计划、演练可观测、风险场景库、演练报表告等功能(如图2所示)。

图2 演练指标体系

(1)环境管理:支持安装在虚拟机、物理机或云服务器上;支持集群模式部署,包括虚拟机集群、容器集群;支持云原生部署,包括云服务器以跨云、内部多云等方式;支持服务器类型如ARM/X86服务器架构;支持Linux操作系统。

(2)应用管理:支持集成Nacos、Zookeeper注册中心,实现自动感知应用的功能;支持端口匹配,根据配置的应用端口,自动匹配出探针感知的实例;支持人工配置IP和端口号。

(3)探针管理:在被测集群或者机器上安装探针,用于接收混沌工程平台服务端发送的命令来进行故障注入。

(4)演练计划:内置演练流程为故障注入→持续时间→注入恢复。通过节点的自定义配置来组织演练计划,可以新增、编辑、删除节点。支持串行和并行场景编排;支持流程复用;每个节点支持重试和跳过、终止。

(5)演练可观测:可以与第三方监控工具集成,实现演练指标可观测。

(6)风险场景库:支持自定义配置场景库分类,例如基础资源场景库、流量过载场景库等;支持设置具体的专家场景,包括基本信息、配置参数、配置流程、观测指标。

(7)演练报告:支持自定义配置演练报表,包括演练时间、演练类型、应用、实例等筛选。

4.混沌工程实验标准化及自动化

通过对项目演练过程的通用步骤抽象,实现特定场景演练过程的标准化,有利于积累规范化的演练场景及故障处理流程,赋能其他业务快速进行实验,减少演练成本。同时通过混沌工程的自动化去覆盖更多的实验集。

实践体系及经验

中泰证券通过此次混沌工程体系的实施,建设了一套能够对混合云环境下进行演练的混沌工程体系(如图3所示)。实现了对可靠性测试的精细化管理,并在持续改进过程中,以月为周期建立了培训、交流、总结螺旋上升的持续改进机制。

图3 演练平台能力建设

此次实践通过模拟调用延迟、服务不可用、机器资源满载等,查看发生故障的节点或实例是否被自动隔离、下线,流量调度是否正确,预案是否有效,同时观察系统整体的QPS或RT是否受影响。此外,为了更好地观测演练过程,建立可观测体系也是非常重要的。

通过分层次监控体系,能够对演练过程中的故障进行迅速反应并通知告警,能够帮助演练参与人员快速定位故障。在演练能力和可观测体系完善的基础上缓慢增加故障节点范围,验证上游服务限流降级、熔断等是否有效。最终故障节点增加到请求服务超时,估算系统容错红线,衡量系统容错能力;通过模拟上层资源负载,验证调度系统的有效性;模拟依赖的分布式存储不可用,验证系统的容错能力;模拟调度节点不可用,测试调度任务是否自动迁移到可用节点;模拟主备节点故障,测试主备切换是否正常;通过对系统注入故障,验证监控指标是否准确,监控维度是否完善,告警阈值是否合理,告警是否快速,告警接收人是否正确;通知渠道是否可用等,提升监控告警的准确和时效性;通过故障突袭,随机对系统注入故障,考察相关人员对问题的应急能力,以及问题上报、处理流程是否合理,达到以战养战,锻炼人定位与解决问题的能力。

在团队建设方面,中泰证券优先组建了由各部门可靠性测试牵头人、故障演练平台维护人员共同参与的管理团队,负责牵头组织工具推广、测试设计和测试实施等工作,并组建了由应用架构师、测试人员、开发人员、运维人员参与的专项实施团队负责具体实施。为了保障实践体系更好地推进,引入了红蓝攻防体系,并在团队间形成GameDay文化(如图4所示)。

图4 GameDay文化

在演练过程中红蓝双方互相对抗,在保证业务正常运转的前提下,使用仿真网络环境开展实战网络对抗,并及时处理系统架构的真实隐患,检验并提高安全威胁监测发现能力、应急处置能力和安全防护能力。相比于传统的渗透测试,红蓝对抗的最大区别是引入了防守方动态应对,在对抗之中,攻击和防守的能力都在逐步提升,红色攻击方利用各种漏洞攻击尝试进行内网渗透,防守方需要有全面的安全防护能力才能不给敌人可乘之机,通过实战攻防演练,可以有效验证企业重要业务系统的实战化防护能力,发现系统的安全隐患,总结经验和教训,最终提升安全防护能力。

在团队具体实践中,应用架构师负责根据应用系统的高可用架构特点,制定本应用可靠性测试的演练方案;测试人员负责根据演练方案开展具体的实施工作,并通过监控指标开展系统容错的结果分析;开发人员和运维人员负责故障发生后的问题分析和应急响应。基于上述部署,通过专项管理和具体实施两个团队的分工协作,切实保障了可靠性测试工作的推广质量。在培训方面,重点针对故障演练工具的特点和运用方式展开培训;在交流方面,定期组织召开可靠性测试交流会;在总结方面,不断将优秀经验提炼固化到高可用专家库中,并针对性优化工具或管理流程,避免问题事件再次发生。

实践总结

中泰证券基于混沌工体系,对互联网金融服务进行了稳定性测试,在具体的实施路线上依照从小到大,从点到面,先对服务的某个请求进行故障注入,其次是整个服务,最后再到应用整体架构。之后按照全链路流程,实施了网络、硬盘、进程破坏等故障注入,并持续观察互联网金融服务的访问成功率、TPS等变化。后期将实现混沌工程测试常态化,并融入DevOps工具流水线。中泰在互联网金融业务系统中落地的同时实现了一些技术上的创新,具体有以下几个方面。

一是建立了互联网金融业务混沌工程实践体系,赋能互联网金融业务稳定展业。互联网金融在券商营收中有着非常重要的作用,通过混沌工程在互联网金融系统的实施,积累了该系统演练的场景用例与实施演练的工具体系。

二是完成了混合云多场景下混沌工程工具演练体系建设。目前生产业务系统通常涉及多云环境,通过此次混沌工程体系的实施,建设了一套能够对混合云环境下进行演练的混沌工程体系。

三是积累了混沌工程在系统层面、应用层面以及业务层面的演练场景用例。通过演练指标与演练业务场景的编排管理,使混沌工程平台积累了丰富的演练案例,为将来新业务混沌工程的实施提高了效率,节省了成本。

四是完善了互联网金融业务关键系统稳定的评估体系。在演练实践过程中,需要评估对应演练指标产生的影响,因此对关键业务系统的稳定性进行了评估,通过混沌工程演练发现了可能对业务系统产生故障影响的指标。

五是提升了企业系统稳定评估的全面性。丰富的混沌工程实验场景,支持IaaS、PaaS、SaaS层的故障模拟能力,为多维度评估应用系统的稳定性提供便利。

同时依托混沌工程在互联网金融业务系统的实践,公司的研发效率、系统稳定性和金融科技水平都得到了显著提升。研发效率提升:通过演练平台与仿真环境,实现快速故障注入,时间由20分钟缩短到1分钟。

系统稳定性提升:打造企业级混沌工程故障演练平台,发现问题时间缩短,缺陷复发率有效降低,为提升生产环境的稳定性奠定基石,降低生产故障率20%~30%/年。

金融科技水平提升:通过混沌工程与仿真搭建,补充了公司混沌工程实施体系,积累了混沌工程演练场景与故障解决方案。

在未来,中泰证券将遵循混沌工程自动化实验、“最小化爆炸半径”等原则持续研究、打造稳定性模型,不断提升可靠性测试场景的自识别能力与测试效能,将混沌工程测试与DevOps流水线结合,在开发、测试、仿真、生产多个环境进行混沌工程测试,将混沌工程测试常态化,为以分布式微服务架构为核心的金融系统稳定性提升保驾护航,不断提升云原生架构系统稳定性。

(栏目编辑:张丽霞)

评论