在碰撞中成长 - 北京银行的DevOps实践之路

640?wx_fmt=png

201810/27日,在上海召开的微软年度最大规模的技术盛会微软2018技术暨生态大会上,北京银行渠道系统负责人&敏捷团队负责人周兵女士和大家一起分享了北京银行的DevOps 实践转型经验,得到了大会听众的热烈评价和共鸣,会后众多金融和互联网行业的客户意犹未尽,还和周兵女士进一步探讨DevOps转型的经验。



640?wx_fmt=png

嘉宾简介


640?wx_fmt=png

周兵- 北京银行渠道系统负责人&敏捷团队负责人


640?wx_fmt=png

演讲实录


下面是我们现场收集的周兵女士演讲内容,快速整理记录如下,弥补大家不能到现场交流探讨的遗憾;不过还是建议大家下次来现场哦,现场气氛真的是热烈。

 

微软Azure DevOps在北京银行的实践

 

大家好,非常荣幸能够在微软技术暨生态大会上和大家分享北京银行进行敏捷与DevOps转型的实践经历和经验。


640?wx_fmt=png

 

北京银行成立于1996年,是一家新型的股份制商业银行,拥有近620家分支机构,价值排名中国区域性发展银行首位,一级资本排名全球千家大银行63位,连续五年跻身全球银行业百强。近两年,北京银行积极探索数字化转型,并以打造金融科技型银行作为全行转型突破口。其中,提升敏捷服务能力,及时响应市场需求,是转型过程中最迫切的需求之一。在此背景下,我行开启敏捷转型探索之路,并于20176月,引入微软研发管理平台Azure DevOps Server,作为敏捷落地工具。

 

银行做敏捷,与互联网行业做敏捷不同:首先,银行业是强监管、重流程的行业,所以,银行做敏捷,要求的是在稳定运行、杜绝风险的基础之上的敏捷。第二,银行系统多,有渠道类、账务类、支付类、数据类、总线类系统,系统类型之间所适应的模式也不同,所以,银行做敏捷,要求的是稳态与敏态共存的敏捷。

 

在试点之初,我们也存在着诸多困惑:北京银行与微软Azure DevOps Server如何进行基因适配?利用Azure DevOps Server推行敏捷是否有统一的范式?我们的转变应该是一步到位还是渐进式改革?这些问题随着我们的探索与实践逐渐清晰,一起来看看我们的实践之路。

 

敏捷初衷——我们为何转变?

 

在传统的工作流程中,存在着诸多的痛点,比如:


  1. 项目多,投产次数多,其中以手机银行为代表的渠道类系统最为突出。

  2. 环境多,版本管理较复杂,其中以ESB为代表的总线型系统最为突出。

  3. 项目流程繁琐,一个项目从立项到投产,大概需要15个环节,每个环节有相应的文档要求,整个过程需要提交多个文档,且需要在多种不同的系统中进行操作。

 

总体上,存在系统之间相对独立,形成信息孤岛的问题,很多流程仍依赖于线下沟通和手工操作,使得我们难以用有限的开发资源,更好地满足日益增多的业务需求和日益增强的监管要求。


640?wx_fmt=png


因此,我们希望能有一套平台,对项目流程进行全生命周期的管理,以实现有效的协作研发:


-      针对项目多,投产次数多的现状,实现自动化集成部署的流水线;

-      针对环境多,版本管理较复杂的现状,实现清晰灵活、自动化的版本管理;

-      针对项目流程繁琐、文档多、系统多的现状,实现开发流程的统一化及项目管理的精细化。

 

而微软的TFSTeam Foundation Server,现已更名为Azure DevOps Server)正是这样一套平台,集项目管理、版本管理、持续集成、持续发布和测试管理为一体,其中,项目管理和测试管理是项目维度的,版本管理、持续集成、持续发布是系统维度的。我们通过引入TFS这一有力工具,探索实现对项目的全生命周期管理和基于敏捷与DevOps的协作研发机制。


640?wx_fmt=png

 

基因适配——我们在碰撞中成长

 

我们选取了不同类型的系统团队进行试点,在实际试用过程中,遇到多种困难,我们归结为两大碰撞:一是TFS理想化的全生命周期管理与实际项目过程中错综复杂、系统多样化的种种现实的碰撞;二是TFS基于敏捷、设计灵活的使用方式与实际项目过程中期望简洁、并与现有流程完美契合的碰撞。


