中国农业银行:践行DevOps,打造高质量持续部署平台

2022-03-16 10:00:00
袁成/张浩/贾晋
转贴:
公众号
1274
摘要:在云计算、大数据、人工智能、物联网等技术主导的数字化时代,如何通过更完备的技术支撑体系来满足企业高速发展的需求,通过更快更灵活的产品交付来支持业务运营是各大技术型企业不可回避的问题。

在云计算、大数据、人工智能、物联网等技术主导的数字化时代,如何通过更完备的技术支撑体系来满足企业高速发展的需求,通过更快更灵活的产品交付来支持业务运营是各大技术型企业不可回避的问题。DevOps则为企业的效能提升和数字化转型提出了解决之道。DevOps旨在实现开发运维一体化,要求打破IT开发部门与运维部门之间技术、流程和组织上的隔阂,聚焦IT系统的整体价值流,打通需求、开发、测试、部署、运维等各环节并形成闭环管理,保证价值从左到右的快速流动。

devops-ring-of-competence

图1:DevOps能力环

部署作为DevOps价值交付过程中的一个关键环节,最终使软件产品在生产环境交付并产生价值。可以说,部署的效率和质量直接决定着价值的产出。持续部署作为一种先进高效的部署方式,以自动化的手段将部署的操作过程简化,频繁且持续性地将软件部署到生产环境,使应用软件产品能够快速的交付使用,从而促进了IT价值流的快速交付。

一、持续部署概述

事实上,部署是技术概念,指的是将软件包或者制品安装到特定的运行环境,是一个技术操作;而发布则是业务概念,是将一个业务产品对外或网上发布,能让一个或者一组需求对用户可用,是一个业务行为。


如果我们把某一产品待发布的新功能称作产品的特性的话,在互联网行业,部署和发布有时是解耦的,部署独立于发布单独进行,当待发布的特性部署后,业务可以灵活决定特定的发布时间及人群。但如果特性部署后即时发布生效,那么部署则代表着发布。在传统银行业,大多数情况下部署与发布是一致的,不对部署与发布做严格区分。


持续部署(CD,Continuous Deployment)简而言之是在持续交付的基础上,把部署到生产环境的过程自动化。持续部署的前提条件是自动化完成构建、测试、验证等步骤,是持续交付的更高阶段,也是DevOps平台建设的里程碑。一方面,持续部署能够使在预发、类生产环境中经过验证确认的特性随时进入生产阶段,为最终用户提供服务。另一方面,持续部署能够通过自动化方式简化部署的操作过程,降低部署的复杂程度。除自动化能力以外,持续部署在稳定的技术架构、运维工具等基础上,还应包含蓝绿发布、滚动发布、灰度发布、金丝雀发布和快速回滚等能力,有效解决人工实施应用发布及验证导致的不可控问题,进一步提升应用交付效率,降低应用发布风险。

devops-continuous-elivery-and-continuous-deployment

图2:持续交付和持续部署

二、行业持续部署建设现状

随着互联网金融的迅猛发展,线上化业务需求快速增长,整个行业对软件产品和服务交付的迭代速度和质量的要求也越来越高。各大企业都陆续展开了DevOps落地工程,大力推动持续部署的建设,以此来提升研发效能。


阿里巴巴将GitOps/IaC理念与云原生技术相结合,并融合以应用为中心的管理经验,搭建了新一代云原生研发运维平台——云效。云效作为云原生时代一站式DevOps平台,具备代码管理、项目协作、制品仓库、流水线、测试管理等各项功能,实现了以特性为核心、以应用为载体、松管控与强卡点的持续交付能力。云效平台的持续部署能力内建于云效流水线,实现以应用和变更为核心的交付流程以及基于变更的检查项和卡点。为了保证服务质量,更逐步形成了符合DevOps要求的发布策略,例如停机发布、金丝雀发布、滚动发布、蓝绿发布等。支持根据场景特点和需求选择合适的发布策略,从而进一步降低发布风险。


腾讯则采用一套基于PaaS的技术解决方案,打造了完整贯穿持续集成(CI)、持续部署(CD)、持续运营(CO)的DevOps平台——蓝鲸。整个工具链包含了协同管理、开发编码、持续集成、测试与质量、制品管理、持续部署、运营分析7大能力域;全面支持企业研发运维的需求、开发、测试、部署、运营、度量等场景;支撑多种技术架构、多种语言、多种端的应用的研发管理和协同实践,极大地提高了企业应用的研发效能。其持续部署场景,包含作业平台、应用配置、环境管理、标准运维等产品能力,主要覆盖应用发布变更、基础管控等运维自动化阶段,支持面向海量异构业务的自动化运维的持续部署能力。


