查看原文
其他

线上金融 DevOps 排头兵:农行个人网银系统实践

陈伟 DevOps时代 2024-03-22

文\陈伟 陈辉 伊冰静 付云攀

中国农业银行个人网银系统是一个全方位面向个人客户服务、面向互联网金融发展的大金融平台,系统包含账户、私行、转账、信用卡、外汇、贷款、投资、缴费、安全、本地十大类产品和近60余种在线金融服务,为客户提供高效、便捷、易用、智能的金融服务。

个人网银系统采用分层研发模式,将需求分级管理,细分模块和功能,为敏捷开发、快速迭代创造有利条件,具备从需求到产品的快速交付能力,用户规模达到亿级。基于.NET技术栈,在流水线中持续构建及持续部署,具有完备的投产部署流程和运行监控告警机制,确保7*24小时对外服务。

个人网银系统作为我行重要的线上渠道,是直接服务个人客户的互联网金融大渠道、大平台,它是我行线上产品的PC端货架,承接着多个业务部门的需求,一直以来都面临着并行需求多、整体交付时间长、产品质量无法保证等痛点。

DevOps,它的内核是什么?是整合和协作,整合打通的是流程和工具,协作强调的是业务部门、开发部门、运维部门之间的沟通,一年来,在整个研发中心,甚至跨中心组织协调, 将从需求、开发、测试、发布、运维整个流程都打通,基础工具都贯通,往自动化,流程化,可视化推进一大步的时候,项目团队也在思考和探索,如何设计一个适应多个部门需求并行,投产时间又往往不确定的代码管理分支策略,如何将开发过程与测试过程无缝衔接起来,真正做到“所测及所投”,如何更快地实现程序的快速而安全地发布,研发活动与运维活动有序地交接?
他们在追求一种“偏执”,偏执于工具自动化,偏执于规范流程和操作,偏执于质量把控和提升,而借由 DevOps 建设的契机,个人网银研发模式打破业务与开发、开发与测试、开发与运维之间的壁垒,提升自动化测试能力,构造端到端的交付流水线,业务响应能力大大提升,具备更高的产品发布频率,实现交付质量和交付效能的整体提升。
在配置管理、构建与持续集成、测试管理、部署与发布管理、环境管理、数据管理、度量驱动改进七大领域沉淀最佳实践,分享如下。

一、配置管理

将配置文件、构建和部署、数据库变更脚本和环境配置等自动化脚本纳入GIT库管理,建立健全的GIT库管理机制,具有代码库命名规范、commit规范等。基于TFS系统实现了Tag创建、分支拉取等自动化操作,针对版本控制系统建立了相关的权限模型、度量与监控机制、备份与可用性保障机制。

项目采用敏捷研发模式,开发测试迭代周期为两周,在需求拆分时保障细分的每个功能作为最小可投产单元,基于功能层级拉取特性分支完成功能开发,确保特性分支开发的生命周期为3天之内。

采用aoneflow分支模型,特性分支频繁地向主干合并,分支合并到主干的冲突少,建立了健全的冲突解决方案,确保合并耗时在小时级。将程序包、CDN包、配置包、SQL包纳入制品库管理,制品管理工具为Artifactory,所有依赖dll组件在正式库中管理,流水线构建依赖从正式库里获取。

构建依赖于公司自研的制品,最终进入正式库,开源组件通过架构审批、安全扫描等流程,进入正式库。无论是本地、测试环境或生产环境均从正式库中调取制品,GIT库和Artifactory制品库作为单一可信数据源,覆盖生产部署环节,通过Git库脚本完成本地环境的安装和升级。

代码等所有配置项的修改,必须在TFS中建立工作项作为变更源头。配置项变更采用自动化评审结合人工评审,包括预构建、自动化代码合规扫描、自动化安全扫描、自动化单元测试门禁等评审方式,自动化评审结果作为人工代码审查和审批的重要依据,同时实现了TFS系统和变更管理系统的自动化关联,信息双向同步和实时可追溯。

构建与持续集成

基于TFS系统实现了流水线中的任务原子级编排,支持按场景实现构建过程的可视化编排。使用TFS实现构建自服务,建立了项目级共享库复用于不同环境,构建过程可以用于设置质量门禁,且支持并行。