640?wx_fmt=png

 

具体来说有三个问题:

 

-      项目管理:如何简便、清晰地区分项目维度与系统维度的交叉?

-      版本管理:如何做好多项目并行、投产时间不定的版本管理?

-      测试管理:如何在测试管理阶段做到既实用又满足监管要求?

 

两大碰撞的根本原因,是TFS基于敏捷迭代、强调协作的设计理念与银行强监管、重流程的工作理念之间的碰撞。试用过程是通过发现问题、解决问题、探索方案,分析定制化可行性等措施,着力解决两大碰撞的过程,是在碰撞中成长,通过基因适配,探索北京银行基于TFS的最佳实践的过程。

 

640?wx_fmt=png

 

第一:项目管理

 

首先,关于项目维度与系统维度的交叉,我们在TFS中建立“项目管理”的团队项目,自动从行内项目管理系统同步需求,同时,建立全行系统清单,每一个系统在TFS中为一个团队项目,两者通过需求进行关联,形成清晰灵活、满足各个维度管理要求的规范流程。


640?wx_fmt=png

640?wx_fmt=png

 

第二:版本管理

 

关于版本管理,我们直接选用GIT分支型的版本管理,并按照即有版本管理要求,划分为开发库、受控库和产品库,分别对应开发流程、准生产流程和投产流程,每一个阶段都以项目映射分支的方式进行管理。并且向前衔接需求,向后衔接测试,打通计划与交付,形成部署流水线。


640?wx_fmt=png

 

第三:测试管理

 

关于测试管理,我们沿用了已有测试管理系统进行测试计划、测试案例、测试报告的管理,同时与TFS进行打通,将缺陷流转至TFS,保证开发人员可以在TFS中专注于需求开发和缺陷解决两个关键任务。

  

实践总结——我们的特色之路

 

北京银行基于TFS的敏捷实践,有以下几个特色点:

 

1. 稳态与敏态共存的双模IT

 

TFS敏捷实践是在我行树立移动优先战略的背景之下开展的,我们以移动为触点拥抱互联网,以移动为试点实践新模式,以移动为焦点不断发现问题改进流程。在这个过程中,以手机银行为代表的移动端应用处于敏态,实现了每周投产,传统的中后台系统处于稳态,仍保持双周投产。此外,稳态还代表了我们在践行敏捷的同时,保持原有流程不发生大的变化,兼顾效率与风险,让敏捷基因与银行重流程、强监管的基因进行了很好的适配。


640?wx_fmt=png

 

2. 拥抱互联网兼具风险意识

 

我们率先采用了互联网特色的GIT分支型管理,替代传统版本管理,并设计符合监管要求的开发库、受控库、产品库的分支管理模式。同时,在实践过程中,我们对版本的全量发布和增量发布进行了审慎、全面的考量,我们项目组研发了增量发布插件,支持全量编译、增量发布的模式,作为对全量发布的一种补充模式,以更好地把控投产风险。


640?wx_fmt=png

参考:

上图中提到的 Pull Request Diff Copy是 leansoftX.com 团队与北京银行合作开发的,公众号中相关文章如下。

  • 使用TFS CI/CD 完成 VSTS 插件自动化部署和发布

  • 绑定Git Pull Request和部署目标环境

如果需要安装此插件,请扫描上图中的二维码


3. 流程创新以实现自动化管理

 

我们组建的流程改进小组主动创新,借助TFS强大的功能,设计实现了多个自动化管理流程,比如:实现自动的代码安全扫描与加固,实现自动流转的准生产环境审批流程,实现项目文档的自动化检查,实现环境问题的自动跟踪等,通过透明化、自动化的管理,实现工作效率的大幅提升。


640?wx_fmt=png

 

总结

 

回首实践之路,北京银行建立了一体化工具实现全流程串接,通过条目化管理实现管理粒度细化,通过数据集中实现工作即监控,通过灵活的版本管理打通计划与交付,通过自动化检查实现更有效的质量管理让北京银行的研发管理更加统一协作、数据集中、流程规范,配置灵活和自动高效。我们还将覆盖更多角色、覆盖更多场景、进行更深度实践,沿着敏捷与DevOps之路继续前行,探索商业银行的敏捷转型最佳实践。


640?wx_fmt=png

 

备注:

 

TFS 全称是Team Foundation Server 是微软部署在企业本地的DevOps 工具链平台;其在2019版本将更名为Azure DevOps Server. 所以在本文中Azure DevOps Server TFS 交替出现。