各大商业银行也紧随其后。例如,工商银行从持续交付工具链开始,打通IT内部各环节,建设了开发者门户、持续交付流水线、运维平台等工具平台。通过标准化的流程、自动化的体系,实现版本的持续集成、持续交付、持续部署,打造出一条产品研发——质量保证——投产部署的价值交付链。中国银行早期以交付为核心,根据应用产品现状,建立以配置管理为基础,AIX、X86、ZOS三条交付流水线产品。同时,提升交付流水线上各工程活动的自动化能力,在演练至生产过程引入自动部署,实现了应用产品端到端的交付。而后持续推进DevOps建设,以DevOps工程实践为指导,以端到端交付流水线为核心,通过统一标准整合IT研发能力,高效地支撑了企业技术架构产品的全领域持续集成和持续部署能力,新打造的DevOps云平台有效支持上云产品的持续交付。


现阶段,越来越多的互联网企业以及商业银行都在参照DevOps标准评估体系,加强自身建设和能力补齐,大力推动DevOps能力落地,促使企业更快速、更可靠地的交付质量更好的产品或者价值,引领企业数字化转型。而在这诸多DevOps实践中,持续部署毫无疑问是DevOps平台建设的价值高地。

三、持续部署建设思路

中国农业银行作为传统大型商业银行,业务种类繁多、产品架构复杂,也存在着应用发布平台分散、部署操作复杂、交付标准不统一、自动化程度低等问题。为了应对激烈的同业竞争,提升交付效率,研发中心启动DevOps 建设工程,对标DevOps能力成熟度模型,以提质增效为根本目标,以流程优化为核心驱动,展开贯穿研发与运维的DevOps工具链建设,力求打通需求、开发、测试、部署、运维等环节并形成闭环管理,解决研发过程中断点、痛点、难点问题,实现全链路数据的可视化。打造适合自身特点的部署平台,更是改进现有流程及功能、推动自动化部署能力补齐提升的重中之重。农业银行的持续部署平台建设主要侧重以下几点。

统一发布流程

持续部署平台能够发布多种构建产物,支持多种运行环境,对接各类运维系统。目前,应用交付的资源多样化,包括jar包、war包、脚本文件、镜像文件等,且部署后运行的环境各异,涉及Linux、Windows、AIX、WAS及云上容器等,这些差异使得应用发布的操作方式复杂、发布模式各异。为提升应用交付效率,需要规范应用交付资源,适配部署运行环境,通过抽象多样化的发布过程,提供统一的部署方式和应用发布流程。

实现自动部署

精细化部署流程,引入自动化进程,实现各类运行环境应用的自动部署,降低部署风险及操作门槛,提升部署效率。应用程序的部署可能包含多步部署操作,特别是云下应用程序的发布,涉及诸多操作步骤,需要对操作进行标准化,并提供丰富的操作策略,将标准化的原子操作串联成完整的发布流程。然后,通过平台或者代理程序的自动调用执行,实现某应用程序的自动化部署。

支持各类操作

融合应用部署、数据操作、流量控制、配置操作等应用发布及其关联操作,能够持续不断地快速对接各类平台,具备良好的可扩展性。一个应用程序的发布投产,经常关联其他变更操作,例如数据/数据库的配合变更、F5渐入渐出实现分集群部署等。所以,持续部署平台除了支持应用发布服务外,也需要支持应用变更投产的各类关联操作,满足各类应用交付的变更场景,提升工具化能力。

具备良好体验

发布环境有效贯通,发布场景可以灵活定制,发布过程可视化并且支持共享。发布流程需要串联版本验证与生产环境,实现不同环境(如预发布、灰度、生产)的发布流程控制及自动部署;具备发布过程预编排、失败回退等能力,通过可视化作业编排及作业执行,定制化编排变更投产场景,降低部署复杂度。同时,配合线上化交互和通知机制,使得发布过程更加高效。

四、农行持续部署平台实践

基于上一节的建设思路,农业银行的持续部署平台研发团队精耕细作,悉心打磨近两年,已初步完成了平台建设,实现了流程统一、自动部署、服务集成和灵活编排的目标,并提供了友好的用户体验和较强的可扩展性。

持续部署,交付归一

建设了“部署流水线”产品,提供统一的应用发布过程和应用部署流程,避免了复杂交付场景下不断切换平台操作,以任务单形式贯通版本验证与生产环境的一体化自动部署。同时,联动FTP版本服务器、制品库、变更管理等平台,保证了交付资源线上化流转、部署资源所审批即所投等。依托部署流水线,持续集成各类应用发布平台的部署服务及投产关联性操作服务,以达到支持各类变更投产场景,统一应用交付过程的目标。