编写环境构建脚本,实现构建环境配置标准化且拥有独立的构建资源池。实现了PR自动触发构建包括单元测试和代码扫描,PR合并后触发主构建并将构建制品上传至制品库。PR上的构建问题发送会通过邮件精准推送给PR发起人,在wiki上共享了各类构建问题的解决方案并在团队内部共享,确保集成问题在半小时内解决。

测试管理

优化测试分层,结合个人网银系统特点,构建测试金字塔,增加接口自动化测试比重,积累接口和界面自动化测试资产三千余条。实现测试左移,测试人员提前介入。在需求阶段,测试人员与开发、业务共同完成用户故事编写,明确测试场景。同时在开发阶段开展接口自动化测试工作。建立体系化个人网银测试数据管理方案,覆盖全部测试类型,建立数据使用与恢复机制。
测试数据使用时将测试案例与测试数据分离,实现测试数据独立性。借助组织级自动化测试平台,开展自动化测试执行工作,将自动化测试用例与需求关联,根据不同测试需计划筛选自动化测试案例,同时将缺陷自动关联。
建立了组织级质量规约文件,并在系统中配置了各级门禁,在PR提交请求中进行安全漏洞检查、代码合规检查且不允许新增违例。使用Parasoft,可以在本地IDE中运行,代码质量问题能较全面地提示。能够将代码质量问题定位到具体代码行,可以实时持续检查。在本地运行和流水线上运行均支持生成详细的扫描报告。项目组根据代码质量检查结果反馈及时处理,在每次迭代过程中根据合规扫描报告内容解决部分技术债。

部署与发布管理

个人网银系统部署的服务器为windows服务器,系统在测试验证环境上使用TFS进行部署,验证业务功能是否存在bug,预发环境(测试环境)的部署使用的是星云部署,重点验证星云中的部署策略和版本是否能在测试环境上顺利部署。通过层层测试环境验证之后,在生产环境(含灰度)使用星云平台一键自动部署。在经过层层质量门禁之后编译后生成唯一的制品zip包,只进行一次构建,随后通过制品晋级的方式实现各环境部署,保障了使用相同的过程和工具完成所有环境部署。

在部署策略上,平均每周发布一次,应用不包含配置信息,配置信息形成单独的包并部署。应用包和配置包可以按需在星云流水线中进行配置部署,通过灵活的配置实现应用、配置为最小部署单位。为应用和数据库的变更搭建了独立的流水线,通过各自的流水线分别部署。

集成交付全程通过流水线完成,其中上线发布部分有专门的星云平台负责。每次部署活动都提供变更范围报告和测试报告,通过在制品属性上写入自动化测试报告链接的方式,集成自动化测试功能。以测试结果为部署前置条件再经过相关干系人的协作审批之后,在生产环境上一键部署,整个过程在星云平台中实施,交付过程组织内部可见且能看到详细的变更部署日志信息,并支持变更版本的一键回滚功能。

环境管理

个人网银系统采用虚拟机作为基础设施、基础技术。搭建了完备的开发、测试、预发、灰度、生产环境,自研自动化配置工具,实现了研发软件了一键下载安装并进行标准化的配置,保障了研发环境工具包版本的统一。
自研自动化配置工具,实现了测试环境配置的一键下载并进行标准化配置。环境和依赖配置管理实现代码化描述,实现了应用配置分离,为多环境一键部署奠定了基础。基于IaaS平台,环境构建通过运行脚本完成,保障环境申请到环境交付时间控制在小时级。环境和依赖配置管理实现代码化描述,服务级依赖的配置文件在GIT库中管理。

数据管理

导出部分生产环境数据并清洗敏感信息,形成基准的测试数据集且测试数据支持各类测试。部分单元测试可以访问开发数据库,有修改相关的操作,单元测试运行完成后自动恢复。测试数据基于数据库的抽取操作,放入资源池。每个测试用例有专门的数据,不需要先执行其他测试用例。
对于消耗型的数据,使用时独占,执行后丢弃或者恢复。数据库主要存储交易配置,专属密码整体隔离、业务领域间隔离、ATP资源池三种隔离机制,保证不同案例不会抽到同样的数据,并使用标签,标识用过的数据。
搭建了GIT脚本库,DDL和DML脚本通过不同的文件目录实施管理。有专门的分支策略和构建流水线保障数据变更可分为多个阶段验证,并实现了数据库脚本变更和应用变更制品的双向关联,结合制品库和 GIT 库对数据类变更脚本实施分类分级管理。数据变更要求开发人员写执行脚本和回退脚本,并设置了评审门禁。
星云平台负责整个数据变更的部署流水线实施,在变更时总是先执行数据变更,再执行应用变更。配置数据变更完成后不是立刻生效。只有进行完应用变更,新应用上线后,执行星云的回收应用程序池操作对内存进行清理,才会把新版本配置数据导入应用,支持保留数据的回滚操作和零停机部署。在星云中做数据制品添加时,对高危脚本提醒并再次检查,在实施部署时,也会有相应的提示。

