刘中华 孙科
摘要:传统银行在强监管背景下,如何能够在互联网金融的冲击下顺利完成数字化转型已成为各大银行的首要任务,针对该问题本文通过介绍DevOps主要概念、分析DevOps的关键技术,提出了传统银行可以从团队及组织架构、文化、流程、工具、平台等多个维度进行DevOps转型实践的思考,从而为传统银行的DevOps轉型提供参考。
关键词:DevOps;银行转型;DevOps转型;敏捷开发;银行数字化
中图分类号:TP39 文献标识码:A
文章编号:1009-3044(2020)29-0236-03
1 前言
伴随着DevOps在全球各行业快速流行,DevOps已经成为企业适应市场和提升创新力的便捷之路,根据中国信息通信研究院2019年中国DevOps现状调查得知:受访者来自包括互联网、科技、电信、制造等十多个行业,其中互联网和科技占据半壁江山,从行业的分布可以看出,DevOps已经逐步在各个行业落地实践了。其中,超7成受访者DevOps经验少于1年,58%受访者DevOps调研经验小于半年,15%的受访者DevOps经验不到1年,25%的受访者DevOps经验大于1年[1]。此外,随着“互联网+金融”的飞速发展,传统银行面对数量越来越多的互联网应用种类也越来越多,对软件的开发效率要求也越来越高,金融用户脱媒趋势已逐成定局,数据与市场脱媒方兴未艾,在强监管的要求下,传统银行也面临着较大的危机,如何破局成为各大银行的首要任务。
因此,敏捷和DevOps也逐渐进入以合规和稳健为主流文化的传统银行业,目前DevOps转型在银行业已成燎原之势,中国银行业敏捷转型之大幕已经拉开,“5+12”银行(5家国有商业银行+12家股份制银行)都在大力推进[21。根据中国信息通信研究院研究金牌运维评估数据显示,DevOps正遍地开花,在各种规模的企业中落地,截至2017年已有78%的企业使用开源的自动化运维工具[3]。
2 DevOps概念
每当提及DevOps是什么的时候,由于不限定人群和范围,每个人都能从自己的立场来解读DevOps,很多行业先行者给出的定义也常常不同,DevOps之父Patrick第一次参加Dev0-psDays中国站活动的时候,也使用“盲人摸象”比喻大家对De-vOps的认识,因为DevOps运动从诞生起,DevOps文化一直在不断发展和进步,这些先行者们就从来没有试图给DevOps下一个官方的定义。
与其纠结于DevOps的定义,不如让我们一起回归原始,来看看DevOps究竟要解决的是什么问题。其实,DevOps的秘密就来源于它的名字所代表的两种角色——开发(Development)和运维(Operations)。那么这两种角色之间究竟有什么问题呢?我们从软件工程诞生以来所历经的三个重要发展阶段说起。
第一阶段:瀑布开发模式。瀑布式开发最初在1970年由W.W.Royce提出,它是一种老旧的计算机软件开发方法。瀑布式严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行,是一种最典型的预见性的方法。随着市场环境和用户需求变化的不断加速,这种按部就班的方式有一个严重的问题,如果需求不明确或者在项目进行过程中有可能发生变化的情况下使用瀑布式开发模型会导致其自由度降低,项目早期即作出承诺会导致对后期需求的变化难以调整。从业界巨头IBM的统计数字来看,使用此开发模式有34%的IT项目延期交付,将近一半的应用系统因为缺陷导致线上回滚。
第二阶段:敏捷迭代开发模式。为了弥补传统开发模式的缺点,敏捷开发模式应运而生,它具有更高的成功率和生产率,也被称作迭代增量式开发或迭代进化式开发。在迭代开发模式中,项目组会将整个项目划分为一系列的短小的、固定长度(如2周)的小项目也就是一个迭代周期,每一次迭代都包括了需求分析、设计、实现与测试。采用这种模式,开发工作是在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分相对完整的功能,然后通过客户的反馈来细化需求,并开始新一轮的迭代。敏捷迭代开发模式看似每个迭代花费了更多的时间,但是在每个迭代就让用户介入反馈确保其实施的正确性,节省了大量不必要的浪费和返工。
第三阶段:DevOps开发模式,敏捷迭代开发模式虽然解决了开发与测试快速协作问题,并使得开发和测试测试团队能够抱团取暖,可是问题又来了,开发和测试团队发现,不管研发的速度变得多快,在软件交付的另一端,如果没有经过运维环节的部署上线,并最终发布给真实用户,那么这些功能其实并没有什么用。在墙的另一端的运维团队成了被拉拢的对象。这些在软件交付最末端的团队始终处于一种“背锅”的状态,他们也有改变的意愿,所以DevOps应运而生,也就是说,DevOps最开始想要打破的就是开发和运维之间的对立和隔阂。除此之外,运维团队慢慢转向运营团队,他们持续不断地把线上的真实数据和用户行为及时地反馈给需求团队,来帮助需求团队客观评估需求的价值,并及时作出有利于产品发展的调整,很快业务部门被引入到DevOps之中。除此之外,系统上线后安全成为系统必须解决的问题,在每个过程中会注入安全反馈机制,来帮助团队在第一时间应对安全风险,那么,安全团队也有加入DevOps的需求。这样的例子比比皆是,包括职能部门、战略部门等,都纷纷加入其中,使得DevOps由最开始的点,扩展为线,再到面,不断发展壮大。每个人都参与其中,这使得De-vOps成了每一个IT从业人员都需要学习和了解的知识和技能体系。DevOps代表了IT文化的变化,在面向系统全局(上下文)采用敏捷、精益实践,关注于快速的IT服务交付。
因此,DevOps可以定义为(开发Development与运维Oper-ations的组合词)是一种文化、一场运动或实践,强调在自动化软件交付流程及基础设施变更过程中,软件开发人员与其他信息技术(测试、运维、业务、安全、职能部门等)专业人员彼此之间的协作与沟通。它旨在建立一种文化与环境,使构建、测试、软件发布得以快速、频繁以及更加稳定地进行。
3 DevOps的关键技术
在2017年底,由中国信息通信研究院云计算开源产业联盟(OSCAR)联合高效运维社区、DevOps时代、腾讯、京东、浙江移动、中国银行、中国电信、太平洋保险集团等行业顶级技术专家100多名,共同编写制定了国内外第一个DevOps系列标准——研发运营能力一体化能力成熟度模型,该系列标准分为敏捷开发管理、持续交付、技术运营、应用设计、安全风险管理和组织结构7个部分,涵盖了全软件的开发和运维生命周期,这是行业智慧的结晶,也为构建云时代下的新型软件开发与运营模式奠定坚实的基础[3]。在2018年9月份,该DevOps标准已在联合国直属标准化组织ITU-T、中国通信标准化协会(CCSA)正式立项。因此《研发运营能力一体化能力成熟度模型》已经成为全球首个DevOps标准。
《研发运营一体化能力成熟度模型》共分为八个部分,分别是总体架构、敏捷开发管理、持续交付、技术运营、应用设计、安全及风险管理、评估方法、系统和工具。其中《研发运营一体化(DevOps)能力成熟度模型第3部分:持续交付》基本上定义了DevOps的关键技术。该模型定义了配置管理、构建与持续集成、测试管理、部署与发布管理、环境管理、数据管理、度量与反馈七大能力域,涵盖版本控制、变更管理、构建实践、持续集成、测试分层策略、代码质量管理、自动化测试等49个子项,每个子项分为五个级别,不同级别的能力要求不同,综合考量整个持续交付过程管理,最终得出评估级别。
7个能力域基本定义了DevOps不同维度的关键技术,比如配置管理里面四个关键技术分别是:版本变更标准化,将一切纳入版本控制,全流程可追溯和单一可信数据源。持续集成会要求每次提交触发完整的流水线每次提交触发完整的流水线,每次流水线触发自动化测试,出了问题可以在第一时间修复等关键技术。测试管理会定义自动化测试的分层测试及其自动化测试的代码覆盖率、BUG率等质量指标。度量与反馈分别代表了软件交付的两个最重要的方面,也就是交付效率和交付质量,其中DevOps的主要4个度量指标包括:
1)部署频率:指应用和服务向生产环境部署代码的频率;
2)变更前置时间:指代码从提交到成功运行在生产环境的时长;
3)服务恢复时间:指线上应用和服务出现故障到恢复运行的时长;
4)变更失败率:指应用和服务在生产环境部署失败或者部署后导致服务降级的比例。
4 传统银行DevOps转型关键步骤
传统银行要实现DevOps转型,可以从团队及组织架构、文化、流程、工具.平台等多个维度进行DevOps转型实践。
1)按照DevOps实践要求,构建一个跨业务、开发、测试、运维、安全等多领域的敏捷高效的全栈团队、特性团队等。由于传统银行存在业务部门、IT开发、IT测试、IT运维的部门壁垒,需要推动组织文化的革新和流程优化,来形成一个沟通协作高效的敏捷虚拟团队,从而实现追求更加敏捷高效的IT交付。那么如何调整团队组织结构,建立一个Scrum敏捷团队呢?一般会按照业务功能划分团队,建立沟通群组,设置产品负责人(多个业务人员)、Scrum Master(我们一般选择测试人员担任,测试驱动开发模式)和开发者团队(前端工程师、后端工程师、测试、运维各若干名)。
2)DevOps转型过程中,在传统银行内宣贯和学习DevOps文化也是十分重要的环节。著名的管理学大师彼得·德鲁克,曾经说过,文化对于一个组织的是非常的重要,对于企业和组织来说,没有文化的组织将无法持续前行。在不同的文化制度中,相同的人发挥出来的生产力也会有天壤之别,在敏捷团队主动去实践DevOps文化更是关系到DevOps能否转型成功的关键环节。DevOps的核心文化是CALMS,具体含义:
①Culture(文化)一是指拥抱变革,促进协作和沟通;
②Automation(自动化)一是指将人为干预的环节从价值链中消除;
③Lean(精益)一是指通过使用精益原则促使高频率循环周期;
④Metrics(指标)一是指衡量每一个环节,并通过数据来改进循环周期;
⑤Sharing(分享)一是指与他人开放分享成功与失败的经验,并在错误中不断学习改进。
其中沟通、协作、集成、自动化是DevOps具体落地实践的应用方法,并且Garnter提出的多态IT管理模型中提到创新是IT的驱动力和引领业务的源泉。只有IT的创新,才能在21世纪的商业模式上,不断地提升业务的交付价值与业务成果。
3)在流程方面,项目组需要建设一套完备的持续可交付的流程。该流程包含业务需求、编码构建、测试环境、生产部署四个环节,各个环节相互衔接,服务相互联动,所测即所投。从开发人员接到需求后,根据相关需求拆分成史诗、特性、用户故事等,然后敏捷团队根据特性、用户故事等进行迭代开发(迭代周期一般为2-4周),开发人员将开发的代码提交后,会自动进行编译、打包、构建、代码扫描、质量门禁等,然后自动生成制品库,并触发功能测试、集成测试等环节,在测试通过后在通过自动化部署流程完成版本的自动化生产部署,完成版本的发布。自动化测试流程一般包括测试人员提前介入到需求分析阶段,根据需求制定测试计划,并编写测试用例,利用自动化测试工具完成测试工作,并将测试报告发给开发人员。运营监控流程一般包括優化监控体系、完善运营反馈。比如基础环境、应用、数据库等的监控、日志采集、日志监控、全链路监控、质量监控等,并形成对监控告警信息的及时处理等。通过这一系列流程可以比较友好地推进自动化测试的流程、完善运营监控的流程,达到良好的效果。
4)在流程构建优化方面,我们要从三个方面考虑,一要整体全面思考,出现问题时要从整个系统出发,优化整个环节中可能存在问题的各个部分,达到标本兼治彻底解决问题。二要发挥项目成员的创造性和主观能动性,这点很重要。所有的事情都是要靠优秀的项目成员来完成的。三是数据驱动,通过数据去发现改进的点,然后度量改进的效果,然后持续改进,达到完美效果。
5)在工具及平台方面,传统银行DevOps转型可以选择成熟的DevOps产品工具,若是有条件的话也可以自建DevOps研发平台。当前根据DevOps的阶段分类,大致可以將工具分为如下类别:
①代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion
②构建工具:Ant、Cradle、maven
③自动部署:Capistrano .CodeDeploy
④持续集成( CI):Bamboo .Hudson .Jenkins
⑤配置管理:Ansible、Chef. Puppet、SaltStack. ScriptRockGuardRail容器:Docker.LXC .Kubernetes .Apache Mesos
⑥服务注册与发现:Zookeeper.etcd.Consul脚本语言:py-thon .ruby .sheU
⑦日志管理:ELK .Logentries
⑧系统监控:Datadog、Graphite .Icinga .Nagios
⑨性能监控:AppDynamics .New Relic .Splunk
⑩压力测试:JMeter.Blaze Meter.loader.io
(11)项目管理( PM):Jira.Asana.Taiga .Trello .Basecamp .Piv-otal Tracker .AzureDevOps
另外,对于有条件的银行也可以以现有工具为中心,集合各环节流程工具,统一数据视图、形成研发闭环、自动化全流程,建设一套满足持续集成、持续交付、运营反馈的一体化平台。
5 结语
随着各大银行数字化转型的深入,DevOps转型已成为银行数字化转型的必选之路,驱动敏捷DevOps转型的第一步往往是重塑IT组织协作方式,提升价值交付效率。转型的核心绝非仅限于效率,而是在于提升业务响应力,因此要求银行实现“端到端”的数字化,比如改善多渠道客户体验、丰富客户分析以及全面简化客户流程以实现业务敏捷性,对接IT技术敏捷性,研发运营一体化。
参考文献:
[1] https://mp. weixin. qq. com/s/Uz5AIMJXinZmR-eyY4W88Q重磅!《2020年中国DevOps现状调查》全面启动!
[2] https://www.cbalicai.com/yejiedongtai/4869.html 17家大型银行公认的敏捷与DevOps快速转型模型,
[3] http://www. caict. ac. cn/xwdt/hyxw/201807/t20180703_176414.htm DevOps能力成熟度三级评估结果公布,
[4] https://blog.csdn.net/cynthia_chf/article/details/71616448-平安7年精益敏捷转型之路.
[5]https://baijiahao. baidu. com/s? id=16308445 61369016705&wfr=spider&for=pc DevOps工具分类总结.
[6] https://www.sohu.com/a/238954564_753085 DevOps能力成熟度三级评估结果公布.
[7] https://time.geekbang.org/column/intro/235 DevOps实战笔记.
【通联编辑:梁书】
作者简介:刘中华(1974-),男,河南郑州人,学士,研究方向:数据挖掘、人工智能、DevOps等;孙科(1983-),男,四川成都人,高级职称,硕士,研究方向:分布式数据库、微服务、DevOps等。