devops-deployment-pipeline-brief-process

图3:部署流水线简要流程

服务集成,能级提升

为拓展交付能力,通过自研应用代理以及数据代理的方式,实现了云下应用的发布及相关操作的统一化;支持Oracle、MySql等各类数据库的数据DML变更/数据库DDL变更。同时,对接基础资源操作平台、移动应用平台、云管平台等各类运维平台,提供负载均衡流量控制、云上应用发布、离线包、小程序等应用交付操作。

devops-deployment-pipeline-service-integration

图4:部署流水线服务集成

现阶段,部署流水线提供支持的作业步类型已达74种,支持云下应用程序、云上PaaS程序、离线包程序、小程序等各类变更投产类型的应用发布。

自研代理,掌控核心

自主研发了应用和数据代理:应用代理覆盖行内主流云下部署架构,支持IOP-Linux、IOP-AIX、IOP-WAS、IOP-WASALONE、IOP-WindowsIIS和IOP-WindowsServer等6种部署类型,提供云下应用包括部署在内的各项操作;数据代理则支持包括MySql、Oracle等在内的数据变更及数据库变更。同时建设了一站式的代理管理中心,实现代理注册、检查、线上更新、白名单推送、日志查询等各项管理功能。

灵活编排,引领体验

支持拖拽式作业编排及实施,契合用户使用习惯;可定制化编排变更投产场景,满足灵活多变的应用交付需求;共享交付过程及资源信息,降低线下交互频率等。通过一系列可视化操作,使得发布过程与操作更加直观。下图为某应用变更场景的部署流水线实例。

devops-change-scene-instance

图5:某应用变更场景实例

快速对接,赢在未来

基于Restful接口提供了第三方应用系统服务快速接入的功能,以自定义作业步的形式支持第三方服务的快速集成。自定义作业步采用注册模式管理,支持动态增加,为平台提供了强大的可扩展能力。

五、持续部署建设展望

随着农业银行DevOps工程建设的不断推进和全面推广,持续部署能力的要求也越来越高,而行内的持续部署平台仍然处于快速建设期,存在着一些辅助功能上的缺失以及对部分场景的支持力度不足,与互联网企业依然有较大差距。为了全方位提升发布的自动化程度、稳定性和适应性,我们计划从以下几个方面展开后续建设。

部署场景全覆盖

以应用为中心,加强应用的管理和配置,支持行内各类技术栈和平台的异构化应用,实现应用部署场景全覆盖。针对经常伴随着部署过程的数据变更、数据库变更、流量控制、配置修改等各类关联操作服务,以场景驱动的方式,全面纳管和支持,通过可视化场景编排,支持更加灵活的应用发布或投产。

操作全面自动化

通过实现所有组件化服务的自动执行,支持应用的全自动化发布:从人工部署编排向标准部署场景的全自动编排升级;从流水线的触发式、一键式执行逐步向全自动执行提供支持;从单应用部署场景向复杂投产场景的自动化实施推进。同时,结合变更管理要求,加强平台的校验检查和卡点能力,满足各项检查项的变更,提供无人参与的全自动实施变更能力。

发布模式标准化

现阶段,应用的发布模式仍然依赖于开发人员的人工编排,平台本身缺乏固化发布模式的能力。为控制因发布模式不当带来的风险,需要在平台中内建发布模式,根据应用的特点进行分级分类,提供标准化的发布模式,支持多种发布策略:如蓝绿发布、滚动发布、灰度发布等。针对单应用的标准化发布场景,支持实施和回退的全自动化编排生成能力,进一步提升应用交付效率和安全性。

深度融入工具链

进一步推动持续部署平台与DevOps工具链其他平台的融合。依托持续交付流水线,以应用为主线,制品资源为交付物,向前加强与制品库、TFS等平台交互,提升应用持续交付质量和速度;向后与监控、日志、操作等平台加大联动,针对标准化发布的部署场景,支持对验证、监控、日志、链路等数据进行异常检测,实现持续部署过程中的自动化异常发现甚至自动回滚能力。

六、总结

企业数字化转型离不开DevOps,持续部署作为DevOps工具链建设的重要组成部分,能够更快速更高质量交付应用产品,实现持续顺畅的价值交付。而DevOps建设是一个持续的过程,农业银行将进一步践行DevOps理念,持续推进工具链建设,打造高质量的持续部署平台,以“完备、便捷、高效、安全”为目标,提高我行产品和服务的持续交付效率,助力科技服务效能提升与企业数字化转型。

DevOps文章
联系我们
联系人: 阿道
电话: 17762006160
地址: 青岛市黄岛区井冈山路157号中南金石国际广场A座3202室