《架构世界》2020金融刊:DevOps与微服务在金融业的应用
上QQ阅读APP看书,第一时间看更新

2DevOps在金融行业落地都有哪些姿势

我们先看看我们对于CICD的定义:

CI持续集成,我们通常定义为从代码提交到编译打包,再到SIT的过程

CD中的持续交付,我们通常定义为从代码提交到UAT的过程

• 但项目里,没有用DevOpsCI的项目,也可变相为从编译打包到UAT的过程

CD中的持续部署,我们通常定义为从代码提交到最后生产部署的全过程

• 但项目中,有可能变通为从编译打包到生产部署的过程总结来看,项目结果不同,或者接入DevOps应用系统也有可能处于不同的阶段,这造成了,CI/CD的过程随项目实际情况会有些差异。

DevOps项目在售前、招标或前期阶段,我们通常看到是小圈里面的内容:

CI/CD、自动化部署及回滚、与现有云平台的接口、流程的图形化编排调度等,但这些只是DevOps的内核,真正去落地一个DevOps项目的时候,其实你会看到外面大圈的这些内容,换句话讲,需要梳理组织整个软件生产的全过程!

姿势一:小范围CI+CD,再全公司推广

先看看Capital one的案例,美国第一资本金融公司,美国排名前十的银行。

痛点:

2014年当时,Capital One的软件开发实践和很多传统做法没有什么不同:大量外包,瀑布模型,季度发布,手工流程,变更请求。在某次代码检查会上,大家发现一个测试失败是由于某个XML文件里的tag不配对造成的。按理说,这么小的问题改了再提交就可以了。但是:开发工作是由另外一家公司负责,他们需要发起漫长的变更请求;代码修改后的构建流程(编译、测试、部署等)就需要至少2天时间。这个小小的问题让Capital One的技术团队开始反思他们的构建流程,并决定从这里下手。他们从一个小的团队开始实践DevOps,最终把时间从2天缩短到几分钟。于是,这个实践逐渐在Capital One蔓延开来,所谓星星之火,可以燎原。

2015年的成绩:

1. 代码提交频率:从之前的不固定到每天100多次的提交

2. 代码集成频率:从每月1次到每15分钟一次

3. 部署流程:手工变成自动化

4. 部署到QAPerf(性能)环境频率:从每月1次到每天4

5. 部署到生产环境频率:从每月或每个季度1次到每个迭代1

6. 单元测试覆盖:从没概念到>90%

2016年的成绩:

1. 发布到产品环境的频率:从每个迭代一次到每天至少1

2. 自动发布的应用软件数量达20

3. 一个应用软件每天最多可以发布34

总结DevOpsCapital one的落地姿势:先小范围做全套,再全公司大范围推广。

某寿险也是用的姿势一:他们是与基于Spring cloud的微服务体系架构一起引入DevOps的,原来的想法只是对于这些新的微服务的应用适用DevOps,经过半年的时间之后,感觉还不错,就将DevOps逐步向传统单体架构的应用中去推广了。表中的系统是目前已经接入到DevOps中的系统。对接的代码库有svn/gitlab/bitbucket,介质库是NexusCICD的流程目前还是做手工触发,CI集成了Sonarmaven test单元测试,cd已包含测试和生产环境。组件包含:springbootshell脚本和tomcat 3类,主要是全量的部署方式。

再总结一下:先小范围适用CI+CD,它是现在微服务架构适用的,取得经验积累之后,再大范围的推广。

姿势二:先CI,后CD

我们看看某银行的案例

在项目之初,某银行首先对软件生产的全流程进行了重新梳理和规划,其中包含流程、规范、度量体系和反馈机制。

在实践阶段分了三步走,研发层面的持续集成、运维层面的持续交付,最终打通研发和运维实现DevOps全流程。

从试点效果来看,单就自动化部署层面就比之前提高了2-5倍的效率。并且在软件质量和规范落实层面有了长足的进步。

再来一个以姿势二落地的,某国家政策性银行。

它的科技局下属研发中心和运行中心是分开的两个大部门,两个部门之间的纽带就是介质,但之前代码基线与生产环境的介质版本一直对不上,这对生产的BUG修复、灾备部署都形成了很大困扰,所以它的研发中心引入DevOps是希望能形成统一的软件出口,能够将需求、代码、配置、介质控制在同一个基线上。所以他们做法是先做CI,并且并行配合maven的框架推广及CMMI4的落地实施。但项目到了二期,它要引进建行建银科技的新核心,一是新核心短时间内的多版本在多个测试环境的部署,二是配合改造的69个业务系统短时间内也会有很多版本要快速部署,进行集成测试,这就要求必须有自动化部署的工具才行。所以DevOps二期的重点就定在了CD,主要是配合核心及配套改造系统提测后的快速自动化部署。

所以总结一下,DevOps落地的第二个姿势:通常都是先由研发部门主导做CI,之后再推广CD,最后将两个流程串起来形成CICD的全流程。

姿势三:先CD,后CI

这是一家地方商业银行,也是因为今年要上新核心,并且伴随新核心,有5个系统要重新建设,110套系统要配套改造,行领导提出的目标:在98日上线时,利用DevOps做一键式的统一部署!所以项目一期的重点就放在了CD上,短期目标是满足110多套系统的短期大量版本的提测后的自动化部署,最终目标,是要将1+5+110这些系统能够可视化的一键式部署。项目的二期重点,是在CI,配合诸多研发管理的落地实施,全流程的应用和推广以及自动化测试的接入。