查看原文
其他

提升研运效能!中国工商银行 DevOps 持续交付标准化实践之路

中国工商银行 高效运维 2022-11-05

作者:中国工商银行软件开发中心

一、背景及挑战

持续交付旨在快速、高质量的交付业务价值,助力业务部门更快地响应市场需求,是提升企业研发效能、加快企业数字化转型的重要支撑。
中国工商银行2009年开启构建部署自动化的工具建设之路,多年沉淀,从2018年开始基于已有工具探索和研究 DevOps 平台建设,经过两年的实践,建成贯通开发、测试、运维三中心的端到端流水线,有效支撑版本快速发布,提高了业务需求响应能力。

同时,随着业务需求不断攀升、版本发布日益频繁,工商银行的 DevOps 工具链面临着多重挑战:

  • 是工商银行业务领域广、科技队伍庞大,各产品线的代码库粒度和组织结构、构建部署实现过程、环境管理方式等千差万别,持续交付的规范化、标准化势在必行;
  • 是大量巨石结构应用,虽通过 DevOps 工具链实现了端到端的自动化交付,但要进一步提升效率,则依赖于应用架构和 DevOps 工具链的协同改进;
  • 是研发人员需要编写构建部署脚本,面向每次投产内容定制投产流程,复用性、自动化程度存在提升的空间。

面对这些挑战,工商银行在2020年提出持续交付标准化理念,统筹推进标准制定、工具重构、应用改造,开启持续交付标准化实践之旅。

二、持续交付标准化实践

中国工商银行的持续交付标准化,从架构出发,按应用架构的服务节点划分,以服务化为指导,梳理代码组成和交付的最小单元,作为“发布单元”,并以“发布单元”为主线,建立含代码库管理、构建、部署、制品管理、配置管理等在内的全流程持续交付标准,清晰代码库、制品的管理颗粒度,并打造标准化的构建、部署、生产投产等工具链能力,降低工具使用门槛,进一步提升版本持续交付、持续部署的自动化水平。

1、制定持续交付标准化规范

结合工商银行通用技术栈,划分发布单元类型,制定发布单元管理规范,并以“发布单元”为主线,明确发布单元的代码库、构建、制品、部署、配置等持续交付全流程各项规范:

2、打造持续交付标准化工具链

依据持续交付标准化规范,打造全新的持续交付标准化工具链。

(1)发布单元管理

发布单元是构建、部署的最小单元,具象上它对应一个代码库、一类制品和一个服务节点,以此约束持续交付的粒度及代码和制品的组织结构。同时,它按技术栈进行归类抽象,清晰构建、部署规则。发布单元与代码库、服务节点等的关系如下:

发布单元贯穿需求、设计、研发、交付、部署等全流程,结合发布单元管理规范,持续交付标准化工具链实现对发布单元维度的持续交付的支持。

(2)构建部署

按技术栈进行抽象整理出10+种类型的发布单元,基于代码管理规范明确每种类型发布单元的构建实现过程和制品结构,进而规范各类发布单元的部署过程,工具链按发布单元类型对构建、部署进行封装,只需要说明发布单元类型,工具即能自动完成构建、部署。

(3)服务环境

从运维层面,明确能独立部署和提供服务的最小单元,作为“服务环境”,以此规范环境管理。应用的服务环境划分,在研发、测试、生产三中心一致,各中心建立不同的服务环境台账,用于管理服务环境与对应中心的服务节点实例等的关系。
服务环境与应用、服务节点间的关联关系如下:

(4)应用级部署流程

标准化前,应用面向当次投产内容定制投产流程。流程编排复杂、复用程度低,且难以在测试环境验证,无法提前暴露风险。
标准化后,基于发布单元和服务环境,实现面向应用定义应用级部署流程,大幅简化流程配置,同时实现部署流程的可复用、可验证、自适应、可裁剪、可视化。

3、应用协同改进

持续交付标准化,是对工商银行当前持续交付组织方式的重定义,需要梳理清晰应用架构,结合持续交付标准化的要求,由应用协同对其代码组织结构、构建部署实现和投产组织方式等进行改进,以简化构建部署过程,实现部署流程的高度复用和提前验证,通过细粒度的代码管理和版本包,达到提高持续交付效率的目的。

主要改进内容包括:

(1)规划定义发布单元和服务环境

结合应用的应用架构和运维架构,架构师规划应用的发布单元、服务环境。

(2)改造代码库
按标准化中各类规范的要求,对发布单元相应的代码库进行改造,包括代码/目录结构、构建定义、部署定义、配置文件、变量、启停备脚本等,实现发布单元级别的同源管理。

(3)规范配置管理信息

按标准化中配置管理规范的要求,对应用在配置中心的各类信息进行规范和完善。

(4)定义应用级部署流程

面向应用运维架构定义应用级部署流程,用于应用在不同版本、不同研发运维阶段的自动化部署。

三、实施成效

通过持续交付标准化,建立了代码库、构建、部署等持续交付全流程标准,规范了构建、部署的实现过程,为各应用的持续交付提供了最佳实践,原构建策略8000+,部署策略20000+,规范后形成10+标准化构建部署配置,大幅扩展了工具链对不同业务领域的支撑能力;实现了发布单元粒度的独立研发、交付和部署,支持更精细化的按需交付和发布;简化了构建、部署配置,实现了部署流程的可复用、可验证、可裁剪、自适应、可视化,提高了工具链的自动化程度。

四、未来展望

未来,工行 DevOps 团队将以标准化作为支撑,继续聚焦研发、运维效能提升,以产品化的思维全力打造端到端的 DevOps 协同平台,实现从需求提出到版本上线的全链路升级,赋能产品研发运维团队,提升研发交付和生产运维效能。

还不过瘾?10月,GOPS 全球运维大会 2022 · 上海站 8 折倒计时1天,扫码立减840元~

近期好文:

从 Kubectl Top 说起, 谈谈 Kubernetes 是如何进行资源监控的?

“高效运维”公众号诚邀广大技术人员投稿

投稿邮箱:jiachen@greatops.net,或添加联系人微信:greatops1118.
点个“在看”,一年不宕机

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

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