640请扫描文末的二维码,报名加入【DevOps+LIVE直播分享群】,即可获得本文PPT的下载地址。


相关文章


  • 一种适用于大规模应用系统双模研发的GIT分支模型(下篇)

  • 一种适用于大规模应用系统双模研发的GIT分支模型(上篇)

  • 微软改名部门又一力作:VSTS改名为 Azure DevOps

  • DevOpsDay回顾: 传统金融业如何挑战互联网

  • 如何选择适合自己的Team Foundation Server部署方案

  • 来自PMO的反击

  • “五型五秀”: 满眼生机转化钧,天工人巧日争新 ——C3“全场景配置管理+持续集成”探索实践之路

  • 【过程瞭望】从理论到实践,平台部敏捷践行落地

  • “看板”-一种敏捷思想的最佳实践


640?wx_fmt=gif


DevOps+LIVE直播

基于Azure DevOps的容器化流水线搭建


本次技术大会我们还完成了 Azure DevOps Server 的动手实验,但是因为实验时间有限,很多小伙伴都没有能够完成整个实验。因此,我们将邀请leansoftX.com研发总监周文洋为我们通过DevOps+LIVE直播为大家再做一次分享。


直播时间

2018年10月31日 晚8点30分


报名方式

请加【DevOps社区运营助手】微信,发送:直播报名 即可拉入直播分享群。


640?wx_fmt=png


640?wx_fmt=gif


大波福利来袭


参与DevOps+LIVE的小伙伴将有机会获得11月2日在深圳举办的DevOpsDays活动免费门票一张,我们这次将送出20张免费门票。


640?wx_fmt=png


参与啊DevOps+LIVE直播的小伙伴也将获得Azure DevOps Server环境的免费使用权,试用期限为5天。


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020牛客国庆集训派对day4 Emergency Evacuation

Emergency Evacuation 题意: 有n个人在不同的位置上,在最后面有一个出口exit,所有人都要逃离出去(走出出口),且每个格子最多容纳一个人,当有人挡在前面时,后面的人必须停留&#x…

【活动(广州)】MonkeyFest2018 微软最有价值专家讲座

MonkeyFest2018微软最有价值专家讲座Monkey Fest 是一个一年一度由全球Microsoft Xamarin跨平台开发者发起的全球性社区活动,主要是推广在云、人工智能、大数据、移动开发等技术。本次活动同时在新加坡,美国,日本,加拿大&#xff…

互联网公司为什么普遍996而不是666

根据skinshoe wu的遭遇,解释一下互联网行业的12小时工作制以及996。题目说的有点绝对,这里先澄清一下:有的公司是10106,9106,10126,995,甚至955,007的都有,我只说大多数&…

IdentityServer4之JWT签名(RSA加密证书)及验签

一、前言在IdentityServer4中有两种令牌,一个是JWT和Reference Token,在IDS4中默认用的是JWT,那么这两者有什么区别呢?二、JWT与Reference Token的区别1、JWT(不可撤回)  JWT是一个非常轻巧的规范,一般被用来在身份提…

.NET Core使用IO合并技巧轻松实现千万级消息推送

之前讲述过多路复用实现单服百万级别RPS吞吐,但在文中有一点是没有说的就是消息IO合并,如果缺少了消息IO合并即使怎样多路复用也很难达到百万级别的请求响毕竟所有应用层面的网络IO读写都是非常损耗性能的(需要硬件配置很高的服务器)。这一章…

天气情况图像分类练习赛 第三阶段(赛中感)

第三阶段也是实战阶段,不同于前两个阶段的填空而是实打实的预测分析 题目会给出8000张照片数据,其中6000作为训练集而另外2000张作位测试集,通过对6000张的训练来预测2000的结果,并将结果输出到csv文件中,提交检验成功…

一码阻塞,万码等待:ASP.NET Core 同步方法调用异步方法“死锁”的真相

在我们 2015 年开始的从 .NET Framework 向 .NET Core 迁移的工程中,遇到的最大的坑就是标题中所说的——同步方法中调用异步方法发生”死锁”。虽然在 .NET Framework 时代就知道不能在同步方法中调用异步方法,但我们却明知路有坑,偏向此路行…

take

take 题解参考 题目描述 Kanade has n boxes , the i-th box has p[i] probability to have an diamond of d[i] size. At the beginning , Kanade has a diamond of 0 size. She will open the boxes from 1-st to n-th. When she open a box,if there is a diamond in it an…

