AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

揭秘:如何让金融交易系统具备故障“免疫”能力

  • 2019-08-27
  • 本文字数:3950 字

    阅读完需:约 13 分钟

揭秘:如何让金融交易系统具备故障“免疫”能力

在年初举行的蚂蚁金服 ATEC 城市峰会上,蚂蚁金服高级技术专家王亚宏做了主题为《技术风险防控平台:打造金融交易系统的故障免疫能力》的精彩分享。



蚂蚁金服高级技术专家 王亚宏


演讲中,王亚宏介绍了蚂蚁金服的技术风险保障体系,同时分享了蚂蚁金服如何将自己在过去多年积累的的实践经验通过 TRaasS 平台分享给整个金融生态圈的合作伙伴,助力金融机构建立稳定可靠的金融业务。

一、金融级分布式架构面临的挑战和机遇

软件产品向分布式架构和微服务转型已经成为行业的共识。在架构的转型过程中,作为守门员的企业运维保障部门面临着巨大的挑战。这些挑战包括但不限于:1:产品需求变更频繁、软件开发速度也越来越快,但运维保障部门由于缺乏完善的保障措施只能通过控制发布次数来降低风险,使得业务更新速度下降。2: 从大型机器转移到 PC 服务器使得系统单机故障率更高,现有的容灾与 FO 机制能否支撑系统准确地运行仍存在疑问。3:从单体架构迁移到微服务架构要求系统进行全面的回归测试,这带来了巨大的测试工作量。4:,分布式系统中的一条调用链路可能横跨多个系统,问题排查变得非常困难。5:,对金融行业而言,解决分布式系统中的数据一致性问题也非常关键。


从另外一个角度看,企业运维保障部门也应看到分布式架构带来的机遇。在过去,单体系统发布新版本通常要求产品通过层层测试来保证新版本上线后不出问题。但分布式系统允许使用真实用户和流量实现线上验证以确保产品上线后出现问题带来的影响最小。分布式架构使灰度验证和快速发布成为可能。此外,从前只能在线下进行的模拟演练,现在可以随时在生产环境中进行。全链路压测还让获取真实流量成为可能,让我们能在每次大促时做到高枕无忧。



在过去十年中,蚂蚁金服的运维保障体系也经历了深刻的变革。通过抓住架构升级带来的机遇,通过技术和平台提升解决系统问题,运维保障部门做到了在架构升级的过程中平滑过渡,系统保持非常高的可用性的同时充分享受架构升级带来的收益。

二、蚂蚁金服技术风险保障体系

下图是蚂蚁金服的技术风险保障体系的总体设计图。



在目标层,蚂蚁金服的运维保障部门力求做到 99.99%的系统高可用、系统全年无重大资金安全故障,同时实现系统运维零成本。这些也是蚂蚁金服给客户的 SLA 承诺。


治理层:与蚂蚁金服的团队、文化和制度相关。为了应对技术风险领域的挑战,蚂蚁金服组建了技术风险保障部门,聚焦于使用技术升级运维和质量保障手段以解决系统面临的技术风险难题。同时,蚂蚁金服建立了一系列制度保证系统内的任何变更都符合可监控、可灰度、可回滚的“三板斧”要求。


在运营层:设置了四道防线。前两条防线即需求和研发包含了风险评审、自动化测试等常规内容。第三道防线通过灰度发布和蓝绿发布实现产品变更的验证和管理。第四道防线即系统监控,保证了系统在线上运行过程中具有最小的运行风险。


最后一层是平台层:技术风险保障体系的目标、治理和运营层需要依赖平台层来实现,平台层包括业务监控、演练中心、预案中心和变更管控等各种技术平台。

三、TRaaS 技术风险防控平台

蚂蚁金服将其构建技术风险保障体系的实践和经验沉淀下来,形成了 TRaaS 技术风险防控平台,开放给金融生态圈的所有合作伙伴。下图右侧的能力闭环展示了技术风险防控平台的核心方法论,分为三个部分。风险基线衡量了系统的风险保障能力,使风险保障人员了解系统的风险防控水平。监控/巡检、预案自愈以及演练属于第二个部分,确保系统在发生问题是能快速发现,定位和自动修复。此外,变更是系统风险的最大来源,蚂蚁金服对系统变更进行了严格的管控,确保所有变更都符合三板斧制度。



下面我们分别看一下这三个关键环节中,平台具体所做的事情。

风险基线

风险基线这部分核心要解决的问题是如何评估我们当前的风险保障能力,以及发现哪些地方存在风险隐患。 所有做风险管理的同学都会面对一个问题:“风险分母到底有多大?”,这是一个理论上就无解的问题。


那怎么办呢,蚂蚁金服的实践经验是接受风险本身的未知性,但在平台中将已知的风险场景沉淀下来,确保未来不再犯类似的错误。通过对这些沉淀下来的风险场景的风险保障能力的自动检查,来对我们的风险保障能力做个打分,并且发现存在问题的地方。



