设为首页 | 收藏本站 | 关于我们 | 广告服务
 
 
当前位置:首页 > 科技资讯 > 专家视点
专家视点
浙商银行科技管理部总经理董佳艺:基于DevOps的数智质效体系建设探索
来源:中国金融电脑  作者:  日期:2024/7/10

浙商银行数字化改革推进办公室主任、科技管理部总经理 董佳艺

  近年来,伴随数字化转型的持续深入,金融科技对银行业务的支撑作用愈发凸显。2022年发布的《关于银行业保险业数字化转型的指导意见》指出,建立能够快速响应需求的敏捷研发运维体系,积极引入研发运维一体化工具,建设企业级一站式研发协同平台。建立适应“敏态”与“稳态”的全周期线上交付管理流程,完善数字化交付管理体系。在此背景下,浙商银行以全行数字化改革为契机,持续打造金融科技发展新生态,推行一体化敏捷研发机制,建设基于DevOps的软件质效体系,不断提升内部管理数字化水平,助力打造“数智浙银”金名片。

一、数智质效体系之软文化建设

  高效的质量管控体系离不开规范化的制度流程。为此,浙商银行将打造清晰、高效的流程规范作为软文化建设的核心内容,着力构建规范文档、规范流程、指标要求三大支柱体系,确保数智质效体系建设有规可依、有据可循。

  1.打造“1+N”质量规范体系

  结合自身实际需求,浙商银行创新构建了“1+N”质量规范体系。其中,“1”指一个数智质控标准制度,即《项目质量控制实施办法》,其在清晰描述数智质控相关标准、明确各岗位职责分工的基础上,将质控过程分成了策划、执行和总结三个阶段。在实施过程中,质量控制岗可直接依据《项目质量控制实施办法》执行检查操作,将不满足制度要求的项目记录为不符合项,并要求责任人限期整改,同时在整改完成后再次进行复查,完成对不符合项的闭环管理。“N”是指通过对质量控制工作进行分解,将其落实到各个不同阶段,进而分手段、分步骤制定多个对应规范。截至目前,浙商银行已先后制定了测试技术规范、代码扫描规范、代码审查规范、版本部署规范、制品管理规范等,为项目质量把控提供了全方位依据。

  2.制定DevOps标准化敏捷迭代流程

  基于DevOps理念,浙商银行从代码与制品管理、测试管理、部署发布管理等多个方面着手,研究制定了一整套敏捷迭代流程。

  (1)代码与制品管理

  在分支管理方面,通过建立统一的开发分支管理规范,浙商银行实现了开发测试分支的相互独立,为推动持续交付打下了良好基础(如图1所示)。其中,应急补丁分支、主干分支为新增项,不仅有助于保证多版本开发时主分支的稳定性,同时还可在紧急补丁上线时对当前版本进行补丁回归测试。在制品管理方面,浙商银行制定了严格的制品晋级策略,以加强对投产包的管理,并利用流水线对制品晋级过程进行卡点管控。例如,每次开发环境与测试环境被触发后都会进行功能缺陷、单元测试、代码扫描、自动化测试等方面的检查工作,而制品从测试晋级到验证环节前,也必须满足质量规范的所有要求,并在确定验证无误后进行代码检查,之后再通过质量检查、合规检查方可晋级到投产库中。制品库分级管理策略如图2所示。

图1 统一开发分支模型示意

图2制品库分级管理策略

  (2)测试管理

  在测试管理方面,传统测试的执行过程主要涉及文档评审、测试数据准备、用例设计、缺陷报告编写等方面。具体而言,在项目实施前,项目经理需召集项目组成员、产品经理、测试经理等一起召开需求分析以及澄清会议,确保需求的正确实施。测试人员在正式测试前还应根据需求开展测试用例准备、往期数据整理、测试造数等工作,并在测试过程中规范编写缺陷报告,保证功能测试的准确性。

  除传统的功能测试外,浙商银行还将单元测试、代码扫描、自动化测试等融入部署流水线中进行卡点管理。例如,对于功能测试中发现的问题,开发人员在代码提交到验证环境前必须修复;在单元测试方面,要对全量代码编写覆盖率、增量代码编写覆盖率等进行严格管理,并确保增量单测的通过率达到100%;在代码扫描层面,对工具判定为“严重”“阻断”级别的风险,都要在代码进入验证环境前进行解决;在自动化测试方面,则是要逐步提升案例覆盖面,按照案例数与接口数5:1的比例进行扩充。

  (3)部署发布管理

  在部署和发布层面,浙商银行专门编制部署手册,全方位梳理了投产主要项目、配置文件变更、数据库结构变更、SQL脚本执行方式以及异常情况处理等内容,并同步制定了明确的变更回滚策略,即如果遇到需变更回滚的情况,提前设计完善的配置变更及SQL回退方案,并在测试过程中保证正反SQL脚本执行准确、配置回滚无误。

  3.构建质量分模型

  度量反馈是DevOps体系中的重要环节。为此,浙商银行专门设计质量分模型以发现开发、测试等阶段存在的潜在问题,进而及时开展改进工作。具体而言,质量分模型主要包括开发质量、测试质量、合规质量、风险项等四个模块。

  (1)开发质量

  开发质量模块主要关注开发人员代码书写、单元测试执行等内容,以及开发过程中的代码审查情况,如代码扫描问题数量、单元测试覆盖情况、代码审查覆盖情况等。

  (2)测试质量

  测试质量模块可针对缺陷、案例、自动化测试等进行多维度统计。其中,缺陷主要从错误改正情况、致命问题命中率、同一问题出现频率等方向进行统计;案例执行率、特征标签占比等主要为展示测试案例的编写与使用情况;自动化测试则是从接口案例覆盖率、接口案例执行率以及UI测试案例执行率等方面入手,反馈自动化测试的实际开展情况。

  (3)合规质量

  合规质量模块重点检查项目过程合规以及文档合规情况。其中,项目过程合规涉及从需求提出到结束的全过程,内容包括需求条目未进行拆分细化、代码审查记录未提交、项目状态与实际项目实施情况不符、验收用例未提交等。与之相比,文档合规主要围绕需求说明书、总体设计说明书等进行检查,旨在检查文档是否按照规定进行设计、编写。

  (4)风险项

  风险项模块用于围绕项目过程进行查漏补缺,范围覆盖需求拆分、版本就绪、环境部署、部署脚本执行情况、环境资源申请情况等,并可在质量分模型中对异常情况进行扣分操作,及时提示过程风险。