将传统 ASP.NET 应用迁移到 .NET Core

点击蓝字关注我现在越来越多的人在谈论. NET Core。诚然,.NET Core 是未来, 但是.NET Framework 仍在支持, 因为大量的应用程序无法在短时间内迁移。.NET Core 和 .NET Framework 就像电动汽车和汽油动力汽车。汽油车是成熟的,你可以毫无任何问题驾驶它&…

[翻译] 初看 ASP.NET Core 3.0 即将到来的变化

原文: A first look at changes coming in ASP.NET Core 3.0在我们努力完成下一个 minor 版本的 ASP.NET Core 的同时,我们也在对下一个 major 版本进行更新,其中包括如何使用框架组合项目、更紧密的 .NET Core 集成以及第三方开源集成,所有这…

aspnet core 2.1中使用jwt从原理到精通二

在aspnet core中,自定义jwt管道验证有了上一节的内容作为基础,那这点也是非常容易的,关键点在中间件,只是把上一级在测试类中的自定义验证放到中间件中来即可,不过需要注意:中间件 的位置很重要&#xff0c…

CentOS开发ASP.NET Core入门教程

因为之前一直没怎么玩过CentOS,大多数时间都是使用Win10进行开发,然后程序都部署在Window Server2008或者Window Server2012上!因此想尝试下Linux系统。最后经过选型选了比较流行的CentOS系统。正好,今晚要加班,所以在…

工厂参观记:.NET Core 中 HttpClientFactory 如何解决 HttpClient 臭名昭著的问题

在 .NET Framework 与 .NET Core 中 HttpClient 有个臭名昭著的问题,HttpClient 实现了 IDispose 接口,但当你 Dispose 它时,它不会立即关闭所使用的 tcp 连接,而是将 tcp 连接置为 TIME_WAIT 状态,240秒(4…

ASP.NET Core2读写InfluxDB时序数据库

在我们很多应用中会遇到有一种基于一系列时间的数据需要处理,通过时间的顺序可以将这些数据点连成线,再通过数据统计后可以做成多纬度的报表,也可通过机器学习来实现数据的预测告警。而时序数据库就是用于存放管理这种有着时间顺序数据的&…

Nature 新研究发布,GPT 驱动的机器人化学家能够自行设计和进行实验,这对科研意味着什么?

文章目录 前言揭秘Coscientist不到四分钟,设计并改进了程序能力越大,责任越大 前言 有消息称,AI 大模型 “化学家” 登 Nature 能够自制阿司匹林、对乙酰氨基酚、布洛芬,甚至连复杂的钯催化交叉偶联反应,也能完成。 …

SmartCode 常见问题

SmartCode 能干什么?SmartCode IDataSource -> IBuildTask -> IOutput > Build EverythingSmartCode的执行流是 数据源->构建任务->输出,也就是说应用场景非常广泛。从DB读取数据结构,最终生成整个解决方案代码生成器&#x…

全面支持开源,微软加速 Visual Studio 和 Azure DevOps 云升级

在 2018 微软技术暨生态大会(Microsoft Tech Summit)上,微软宣布围绕 Visual Studio 和 Visual Studio Code 开发平台提供一系列新功能与服务,并对 Azure DevOps 研发云进行整合升级,通过 Visual Studio 开发平台与微软…

HttpClient参观记:.net core 2.2 对HttpClient到底做了什么?

.net core 于 10月17日发布了 ASP.NET Core 2.2.0 -preview3,在这个版本中,我看到了一个很让我惊喜的新特性:HTTP Client Performance Improvements ,而且在Linux上性能提升了60% !之前就一直苦于 HttpClient 的糟糕特性&#xff…

后缀数组(讲解)

子串:从原串中选取连续的一段,即子串 空串也是子串 后缀:suf(k)为s(k…n)构成的子串 任何子串都是某个后缀的前缀 最长公共前缀 lcp(suf(i),suf(j)) 问题: 将所有后缀suf(1),suf(2),suf(N)按照字典序从小到大排序 暴力sort N2 …

2018 上海.NET职位围观报告

我一直说我是夏眠动物,如今已经11月份了,差不多也该活过来了,所以我决定写篇文章给各位.NET的支持者们和公司打打气,也算是为社区做点贡献吧。我最近主要干了两件事:让NPOI支持.NET Core,现已发布2.4版本。…