在碰撞中成长 - 北京银行的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,一经查实,立即删除!

相关文章

【笛卡尔树】【线段树】meetings 会议(P5044)

正题 P5044 题目大意 给出一个序列a,设 dist(x,y)max⁡ixyaidist(x,y)\max_{ix}^ya_idist(x,y)maxixy​ai​,有m个询问,对于每个询问,给出 l,r,让你找一个点x(l≤x≤r)(l\leq x\leq r)(l≤x≤r),使得 ∑i…

codeforces438 D. The Child and Sequence

2020威海区域赛G. Caesar Cipher就用到了此思想&#xff08; 今天碰到模板题了还是再写一遍吧 D. The Child and Sequence 区间取模操作模板题 有一个公式 x%p<x2(x>p)x\%p<\frac{x}{2}(x>p)x%p<2x​(x>p) 由此对于每一个数最多模log次&#xff0c;如果我们…

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

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

P3170-[CQOI2015]标识设计【插头dp】

正题 题目链接:https://www.luogu.com.cn/problem/P3170 题目大意 给出n∗mn*mn∗m的网格上有一些障碍&#xff0c;要求用三个LLL形&#xff08;高宽随意&#xff0c;不能退化成线段/点&#xff09;覆盖格子且LLL形之间不能重叠。 求覆盖方案&#xff08;每个LLL形相同&…

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

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

【数学】Natasha, Sasha and the Prefix Sums(CF1204E)

正题 luogu CF1204E 题目大意 给出序列a&#xff0c;由n个1和m个-1组成&#xff0c;设 f 为最大前缀和和0的最大值&#xff0c;问全排列的 f 之和 解题思路 可以问题转换到平面图上&#xff0c;把1看作往上走&#xff0c;-1看作往下走 那么问题就变成了求 (0,0) 到 (nm,n-m…

codeforces1454 F. Array Partition

这周忙死&#xff0c;一直没机会吧补一下题&#xff0c;周二晚上打的div3&#xff0c;过了A~E&#xff0c;F就看了下题目就没时间了&#xff0c;无聊的时候想应该会用到ST表&#xff0c;然后想要维护指针&#xff0c;后来写的时候发现维护不了&#xff0c;然后就歇菜了。。。 …

2020牛客国庆集训派对day4 Arithmetic Progressions

Arithmetic Progressions 链接&#xff1a;https://ac.nowcoder.com/acm/contest/7831/B 来源&#xff1a;牛客网 题目描述 An arithmetic progression is a sequence of numbers a1, a2, ..., ak where the difference of consecutive members ai1−ai is a constant (1 ≤ …

P4457-[BJOI2018]治疗之雨【期望dp,高斯消元】

正题 题目链接:https://www.luogu.com.cn/problem/P4457 题目大意 开始一个人最大生命值为nnn&#xff0c;剩余hphphp点生命&#xff0c;然后每个时刻如果生命值没有满那么有1m1\frac{1}{m1}m11​的概率回复一点生命&#xff0c;然后敌人攻击kkk次&#xff0c;每次有1m1\frac…

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

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

【DP】【四边形不等式】邮局(P4767)

正题 P4767 题目大意 给出坐标轴上的n个点&#xff0c;让你选择m个点作为特殊点&#xff0c;使所有点到最近特殊点的距离之和最小 解题思路 考虑对于一个区间选择一个特殊点的最小代价&#xff0c;可以把所有点到当前点的路径分割开来&#xff0c;即每段距离走的次数为1,2,3…

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

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

2020牛客国庆集训派对day4 What Goes Up Must Come Down

What Goes Up Must Come Down 题意&#xff1a; 我们规定一个序列合理&#xff1a;当一个序列左部分是非降序列&#xff0c;右部分是非升序列&#xff08;左右部分可为0&#xff0c;也就是整体可以为非降序列&#xff0c;非升序列&#xff09; 题解&#xff1a; 树状数组来…

codeforces1451 E. Bitwise Queries(位运算妙用)

E1. Bitwise Queries (Easy Version) ab(a&b)(a∣b)ab(a\&b)(a|b)ab(a&b)(a∣b) 根据上述式子用333次$&和333次∣|∣操作求出a1a2,a2a3,a1a3a_1a_2,a_2a_3,a_1a_3a1​a2​,a2​a3​,a1​a3​由此得出a1,a2,a3a_1,a_2,a_3a1​,a2​,a3​ 根据a1⊕aixa_1\oplus a…

P4240-毒瘤之神的考验【莫比乌斯反演,平衡规划】

正题 题目链接:https://www.luogu.com.cn/problem/P4240 题目大意 QQQ组数据给出n,mn,mn,m求 ∑i1n∑j1mφ(ij)\sum_{i1}^n\sum_{j1}^m\varphi(i\times j)i1∑n​j1∑m​φ(ij) 1≤Q≤104,1≤n,m≤1051\leq Q\leq 10^4,1\leq n,m\leq 10^51≤Q≤104,1≤n,m≤105 解题思路 首先…

【最小生成树】水箱(P5952)

正题 P5952 题目大意 有一个n*m的网格&#xff0c;每个网格之间有一个板&#xff0c;给出每个板的高度&#xff08;边界有一个高度为 ∞\infty∞ 的墙&#xff09;&#xff0c;在每个网格中注水&#xff08;必须是非负整数&#xff09;&#xff0c;使得两个高度不等且相邻的网…

2020牛客国庆集训派对day4 Jokewithpermutation

Jokewithpermutation 题目描述 Joey had saved a permutation of integers from 1 to n in a text file. All the numbers were written as decimal numbers without leading spaces. Then Joe made a practical joke on her: he removed all the spaces in the file. Help Jo…

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

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

codeforces1457 C. Bouncing Ball

写这个题写了1h&#xff0c;赛后无意看见jly神的代码只能膜拜%%% C. Bouncing Ball 预处理从1→k1\to k1→k开始跳需要添加多少个平台&#xff0c;预处从k1→nk1\to nk1→n这些不难发现由于每次跳k格&#xff0c;只需要利用前缀和思想和前面预处理的结果即可做差求出。 然后枚…

P4491-[HAOI2018]染色【二项式反演,NTT】

正题 题目链接:https://www.luogu.com.cn/problem/P4491 题目大意 给nnn个物品染上mmm种颜色&#xff0c;若恰好有kkk个颜色的物品个数为SSS那么就会产生WkW_kWk​的贡献。求所有染色方案的贡献和 1≤n≤107,1≤m≤105,1≤S≤1501\leq n\leq 10^7,1\leq m\leq 10^5,1\leq S\l…