金融行业 DevOps 解决方案,第 1 部分:: 解决方案概述

  作为实施的第一步,显然,消除大量的手工操作,构建一个持续交付的流水线平台是最基础也是最迫切的,只有通过流水线平台的自动化和持续流动,才能保证在不同阶段、不同节点上产品发布的一致性和稳定性,同时,也才能消除由于人工操作所引入的人为风险,同时提高效率。

  图 3. 推进 DevOps 实施的三个主要阶段

物联网

  作为实施的第二步,则需要对现有的开发模式及产品架构做进一步的优化,否则,整个流水线是很难顺畅地流动起来的。例如,如果不调整固定版本排期的开发模式,则即使自动化程度再高,紧急需求的上线仍然需要等待整个版本的上线;而对于项目排期的开发模式,在上线前,多个项目代码或者构建包的手工合并也是必不可少的;在传统紧耦合的产品架构下,想要做到自动化的增量迭代发布,也是非常困难的,而每次都将整个产品的所有代码进行发布也是极不现实的,这些其实都是实现整个 DevOps 持续交付过程全自动化的障碍。因此,在构建好持续交付的流水线平台后,其第二步就是开发模式及产品架构的优化。当然,如果没有第一步的自动化的持续交付平台作为基础,则由开发模式调整所带来的发布次数增多也是无法完全用手工完成的。

  在通过工具自动化的方式实现产品的持续交付后,由于人工操作的减少,自动化及流水线操作的提高,包括操作过程可追踪性的实现,快速自动回滚操作的实施等,这个时候,在完整的开发测试交付流程中,有些管控步骤可能就是多余的,是可以优化的。因此,实施的第三步就是对整体开发测试发布流程进行优化,去掉冗余的人工评审步骤,从而实现企业级的 DevOps 持续交付流水线。

  工具平台建设整体方案

  在 DevOps 实施的三个阶段中,第一个阶段,DevOps 交付流水线平台的搭建是最基础也是非常关键的步骤,对于金融企业来说 ,由于其对产品质量、运营风险的严格要求,以及自身产品的复杂性、特殊性,该平台的构建需要考虑如下问题:

  该平台一定要与企业目前所具备的基础设施相结合,而不能像一些初创企业,马上就对整个基础环境及设施进行更新。例如,目前大家都已经非常清楚云平台的优势以及对于 DevOps 推进的重要性,但是,对于一个大型金融企业来说,并不是说马上就可以将所有的应用都移到云平台上的。

  该平台一定要考虑到企业 IT 组织目前的组织结构现状、人才技能现状以及存量产品特点。风险控制和稳定是金融企业 IT 系统需要考虑的首要问题,这些限制导致了他们无法像一些小型的初创企业一样,一夜之间即进行重大的 IT 组织调整,甚至产品更换。他们只能是逐步的稳健的创新,在创新的同时,还需要保持已有组织、人才以及产品的相对稳定。

  该平台一定要与企业目前已有的流程控制系统相结合,而不能独立于现有的流程控制系统。现有的开发测试发布流程,是协调整个组织行为的重要工具,也是控制产品发布风险的有力工具,如果自动化交付平台脱离了这些流程的监管,就有可能变成规避现有流程监控的新工具,从而带来更大的风险。

  基于以上考虑,本文设计了如图 4 所示的 DevOps 流水线交付平台架构。在该架构中,我们将整体的流水线交付平台分成了四层:基础架构层、流水线工具平台层、流水线引擎层以及流程管控层。

  基础架构层是一个企业最基本的基础设施,既包含了存量的硬件平台,也包含了云计算平台,首先,只有在基础实施上实现弹性可伸缩、消除开发测试环境的差异,才能实现真正的 DevOps。而流水线工具平台则是为企业的代码开发、测试及发布提供了一个端到端的工具平台,通过该工具平台的自动化和相互间的无缝对接,实现了从软件代码配置管理、自动化构建、测试到快速的自动化发布。流水线工具分布在整个开发测试发布过程的各个阶段,需要不同的角色在不同的阶段进行配合操作,而且这个操作过程需要置于企业现有流程管控系统的管控之下,因此,我们还需要流水线引擎层,用于根据整体开发测试发布不同阶段的需要,驱动底层的工具平台进行产品的代码管理、构建及部署,同时对上又与企业的流程管控系统对接,使得整个操作过程置于流程监控之下。