具体到平台中的做法是:第一步,先获取到所有和风险相关的实体的元信息,包括应用,服务,网络,容器,物理机 等各个层次的风险实体,并将他们通过业务链路或部署拓扑关联起来。


第二步:将风险知识沉淀为风险模型,一个风险模型的内容可以用一句话来概括当 XXX 类型的风险实体具备 XXX 属性时,必须有 XXX,XXX。。。。 的风险保障措施。这里的保障措施包括 监控,巡检,核对,预案,演练等一系列能力。


有了第一步,第二步获取到的信息,我们可以获取到一个相乘的笛卡尔集。在这个集合中可以清晰的看到,基于我们已有的风险知识沉淀,我们当前的技术风险保障水位如何,哪些地方是存在隐患的。针对每个风险点,风险揭示关注系统是否有完整的风险保障措施,以及对保障措施不完整的风险点应当如何处理等问题。风险揭示为一 线风险防控人员包括业务负责人和架构师等都提供了监控视角,以评估系统的风险防控能力,应对当前系统的风险防控问题。


总的来说,将风险防控经验沉淀为风险模型,辅以完善的系统元信息和保障机制,风险揭示平台提高了系统发现风险的能力。

风险处理

风险处理平台对接各种监控系统获取监控报警信息,再将收集到的监控信息聚合为风险事件。



对于业务报警信息或单机报警信息,在聚合为风险事件后,处理平台提供标准的分析引擎(同时支持自定义引擎)帮助提供异常链路,相关变更,主成分等各种辅助定位信息。在有了对应的信息后,给用户推送自动的应急自愈预案,或手工的业务应急预案。 最后,在问题解决后对整个故障进行复盘,将一些新产生的风险知识沉淀到风险基线中去,最终实现闭环。

变更管控

蚂蚁金服的内部统计数据显示,80%的系统生产故障都来自于代码变更,因此变更管控对技术风险防控而言至关重要。大规模系统内往往包含着几十乃至上百个变更来源,一旦线上发生问题,很难第一时间找到对应的变更,变更本身的质量也很难有效控制住。



变更管控平台利用变更接入 API 整合所有系统变更,使变更可见。同时,变更管控平台还提供了变更编排,变更灰度检查,变更预检,变更结果监控等能力。确保所有生产变更都符合可灰度,可监控,可回滚的三板斧原则。 同时,通过提供变更关联,以及变更回滚来加快线上问题处理速度。

其他 SaaS 服务

上面所讲的整体体系,大家可能会感觉特别重,整个体系实施起来的组织成本,技术成本都还是比较高的。 这点上确实如此,要想系统性的对技术风险进行托底保障,确实需要一套相对比较重的体系和机制来。



对于一些小型企业,或者说想解决一些特定领域的问题的客户,技术风险防控平台还提供了一些轻量级的 SaaS 服务,包括全链路压测、资金安全监控、流量仿真测试、高可用巡检以及智能监控等。这些服务都可以在蚂蚁金融科技的公有云或专有云平台上轻松获取,快速提升某一方面的能力。

四、蚂蚁金服技术风险防控能力实践

下图是我这边摘抄出来的一些内部运行数据,可以让大家更有体感的去感受蚂蚁金服技术风险保障体系是怎么运作的。



第一张图是 1218 红蓝大攻防的数据,在蚂蚁内部,有一支专门负责搞破坏的技术蓝军,他们每天所做的事情就是不停的对系统进行攻击,注入,制造高可用和资金安全故障。以此来检验我们的发现机制,应急机制是持续有效,不断保鲜的。蚂蚁金服在执行红蓝攻防演练时做到了每 5 分钟产生超过 500 个故障场景,同时保持每周超过 200 次故障场景演练。


第二张图是今年双 11 大促前,我们所做的技术保障工作。为了应对双十一大促的流量高峰,蚂蚁金服进行了长达三个月甚至更长时间的全链路压测、预案验证以及线上巡检炎症。高频率的故障场景演习以及高时长的大促技术备战使得蚂蚁金服具有极强的防御能力。


第三张图摘自技术风险保障周报,这里能看到的是蚂蚁金服技术风险防控团队在日常工作中也不在断优化系统的风险防控能力。蚂蚁金服通过将容灾仿真演练、高可用常态演练、资金安全常态演练以及自愈检查等纳入每周,每天都要做的事情,以此保证蚂蚁金服系统能够持续稳定安全地运行。

五、技术风险防控平台如何助力合作伙伴

我们认为传统的风险保障体系具有以下三个特点:


第一,风险保障设计聚焦于风险出现后的问题处理,系统本身风险防控能力处于未知状态,只能被动地等待出现“黑天鹅”事件。