二、数智质效体系之硬能力建设

  为实现对项目研发过程的强效管控,浙商银行打造基于DevOps的研发效能平台(如图3所示),配合各类流程规范植入卡点,形成了可视化管理视图,并集合版本管理、代码管理、持续集成流水线、制品管理、测试管理、度量反馈、基础服务等功能于一体,为数智质效体系落地提供了坚实底座。此外,通过采用“VUE+ElementUI”统一框架,该平台支持各个前端模块相互独立及公共组件的抽象复用,同时在服务端采用SpringBoot微服务化架构,支持各子功能模块独立解耦,接口层和逻辑层相互分离。从功能角度,研发效能平台重点实现了以下突破:

图3 基于DevOps的研发效能平台

  1.引入工作项与特性分支相结合

  为保证需求工作足够细化,浙商银行在需求条目的基础上引入了工作项的概念,即由项目经理对待开发的需求进行深度切割,将其拆分为工作项后再分配给具体的开发人员,且需求与工作项之间是多对一的关系。基于此,浙商银行在研发效能平台上引入了“特性分支”的概念,并将其命名规范定义为“feature-版本号-需求编号”。根据需求编号,平台可将需求与特性分支进行强关联,需求下的所有工作项只能提交到对应的需求特性分支上,即构成了“代码—分支—需求—工作项—开发人员”的全自动追踪方式,从而可使产出变得更加透明、可追溯。在制品晋级阶段,根据工作项编号与代码提交记录的关联,平台可在构建流水线时与制品包进行深度绑定,从而实现制品包精准追溯;此外,面对紧急情况,如变更需求时,还能快速定位到代码、工作项以及开发人员,强化变更风险的评估与把控能力。

  2.打造多功能串联流水线

  传统的部署流水线通常仅涉及代码部分,而缺乏质量管控、门禁卡点、与工具联动等功能。为提高质量把控能力,浙商银行在传统部署流水线的基础上,串联单元测试、代码扫描、自动化测试、精准测试等测试工具,并设置了卡点审批、代码扫描门禁、自动化测试门禁、单测门禁等功能。在此模式下,若质量未满足前期设置的标准,自动化测试失败,将会直接终止代码的部署操作,并停止制品晋级。通过该流水线模式,浙商银行不仅关联了各类工具平台,让质量管控有了着力点,实现了质量管控自动化执行,更有效保障了代码的提交质量。

  除横向扩展外,流水线的数量和种类也在进一步细化。根据不同环境,浙商银行分别建立了不同的流水线模式,如测试环境强调对各种测试场景的质量管控,验证环境强调制品包的检查、工作项完成情况的检查,生产环境则要求生成制品包前需再次进行全面的质量检查等。此外,浙商银行还根据功能进行流水线分类,包括提交即构建的检查流水线、定时构建的自动化操作流水线、合并构建的检查流水线、自动化配置变更流水线、制品晋级流水线、精准测试流水线等,由此将整个开发测试工具平台串联起来,由手工变成自动、从分散转向聚合,全面打造数智质效体系。

  3.实现提交即触发代码检查

  为了从源头把控代码质量,浙商银行在用户提交代码的节点设置“钩子”,分别对工作项和代码内容进行检查。其中,工作项检查是保障其与特性分支结合不出错的主要手段,可防止项目组成员不按照规范拆分工作项、随意提交代码至任意分支或提交记录书写不规范等。在代码检查方面,主要强调用户在提交代码时需按照最小化工作原则,多次分批提交,且在提交内容前需加上工作项的编号信息,并推送至对应需求的特性分支上。提交记录登记至代码管理平台后,平台将自动触发代码检查流水线,并进行代码扫描、单元测试等操作。此外,流水线的触发结果还会通过邮件、办公软件的方式通知到对应的开发人员,帮助其及时发现代码问题。

  4.支持自动化测试角色扮演

  自动化测试的根本目的是节省人力,提高测试质量和效率。研发效能平台将自动化测试与流水线结合起来,可在测试环境部署前先进行自动化测试,从而提前暴露问题,有效减少测试人员的重复工作。如果流水线中的自动化测试未达到门禁要求,则停止部署操作,由开发人员对代码进行优化后部署。截至目前,平台主要提供了接口自动化测试、UI自动化测试两个模块,分别对应后端接口和前端页面测试。在执行阶段,首先是通过执行机的模拟客户端发出请求或者使用页面按钮触发事件,并在获得应答信息后进行解析,之后再与预期的结果进行比对,最终验证当前场景的自动化案例是否顺利通过。

  5.开展精准测试量化探索

  传统的精准测试通常是针对全量代码进行分析,对测试全过程进行监控。但是,在实际开发过程中,测试人员和开发人员往往更看重增量代码的覆盖情况,且对增量代码测试覆盖率的要求会高于全量代码。例如,全量代码的测试应该保证覆盖大部分代码,而增量代码则应力争做到全部覆盖。对此,浙商银行选择在原生工具的基础上进行插桩改造,通过与基线分支对比获取差异代码,之后再利用Jacoco工具生成的扫描结果文件来获取测试覆盖内容。此外,浙商银行将精准测试集成到定时触发流水线中,根据测试开展情况设置触发机制,成功获取了精准测试覆盖率的变化趋势,从而量化了测试工作进展。

