传统金融的运维如何应对互金时代的业务冲击?
|
张建林
招商银行 数据中心应用管理负责人 20年运营开发、海量运维和应用规划管理经验,任招商银行数据中心应用管理负责人,主要负责招行应用架构规划、发布、监控、运维等应用全生命周期管理工作,精通应用架构设计和自动化运维建设,目前专注于应用全生命周期的自动化运维实践。 前言本文根据招商银行数据中心应用管理负责人张建林,在GOPS2017·深圳站演讲整理而成,文章共分为五个小议题:
可能大家都知道, 传统金融遇到了一个瓶颈,而互联网金融给我们带来很大冲击。传统金融应用运维的发展趋势是,系统规模越来越复杂,组件越来越多,用户的流量不断上升,事件变更各指标较以往而言不是量级增长,而几乎都是呈非线性增长。
传统运维模式带来的成本消耗比较大,已经不能很好地应对非线性增长的系统规模和流量。解决的方法是要做好传统金融业务的主机下移,与做好应用全流程运维的标准化管控。那么我们需要如何应对这方面的需求呢?接下来,我们针对传统金融的痛点做分析。
通过对传统金融的痛点做分析,可以发现“非功能”是根本原因。因为要针对目前系统运维成本和流量接入,我们一定要做到应用运维全自动化才能应对目前的现状。 当前运维环境下,非功能引起的事件比较多,我们拿招行2016年的生产事件做分析,可以发现与非功能相关的事件占比将近三成。无论是从应对自动化的需求、接入的需求、传统的可用性要求、还是变革的期望,我们对于非功能的需求越来越强烈。 2、思想碰撞面对我们当前的痛点,我们怎么做思想碰撞呢?首先,传统金融IT的模式中,开发与运维是割裂的,开发对运维基本上是“甩包袱”的形式。
其实,流程和自动化并不矛盾,但是我们如何做到开发和运维优雅的结合呢?招行采取的方式是围绕运维自动化去做。通过非功能的落地、运维系统的规范标准化,并通过规范制定自动化的工具,再结合现在的流程,形成迭代的完善,最终达成运维自动化的目的。
这可能是现在比较流行的 DevOps 的思想。DevOps 和 SRE 的理念会有些许冲突,但整体思路是一致的,都是加强开发和运维之间的配合。DevOps 可能更侧重开发层面将自动化的理念推送给运维,而SRE 的理念则侧重于运维人员角度,它的理念是运维的自我研发,我们运维怎么去开发出适合我们工具,通过工具来进行日常运维的工作。 目前,招行已经将以上两个理念都承接到现在的运维工作中,招行对运维的管理已经做了一套流程,固定了由 DevOps 理念形成的、适用于招行的一套持续交付的流水线平台。 接下来是优化现有开发模式和现有产品架构,消除流水线流动障碍。构建轻开发测试的发布流程,做到发布全生命周期的自动化。 3、困局之下如何求变在当前流行的 SRE和 DevOps 上,我们如何融合他们之间的差异点,选择适合我们招行的解决方案,是一个关键。这两个理念不冲突的是持续迭代的交付,也是我们一定要做到的关键点:承接开发给我们的产品发布和如何运维好这些交付的产品。 3.1 以非功能管理为抓手的应用运维持续改进
我们如何能快速做到这一点呢?首要任务是做到产品发布的自动化。而支撑自动化的基础,则是一定要有一个非功能管理的运维工具,并对其持续改进。 所以我们的做法是,先要对产品规范的制定,再有架构能力的提升,接上流程管控,运维工具的自动接管,还有运营数据的分析和挖掘,并形成持续改进的循环。这就是我们以非功能管理为抓手,推动应用运维的持续改进和自动化的改进的方式。 3.2 非功能矩阵
讲到具体的落地,首先讲讲非功能管理规范中的非功能的矩阵。 首先我们运维需要面对的是一个多且杂的庞大的系统体系。面对这种情况,我们对招行的系统进行了归类,针对不同的部署平台和应用场景进行分解和剖析。梳理出针对不同部署平台、应用场景适用的非功能矩阵。归类情况如下: 1. 应用场景:针对招行现有的架构,结合招行对非功能要求,对应用场景,我们做了如下的分类:
2. 部署平台:招行的产品部署平台包括390、AS400、以及开放平台,而开放平台是未来发展的主流。 3. 非功能指标:同样,我们对招行系统进行分类的同时,为了方便对非功能指标的维护、管理及更新,我们也对非功能指标以及其验收方式也进行了梳理和规范。
4. 验收方式:以前对一些非功能需求的提出,比较少,并且落地验收更少之又少,为了非功能指标的落地,我们对非功能指标的验收方式进行的分类,按照不同的指标采用不同的验收方式进行落地的验收:
有了产品的非功能规范后,对于招行的产品所采用的不同的技术、不同的框架和不同的部署平台,我们应当如何实现非功能的统一管理?我们做成了非功能技术组件库,直观看起来似乎比较复杂。
在架构的实现上,我们大体上参考了架构优化的精髓,这里提出来的,主要是架构设计的理念。 首先考虑市场响应,将构建小、发布快、实效小做为考量依据; 其次是成本,站在成本方面考虑,一般情况下,我们都会使用较为成熟的技术,对于非核心的产品,对于不是我们最擅长的,也提供不了差异化的竞争优势的产品,则直接购买;对于我们所使用的商品化的硬件,我们的原则是在大多数情况下,便宜的就是最好的; 三是产品的非功能性,产品的非功能性我们主要关注产品的可用性、可扩展性、可维护性等质量指标。 综合这三方面的考虑出发,我们就很容易得到了我们对应用框架设计优化的基本参考原则:
接下来,说到性能容量扩展。我们怎么做应用性能容量扩展?这里我们以 AKF 扩展立体方理论为基础参考,划分 XYZ 轴。我们传统的是通过Y轴的扩展复制,但这并不能满足我们对性能容量的扩展需求。所以,我们根据客户的数量、应用的组件库还有客户层面不同,我们针对性做了三种不同的扩容方式。 从应用层面上来看,无论针对应用做怎样的扩展,基本上都是按照这个理念做。
数据分割与应用分割差不多,但也有差异。
怎么做好管控? 运维在项目立项阶段就开始介入非功能管控的设计。通过和项目室对接,和开发需求对接,在项目立项开始阶段,我们已经介入一些非功能的设计和诉求的提出,以保证开发及项目室和运维是同步的,达成无缝隙对接。 我们做的所有非功能,最终目标都是运维自动化。所以我们除了原流程上的功能开发和 ST/UAT 测试验收外,我们还增加了对产品非功能的开发,非功能的测试和验收,以及运维自动化模块的集成。 我们提出这些非功能的诉求,无外乎是为了开发能按照我们的公共接口、公共组件进行开发,并根据我们的性能容量的框架要求,以及自动化平台的要求做好产品开发,做到开发工作和我们运维工作的无缝对接。 所以在基本诉求提出之后,运维就要和开发一起进行评估、立项,乃至最后开发。开发完之后,我们将对开发的非功能进行测试和验收,并与自动化平台进行对接。只有在测试结果满足运维对非功能的要求时,才允许它投产上线。这不仅为了让产品在上线后持续稳定地运行提供更好的保障。更为了后续实现运维自动化打好基础。 产品投产上线后,我们还将对产品进行持续的跟进以及评估,对应用质量做事件回顾,以此来发现我们设计的非功能和开发开出来的非功能对自动化运维和生产事件存在的缺陷及问题,我们后续需要针对这些缺陷和问题,对产品进行重新优化和设计。这是我们对产品从开发到上线的非功能过程的管控方法。 3.7 自动化工具平台非功能管控我们做运维工具自动对接,自动化平台怎么具体落地? 自动化工具平台,基本上接管了整个数据中心,从开发到测试之后到我们运维阶段的全流程管理,面向业务支撑全生命周期自动化接管了。 自动化接管包含什么呢?包括上线扩容、发布、日常运维、服务请求、下线、故障处理,都需要做到统一的平台里去。我们的目的是为了保持传统运维模式的安全的同时,达成具备自我设计、自我修复能力的数据中心。我们的框架和实现理念已经落地,这就为做实现全自动化运维的数据中心打好了基础。
自动化平台的设计理念:
这是我们自动化运维平台的设计理念。 3.8 应用全流量监控
自动化运维设计之后,还有应用全流程监控。自动化发布之后我们怎么做运维呢?图中就是现在的自动化的监控,我们通过它对目前产品的非功能还有运维、应用质量做实时监控。我们会做到节点上线即刻监控,我们将通过NPM节点连接质量监控对Web端到中间件、再到应用服务器、到最后的数据库等等(包括中间的各个节点)进行全解码的监控,基本上所有业务流、业务性能容量和真正的交付都做了第一线监控和实时展示。 3.9 性能容量预测
最后是性能容量的预测,也就是运维数据的分析和挖掘。我们会把性能数据和价格数据统一收集到一个数据解析中,并且将相关的依赖关系、配置信息、每个服务器需求的数据资源预测数据等集中到大数据平台之后,通过求解器,结合容量算法、资源供给、资源价格及分配计划,形成一个算法。 这个算法是通过性能的实时参数、业务增长趋势的函数、性能容量预测等方面进行实现。我们通过该算法,能得到诸如连接、响应时间、趋势分析、CPU 内存、硬盘使用率等方面的趋势分析。现在,我们能做到所有应用节点的性能容量实时的展示,并且能做到实时的数据分析。 这样的好处是,我们不需要通过压测以及烦琐的数据收集、大数据分析,基本上通过全自动化就能自动出现性能的趋势图和后续分配计划匹配。 4、成果初现我们逐步深化非功能的管理,我们管理的流程给大家分享一下。 我们的非功能管理平台已经搭建起来,这是由运维先提出的非功能规范。这是针对开发的所提出来的,因为传统的开发都比较关注功能的实现。而我们的要求是,开发一定要将功能和非功能同等看待。
首先我们会通过应用非功能管理平台对产品提出非功能的规范和需求。接下来,我们的开发将对其进行开发,通过非功能测试及验收,完成最终的版本确认。最后,把已具备非功能要求的产品与自动化的工具平台对接,落地自动化工具之后,最后自动化平台将自动对产品进行上线投产,再完成上线验收。 开发是否完全按照我们的诉求做研发呢?最后是否真正落地运维的自动化呢?这就要依赖于投产之后的验收,以及后续不断的迭代循环。
基于 Profile 的应用标准化管理。在这里我们可以通过应用系统视角,描述应用系统里面的产品编号、名称、人员、管理员、组件还有程序等之间的关联关系,详细记载应用各项非功能属性信息。在把应用非功能属性标准化之后,开发发布过来的应用,数据都是完整的,我们做后续的管理和台帐或变更,都能很容易达成自动化管控。
有了标准化数据之后,图片上的功能都可以做到自动化实现,并且做到自动化的应用画像,可以清晰地知道应用流到底怎么走。 我们还会对一级环境和二级环境环境进行自动化的验证,也就是大家常说的试运行和灰度环境,我们从灰度环境到生产环境,会不断做两个版本之间的验证,并且我们的验收是通过自动化的方式进行验收的。
所有产品在投产之后,还要做节点的监控,确认刚才所说落地的东西已经真的已经达到了我们的要求,这就要求我们在变更之后的对产品进行全自动化监控。我们会有一个算法,即对比运算模块(核心是基线、阀值),这是一个自我学习的验证模块,也是验证的核心。 我们核心模块怎么完善?我们会对原节点的数据和外部节点的数据、原始节点数据反复对比,最后到运算模块之后,从对比里面可以发现一些流量中不存在或者节点属性关系缺失的,我们可以对缺失信息去协调数据的进项,完善应用模块,并且在已知节点的对比,发现节点访问关系变更,包括新增、消失、访问关系变更,我们都会做自动更新,我们通过这个实时监测运维所监管的所有应用的健康状况,还有非功能的运维状况,还有所有自动化发布或者自动化运维工具的现状。 5、自动化运维之路刚才讲到所有的非功能实现的理念,无论是框架、架构、性能容量还有监控还有发布、自动化,我们最终都是为了自动化运维。
自动化运维即是最终的目标。以前的传统模式下,需要做应用需求、资源准备、环境构建、公共组建、日志追溯、应用开发、代码部署、监控告警等工作。我们在做非功能时,把这些全部集中在一个模块,即都在非功能公共组件里面实现,应用需求提出之后,我们就把它集成到这个平台里。 将公共组件和自动化平台对接后,就实现所有资源准备、环境准备等等方面的全自动化,所以现在基于招行所推崇的 SRE 的开发模式,就是我们运维和开发一起完善功能和非功能的需求整理。 需求完善之后,就根据我们公共模块的要求规范做开发。开发之后,后续所有传统的模式下的工作,我们都可以一键式交给自动化发布平台,自动化运维就实现了。自动化运维代替了以前分布式的所有工作,包括资源准备、环境构建、组件的升级、日常的监控、日志的管理等。这是招行的自动化理念。 6、总结我们有了自动化理念,并实现了所有自动化理念后。我们的工作重点,就从传统的金融IT模式转变为以非功能模块作为核心、作为抓手的自动化运维模式。 从功能需求开始,与开发共同参与产品非功能设计,并且在非功能公共模块里支持和推动开发立项,并不断完善自动化工具的集成,完成运维对自动化所有的诉求。 我们将所有自动化运维的诉求都提出来,统一监管 API,并且将接口提供给开发。开发完毕之后,我们对产品非功能进行验收和投产后评估等工作就可以和自动化平台进行无缝对接。当把所有整套流程运作完成之后,我们就真正能实现运维工具的自动化集成,做到真正的运维的自动化。 这是我们今天讲的主要议题,即传统金融IT怎么应对现代日益增长的运维瓶颈,怎么解决诉求和应用的扩展。通过非功能的推动,达到自动化真正的落地,做到传统金融非功能工作的重心转变。 文章来自微信公众号:高效运维 |






















有话要说