度量和反馈

采集需求、编码、构建、测试、缺陷、环境、部署七方面的数据,共43个指标。共43个指标。度量指标在组织内达成一致,度量平台嵌入在科技管理平台中,统计分为项目级和系统级。度量报告以自动化方式生成,通过Web页面展现,其中23个指标实现下钻,下钻后跳转到相应系统原始数据采集的页面。
支持项目团队级的展示,实现按需生成的能力,可以选择看流水线级、活动级的度量数据。数据时效性保持实时或T+1更新,度量反馈问题通过创建相应工作项解决,纳入团队工作计划。根据度量指标数据,持续优化改进。

总结

经过一年多的 DevOps 试点实践,积累大量自动化资产并应用于项目实践,建设了发布流水线,实现了自动化部署和部署节点、部署过程的可视化。开发、测试、交付资产实现粗犷型向精细型管理转变,全员向“全栈工程师”迈进,向既懂业务又懂技术的复合型人才更进了一步。个人网银系统也真正开启了持续集成、持续测试、持续交付的开端。在 DevOps 的实践道路上,还有很多方面的难题等待我们 DevOps 团队优化与解决。

个人网银 DevOps 团队将一如既往攻坚克难、披荆斩棘,继续走好精益敏捷的研发之路,为中国农业银行的数字化转型做出贡献。网络金融条线还有我们掌银,我行未来的主要对外窗口,在这种需要快速响应变化、拥抱效率的时代,掌银的需求更纷繁复杂多变,个人网银团队的 DevOps 诸多实践也将为 DevOps 在掌银项目的落地提供借鉴,未来所有线上金融将转向 DevOps 能力建设,旨在建立从需求、开发、测试、发布、运维的全流程流水线,最终建立的是快速而持续交付成熟产品的能力。

作者简介:

陈伟,中国农业银行个人网银团队资深技术专家,在线上金融个人网银建设领域经验丰富,统筹推进个人网银系统 DevOps 能力建设,牵头个人网银 DevOps 贯标工作。 

陈辉,中国农业银行个人网银团队技术经理,致力于个人网银系统 DevOps 能力项的落地实施,负责个人网银 DevOps 三级贯标工作,具备扎实的 DevOps 领域实践经验。 

伊冰静,中国农业银行个人网银团队测试经理,牵头负责个人网银系统DevOps测试能力项落地实施,具备丰富的 DevOps 测试领域建设经验。 

付云攀,中国农业银行 DevOps 建设工程总体组成员,拥有丰富的项目管理、过程管理、敏捷开发、DevOps等实践经验,负责协调推进中国农业银行DevOps能力建设。


2020年6月19日,由云计算开源产业联盟指导、高效运维社区和 DevOps 时代社区联合举办的 GNSEC 2020 全球新一代软件工程线上峰会上,隆重发布了 DevOps 标准持续交付部分第七批评估结果。
中国农业银行本次参评的 5 个项目均顺利通过由中国信息通信研究院(以下简称信通院)开展的《研发运营一体化( DevOps )能力成熟度模型》持续交付部分3级评估。


中国农业银行通过 DevOps 标准持续交付部分的 3 级评估的项目,分别是:

  • 信贷中台项目

  • 个人网银项目

  • 分布式应用互联平台(AIR)项目

  • 增值税进项税管理项目

  • 金融小店项目
DevOps 标准共分5级,持续交付部分如果能达到 3 级已经是国内领先水准,这代表着中国农业银行在参评项目的持续交付能力达到国内领先水平。
中国农业银行多个项目通过 DevOps 持续交付标准3级评估相关报道:
重磅!中国农业银行多个项目通过 DevOps 持续交付标准 3 级评估,相关项目能力达到国内领先水平!
继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存