发布日期:2021-02-07 来源:https://www.sohu.com/a/330487367_671228 浏览次数:1587
银行业为了应对业务的快速变化、互联网层面不穷的业务形态和交易压力,IT“双态(或双模)化”无可避免,开始探索部分业务参考互联网的方式引入分布式架构,但对于银行业独特的强监管、高安全、强一致性的行业要求前提下,如何在业务发展、合规、IT革新之间找到平衡?
而DevOps被越来越多的金融企业所采用,来支撑软件生产过程的数字化转型,本文主要和大家分享在金融行业落地DevOps的一些坑,如何填坑以及一些心得体会!希望大家能够在自己企业中,找到适合自己企业的DevOps实践之路!
目录:
一、关于DevOps实践的一些问题
二、DevOps在金融行业落地都有哪些姿势
三、DevOps在金融行业落地的套路
四、DevOps将软件生产线数字化
五、总结一些DevOps最佳实践
六、DevOps项目落地过程中一些心得体会
1.关于DevOps实践的一些问题
来源:DevOps咖啡馆
我们从国际信息科学考试学会(EXIN)关于DevOps认证体系来分析,DevOps Pre-Master(DOPM)中包含了敏捷、精益、ITSM和测试相关的内容,也就是说这四项其实是作为了DevOps知识体系的基础,其中敏捷、精益和测试是和软件生产、开发工作Dev强相关,ITSM则与Ops运维工作强相关。所以DevOps知识体系更像是对于以往IT知识的再次提炼和融合,不是一门新的技术。
DevOps是什么?又不是什么?
DevOps是自动化运维吧?不是做运维的为什么要学DevOps?
讲DevOps还是在讲理论,会不会太虚了?
2.DevOps在金融行业落地都有哪些姿势
我们先看看我们对于CICD的定义:
总结来看,项目结果不同,或者接入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年的成绩:
2016年的成绩:
总结DevOps在Capital one的落地姿势:先小范围做全套,再全公司大范围推广。
某寿险也是用的姿势一:他们是与基于Spring cloud的微服务体系架构一起引入DevOps的,原来的想法只是对于这些新的微服务的应用适用DevOps,经过半年的时间之后,感觉还不错,就将DevOps逐步向传统单体架构的应用中去推广了。表中的系统是目前已经接入到DevOps中的系统。对接的代码库有svn/gitlab/bitbucket,介质库是Nexus,CI和CD的流程目前还是做手工触发,CI集成了Sonar和maven test单元测试,cd已包含测试和生产环境。组件包含:springboot、shell脚本和tomcat 3类,主要是全量的部署方式。
再总结一下:先小范围适用CI+CD,它是现在微服务架构适用的,取得经验积累之后,再大范围的推广。
姿势二:先CI,后CD
我们看看中国银行的案例
在项目之初,中国银行首先对软件生产的全流程进行了重新梳理和规划,其中包含流程、规范、度量体系和反馈机制。
在实践阶段分了三步走,研发层面的持续集成、运维层面的持续交付,最终打通研发和运维实现DevOps全流程。
从试点效果来看,单就自动化部署层面就比之前提高了2-5倍的效率。并且在软件质量和规范落实层面有了长足的进步。
再来一个以姿势二落地的,某国家政策性银行。
它的科技局下属研发中心和运行中心是分开的两个大部门,两个部门之间的纽带就是介质,但之前代码基线与生产环境的介质版本一直对不上,这对生产的BUG修复、灾备部署都形成了很大困扰,所以它的研发中心引入DevOps是希望能形成统一的软件出口,能够将需求、代码、配置、介质控制在同一个基线上。所以他们做法是先做CI,并且并行配合maven的框架推广及CMMI4的落地实施。但项目到了二期,它要引进建行建银科技的新核心,一是新核心短时间内的多版本在多个测试环境的部署,二是配合改造的69个业务系统短时间内也会有很多版本要快速部署,进行集成测试,这就要求必须有自动化部署的工具才行。所以DevOps二期的重点就定在了CD,主要是配合核心及配套改造系统提测后的快速自动化部署。
所以总结一下,DevOps落地的第二个姿势:通常都是先由研发部门主导做CI,之后再推广CD,最后将两个流程串起来形成CI和CD的全流程。
姿势三:先CD,后CI
这是一家地方商业银行,也是因为今年要上新核心,并且伴随新核心,有5个系统要重新建设,110套系统要配套改造,行领导提出的目标:在9月8日上线时,利用DevOps做一键式的统一部署!所以项目一期的重点就放在了CD上,短期目标是满足110多套系统的短期大量版本的提测后的自动化部署,最终目标,是要将1+5+110这些系统能够可视化的一键式部署。项目的二期重点,是在CI,配合诸多研发管理的落地实施,全流程的应用和推广以及自动化测试的接入。
3.DevOps在金融行业落地的套路
套路我总结了五步:确定目标、选好姿势、梳理全流程、制定规范、最后分步实施。我们细看一下这五步:
第一步:确定目标
示例一:
这是农行对于DevOps设定的目标:1个平台、能够连接开发、测试、运维3个角色,打通需求、开发、测试、部署、运维5个环节。
示例二:
我们再看看招商银行设定的目标:DevOps是作为打造精益研发体系的一个重要组成部分。
第二步:选好姿势
第三步:梳理全流程
示例一:
这是对一家商业银行全流程的梳理,以及DevOps需要集成的IT系统,如项目管理系统、JIRA以及测试管理系统。
示例二:
这是招商银行的全流程梳理,将DevOps平台切成了两个平台协同工作平台和持续交付流水线平台。
示例三:
以上是农行的全流程梳理方式。
第四步:制定规范
在将整个软件生产全流程梳理完之后,会很对DevOps及各原有IT系统的集成界面和分工非常清晰。接下来就要进行第四步规范的梳理和制定,规范包含哪些呢?
那规范制定的目的是什么呢?
简单来讲,没有规范的制约,没有统一标准,大家各做各的,DevOps项目不可能成功。
第五步:分步实施
接下来,就是第五步,要具体的落地实施了,但也要有前有后,分轻重缓急。我们建议调些试点项目来,如何来调呢,原则是啥?
DevOps试点项目的选择建议原则:
DevOps试点项目执行原则:
DevOps试点项目执行的苦恼:一个巴掌拍不响:
4.DevOps将软件生产线数字化
从横向角度来看,DevOps产生的数据可以分3个部分:
管理数据、开发数据和运营数据,其实这些数据是涵盖了软件生产的全过程,我们可以通过这些数据或直播,来反哺到我们的生产过程,优化我们的不足。
我们从另一个角度DevOps的质量视图、从纵向角度来看,我们也可以从周期、效率、治理和技术的角度来去制定指标考核。
5.总结一些DevOps最佳实践
持续集成的原则
持续集成的最佳实践
自动化部署的原则
自动化部署的最佳实践
要做到自动化部署,要确保自动化部署的成功,最最重要的关键为:保障一致性!将要部署的各个环境一致;在各个环境执行的部署脚本一致;要部署的安装包也要一致!
6.DevOps项目落地过程中
一些心得体会
关于DevOps项目的复杂度,我画了一个矩阵图,希望与大家形成共鸣:
图的X轴是软件生产的全流程,Y轴是DevOps要集成的各类IT系统,Z轴是要推广的各个项目,从这个图可以看出,要做好DevOps落地,复杂度还是相当高的。
DevOps项目落地,我自己总结了一套扁担理论:
但DevOps项目虽然落地困难,无论从管理者层面和一线人员层面也确确实实能给金融起来带来价值:
对于管理者:
对于一线人员: