熊志正 文 / 中国银行软件中心副总经理
DevOps已经成为IT行业最热门的流行语之一。在更紧密的愿景以及开发团队和运维团队更有效的协作之上,很少有共识DevOps到底意味着什么,不同组织对DevOps有着不同的定义。DevOps并不是新的工具或组织,而是新的文化和流程,其目标是高度协作以生产更好的软件,是开发、测试以及运维相互工作来加快开发和解决问题的方法。本文主要阐述中国银行信息科技体系在DevOps建设上的探索和实践经验,希望在同业探讨、共同提高。
背景
当前,社会发展节奏越来越快,各项新技术日新月异,银行业市场竞争亦日趋激烈。随着银行业务的快速发展,IT建设步伐明显加快,降低成本、提高软件工程活动效率和质量、提升软件产品的交付能力,对于提升银行业的核心竞争力至关重要,IT领域已经成为促进企业业务创新的核心竞争力之一。
行业调查显示,互联网软件企业通过DevOps应用,在诸多方面促进了IT建设和业务发展:一是可降低IT建设无效成本。通过DevOps应用,提升了协作能力,降低了流程审批、人工操作、低效率沟通等成本,可以投入更多成本在真正的交付价值中。二是可实现版本的持续快速发布。通过DevOps应用,由以前的大变更、按批次交付版本,调整为小变更、按业务需求随时交付。三是对业务发展的促进作用。在IT具备了快速交付上线能力后,业务部门可随时将新的业务推向市场。因此,开展DevOps实践对促进业务发展具有战略意义。
理论上,DevOps是一组过程、方法与系统的统称,旨在促进软件开发人员(Dev)和IT运维人员(Ops)之间的合作和沟通,通过建设一种文化和环境,使构建、测试、发布软件更加快捷、频繁和可靠。实践中,DevOps是将不稳定的生产关系(如跨部门沟通、重复厌烦的手工操作、出现过的事故、不稳定的人员流动等),转化为规则,沉淀到稳定的生产力(工具链)中,让开发、测试、运维的工作协同更为高效和自动化,人员仅制定新规则,通过自动化执行,替代每天人工重复冗余的操作,让组织效率更为高效、准确,推动业务快速而又稳定的发展。
DevOps规划设计
借鉴业界DevOps应用框架,结合我行开发过程和实践,形成中国银行DevOps体系,该体系以打造交付流水线为核心,同时涵盖了协作流程、模型规范、度量体系等方面。
该体系以精益管理为理论依据,采用敏捷管理、交付管理等工程方法,贯穿从需求到运维的IT实施过程,包括任务管理、版本管理、持续交付、运营监控等实践活动,通过选用合适的工具提升工程活动的自动化能力,打造交付流水线,实现端到端交付。
中国银行DevOps体系建设目标为:以交付为核心,打造适合中国银行特点的、支持双架构的交付流水线;建设DevOps规范和应用模型,并持续优化完善;建立度量评价体系,不断改进;建立协作流程,实现合理分工、密切合作的实施组织;研究和探索DevOps领域相关新技术。通过建设DevOps协作流程,促进团队间协作关系的改善,打造中国银行DevOps文化氛围。DevOps体系架构如图1所示。
图1 中国银行DevOps体系架构图
DevOps实践
中国银行DevOps建设之路主要经历了三个重要阶段。
第一阶段,持续集成阶段。开发过程引入、开展持续集成实践,建立持续集成应用模型和成熟度模型,并在重点产品试点应用。通过试点应用,进一步优化并完善持续集成应用模型,完成开发阶段持续集成应用推广工作,节省大量手工工作量,持续提升版本发布能力,实现中国银行持续集成应用的标准化、规范化和模型化。
第二阶段,持续交付阶段。测试过程引入自动部署,推广应用持续交付,将测试环境的版本发布过程纳入持续集成应用,通过规范测试环境发布过程,建立中国银行持续交付应用。大部分产品实现持续交付,完成测试环境版本自动安装功能,提高交付质量和效率,每版本平均部署时长大大缩短,部署质量得到显著提升。引入敏捷开发实践、大量应用自动化工具,大大提升软件开发、测试效率和质量。
第三阶段,DevOps阶段。在生产演练过程引入自动部署,实现开发、测试、运维一体化。结合中国银行IT组织形式和管理理念,通过自主开发创新,建立中国银行DevOps实践,如图2所示。通过DevOps应用,进一步缩短开发、测试周期,提升持续交付能力,实现开发、测试、运维相关流程的统一,提高软件产品版本交付效率和质量。
图2 中国DevOps实践
DevOps应用和探索
1.建立“端到端”交付流水线。依托双架构的“端到端”交付流水线,形成以交付为核心的开发、测试、运维一体化流程,使产品交付更加快捷可靠。完成中国银行核心应用系统产品在“端到端”交付流水线上的应用,实现全过程一体化技术的突破。
根据中国银行应用产品现状,基于AIX的应用产品、X86架构的应用产品、ZOS系统的应用产品,建立三条交付流水线,各应用产品可根据自身特点选择不同流水线进行DevOps实践应用。每条交付流水线,贯穿从需求到运维的IT实施过程,包括敏捷需求分析、迭代、版本控制、构建、自动化测试、代码质量控制、部署发布、运营监控等工程活动。通过提升交付流水线上各工程活动自动化能力,提升整体工艺水平;通过交付流水线,促进部门间协作融合,实现应用产品“端到端”的交付;同时依托流水线,搭建中国银行开发中心和运行中心之间协作的桥梁,实现信息透明共享,变更可追溯。
围绕任务管理、开发管理、配置管理、测试管理、环境管理、运维管理等领域,通过引入自动化工具应用,建立中国银行“端到端”交付流水线上的工具链,如图3所示。
图3 中国银行端到端交付流水线
2.建立DevOps规范和度量体系,形成中国银行DevOps文化。为保证交付流水线可实施,建立了一系列技术规范、应用模型和实施指南,为中国银行应用产品快速实现DevOps应用提供技术指导。建立了成熟度模型,形成DevOps评价体系,为IT工艺提升提供改进机会。
规范敏捷开发、持续集成、持续交付等过程,形成组织级的规范要求。通过建立应用模型,实现敏捷需求分析、迭代活动、版本控制、构建实践、自动化测试、代码质量控制、部署发布、运营监控等关键活动的自动化和工具化。建立DevOps应用平台管理实践过程,实现信息的可视化,从而促进开发、测试、运维过程向标准化、一致化、自动化和智能化的方向发展。建立中国银行DevOps评价体系,以评价应用产品在敏捷开发、持续集成、持续交付、应用运营等环节具备的过程能力,持续改进。
通过沙龙、论坛、技术交流等多形式的活动,促进开发、测试、运维与生产调度、安全管理、系统管理的协作融合,共同完成交付流水线的贯通;建立组织内部互相协作和高度信任的氛围,打造持续学习的文化。
3.中国银行DevOps建设领域的探索。中国银行在DevOps建设领域不断探索和创新,寻找适合中国银行产品特点的最佳实践。例如,在部署活动上,研究智能作业流编排引擎,利用容器技术缩短部署周期;在测试领域,开展基于私有云的移动互联自动化测试框架、灰度测试研究、分级自动化测试研究等;在自动化运维方面,开展基于大数据应用日志监控和分布式系统运维等应用研究;在配置管理领域,深入开展分布式配置管理运营模式实践;在信息安全方面,开展部署工具与访问控制一体化对接技术;在基础设施自动化方面,对X86平台虚拟化资源服务优化和移动终端资源池管理模式进行实践应用。
结语
DevOps应用已成为软件企业发展的主要潮流,中国银行通过DevOps应用,实现了开发、测试、运维的深度融合,明显促进了软件产品的交付效率和质量,降低了投入成本,减少了潜在的风险。从试点效果看,整体部署效率比手工操作提升2~5倍。随着版本规模和服务器数量的增加,持续部署的优势将更加凸显。
未来,中国银行DevOps应用体系依然以“价值交付”为核心,持续改进,围绕“高效开发、自动运维、持续发布、团队协作”,结合大数据、云计算、虚拟化等新兴技术,通过不断优化“端到端”交付流水线,逐步实现随时交付,为中国银行业务发展保驾护航。