第二,风险保障部门通过严格控制发布周期、尽量不发布和不变更来避免系统出现风险事件。

第三,每次新版本发布都伴随着大量测试资源的投入和层层评审来降低新版本中出现风险的概率。


下一代技术风险防控体系具有以下四个特征:


第一,风险保障通过建设反脆弱的系统来降低意外事件带来的影响,聚焦于系统健壮性的提升。

第二,强调风险保障能力可见,并且能够通过持续演练持续保鲜。

第三,重视灰度变更,强化变更过程的监控能力和回滚能力以降低系统变更风险。同时,通过技术手段和制度规约限制每次变更的影响范围,使变更可控。

第四,依赖于自动化测试、线上压测和线上仿真测试等技术手段来降低系统风险。


蚂蚁金服技术技术风险防控平台希望能在这个技术升级的变革过程中。


将我们积累的保障能力沉淀为平台能力,将平台能力开放给我们的合作伙伴。



将我们积累的风险知识沉淀为沉淀为模型,规则。将风险知识来分享给生态圈中的合作伙伴们。



系统需要通过持续演进得以不断完善,而蚂蚁金服的愿景在于将自身在技术风险防控中的平台积累及实践经验分享给整个金融生态圈的合作伙伴,让生态圈中的伙伴们能通力合作、共享风险保障技术,更重要的是共享风险防御知识,一起打造稳定可靠的在线业务。


本文转载自公众号蚂蚁金服科技(ID:Ant-Techfin)。


原文链接:


https://mp.weixin.qq.com/s/yEDIK9IXofar_2ziCBVFag


2019-08-27 18:032828

评论

发布
暂无评论
发现更多内容

TreeSet源码分析

zarmnosaj

5月月更

OKALEIDO简化玩家进入NFT的门槛,做NFT界的UNISWAP

股市老人

RocketMQ 5.0: 存储计算分离新思路

阿里巴巴中间件

阿里云 开源 云原生 消息队列 Apache RocketMQ

上篇:技术架构的设计方法

阿里巴巴中间件

阿里云 中间件 技术分享 技术思考

下篇:技术 Leader 的思考方式

阿里巴巴中间件

阿里云 中间件 技术分享

从原理到操作,让你在 Apache APISIX 中代理 Dubbo3 服务更便捷

阿里巴巴中间件

阿里云 开源 云原生 dubbo

Docker下RabbitMQ四部曲之四:高可用实战

程序员欣宸

Java Docker Docker-compose RabbitMQ 5月月更

SAP UI5 的自动化测试套件页面的开发步骤介绍

汪子熙

JavaScript SAP SAP UI5 5月月更 SAP前端开发

Feign 共享登录信息进行请求

Java Feign

西昊智能家具2022新品发布,硬实力为健康撑腰

极客天地

在线HTML转Javascript工具

入门小站

工具

[go]mongo工具类

林逸民

Go mongo goalng-underscore

Flutter 利用 StreamProvider 一起玩 WebSocket

岛上码农

flutter ios 前端 安卓开发 5月月更

如何提高技术部的信任值

石云升

项目管理 职场经验 5月月更 跨部门沟通

AdapterPattern-适配器模式

梁歪歪 ♚

设计模式

MSVC编译环境介绍

Loken

音视频 5月月更

一个程序员眼中的元宇宙

总师

程序员 元宇宙

WPF|快速添加新手引导功能(支持MVVM)

沙漠尽头的狼

C# WPF 新手引导

「AuthTalk」今晚 7 点直播|从制造到“智造”,探索制造企业破局之道

Authing

云原生 身份云 制造业 Idaas

跨平台应用开发进阶(十八) :全局异常日志处理方案探究

No Silver Bullet

5月月更 异常日志 处理方案探究

微信朋友圈高性能架构设计

地下地上

架构实战营

[Day47]-[递归]-基本计算器

方勇(gopher)

递归 LeetCode

在线字符或文本转二进制工具

入门小站

工具

2.4 航线图介绍

Geek_古藤模根

图数据库实战 Gremlin

架构实战营模块二作业:微信朋友圈高性能复杂度

融冰

Vue框架学习笔记【day二】

恒山其若陋兮

5月月更

Crypto们纷纷聚焦“Building platonic”,PlatoFarm是解决方案吗?

股市老人

Jenkins Agent 的低成本高弹性实践

玄月九

Kubernetes jenkins 弹性 降本 Kaniko

BuilderPattern-建造者模式

梁歪歪 ♚

设计模式

Angular 项目里使用 scss 文件的一些技巧

汪子熙

typescript 前端 前端开发 angular 5月月更

架构实战营-模块2作业

Elvis FAN

揭秘:如何让金融交易系统具备故障“免疫”能力_文化 & 方法_王亚宏_InfoQ精选文章