三、数智质效体系实践成效

  通过串联多个质量管控工具,浙商银行实现了质控实施过程的自动化、精准化、透明化,不仅为开展质量控制提供了数字化监测手段,也为推动研发效能提升提供了有效抓手。具体而言,数智质效体系的价值主要体现在以下三个方面:

  1.多分支代码管理缩短需求交付时长

  根据特性分支的设计理念,需求与特性分支一一对应,项目经理对每个需求都要建立一个特性分支,而开发人员只能提交与需求下工作项有关的代码内容。在此模式下,开发模式由传统的单一分支演变为多分支代码交替开发,不仅解决了后期代码难以追溯的问题,也能根据工作项的开展情况来评估开发人员的工作效率,便于管理人员及时对任务进行调整或重新分配资源。同时,多分支开发模式还能有效提升多版本并行开发能力,通过分支自动回合、代码提交检查、分支自动清理、一键自动打Tag、定时构建、精准测试等手段,大幅提高开发测试以及部署效率,缩短版本交付周期。

  2.制品库晋级策略降低手工操作风险

  传统开发模式中,开发人员在提交代码制品包时,除了基本的代码包,项目管理人员还需要对配置文件、部署文档、回滚方案等进行手工补充,而上述操作极有可能导致代码包上传错误,从而影响正式发布流程。为规避这一风险,浙商银行采用制品库晋级策略,通过流水线的层层检查与质量门禁管控,确保制品的全生命周期都在研发效能平台上进行,避免因手工打包、传包而引发操作风险。此外,通过将工作项与提交记录绑定,浙商银行实现了制品对需求和代码的回溯;通过流水线执行,实现制品库对测试过程(单元测试、代码扫描、自动化测试等)和部署过程的回溯;通过与缺陷平台结合,可回溯制品功能测试的开展情况。

  3.质量门禁实现质量人控变机控

  一般情况下,开发人员以及项目管理人员一旦急于完成需求开展,即可能忽略代码质量。而质量门禁的介入,可将原本由人为控制的指标项通过流水线门禁进行平台化管控,并针对单测代码扫描、自动化测试等设置门禁,不仅可以督促开发人员认真履职,还可以有效减轻测试人员的工作负担,提升代码质量。此外,面对不同情况,浙商银行还在研发效能平台中提供了门禁配置选项,可以针对平台级、系统级分别设置不同门禁,为改进代码质量提供了有力抓手。


  基于数智质效体系建设,浙商银行的研发效能获得了极大提升。未来,伴随DevOps体系的不断完善,浙商银行还将引入更强调业务价值的BizDevOps理念,着力推动端到端的数字化流程重构,更好支撑数智化业务创新,以及将安全性纳入各个开发环节,打造能快速发现和解决风险隐患的DevSecOps标准,并积极运用大语言模型以及AI工具,定制化解决研发运营、生产制造等领域的特定难题,坚持以高质量研发能力助推数智化银行建设。

作者:浙商银行数字化改革推进办公室主任、科技管理部总经理董佳艺

   浙商银行科技管理部 韩骁 程克

 
 
企业简介 | 版权声明 | 免责声明 | 频道介绍 | 安全提示 | 法律顾问 | 网上投稿 | 客服电话 | RSS订阅
Copyright © 2005 Fcc.Com.Cn, All Rights Reserved. ,《中国金融电脑》杂志社版权所有
电话:010-51915111-805 传真:010-51915236,网络出版服务许可证(署)网出证(京)字第337号
京ICP备14024077号-1 京公安网备:11010802025321 技术支持:站多多