如何打造7*24h持续交付通道?阿里高级技术专家的5点思考

本文涉及的产品
云效 DevOps 流水线,基础版人数 不受限
云效 DevOps 测试管理,基础版人数 不受限
云效 DevOps 制品仓库,基础版人数 不受限
简介: 云效鼓励师导读:打造7*24小时的持续交付通道是很多技术团队梦寐以求的事情,那么如何才能实现呢?阿里高级技术专家施翔带来了他的思考。 此外,文末我们还为大家首次推出了阿里敏捷教练团队倾心打造的提升研发效能36计课程之“看板+站会”相关内容课程,欢迎报名。

dc2e2b5a887575d12cb596cbeda24a33c9d51ec0

扫码或点我直达 免费领取!


我们对于研发效能的讨论,本质上是提高整个技术生态中的协同效率。如果仅从研发角度出发,技术团队要实现的终极目标是7*24小时的灵活发布窗口,以及更快的业务迭代能力。

7*24小时发布窗口的实现其实并不简单,受限于很多因素。我简单的进行了分解。

 

5cec8f79f4a805d8770c89e6ceb5483d20536cc3


 

一、系统


先从最基础的开始说,当一个创业团队只有几个人,一两个系统的情况下,是可以不考虑研发效率这回事的。因为不存在系统间的依赖,系统内的依赖也完全在一个可控的范围内,本地起一个 Tomcat 或 Apache 就能开发、调试。另外再加上团队成员之间的高频交流,基本上可以实现随时随地,想发就发的要求。

f05b87f2249bdc5dfd405d5d18f65c369fb31000


 

当业务逐渐复杂,开发人数扩展到10几人时。提效的第一步是理清系统内的依赖关系,并促进角色的专业化。这也是大家所熟知的MVC,通过对视图、模型、控制器的分离,对系统内的逻辑进行分层。把复杂的代码逻辑下沉到Model层,而视图层交由更专业的前端来负责。


82e2e7cb8f1057bb79679ceed7871027b594105c

 

当然,在系统内部仍然有一些扩展的空间,比如模块化,为不同的业务划分bundle等。但仍然没有突破本身的瓶颈,而且单一的系统也很难突破机器的特理特性。

 

二、架构


当技术团队已经达到几十上百人的规模,当业务已经无法通过单一的应用来进行水平扩展时。分布式的架构是解决问题的有效手段。在07年时,阿里集团就在推进SOA化,无论是淘宝还是支付宝,原来的单一应用不断被拆分出来,也在此时,承载服务化中枢的消息等中间件蓬勃发展。


43cf6c1751f4f378c471de8b900e79a35af777df



这种方式,实现了系统之间的解藕,激活了技术人员的生产力,同时增大了系统的弹性,实现了服务能力的低成本水平扩展。但因为复杂的调用关系,对于某一个贯穿多个应用的项目来说,无疑增加了集成的成本和质量的风险。


同时,如果对应用规模不加以规划和控制的话,会导致应用数的不断扩张,从而影响到整体的开发维护成本。

 

三、配置管理


阿里在5到10年前,是有一个专门的岗位叫SCM的,负责技术团队内的代码管理,配置项管理和应用部署。特别是在服务化初期,开发人员的coding生产力被极度释放,应用数出现一个井喷,对配置管理的需求不断增强,并最终促使了配置管理的变革(截止到目前,专职的SCM团队被“消灭”了)。

 

在讲配置管理前,先讲讲代码分支管理机制。这也是很多研发模式变革的起点。在此,我先表达自己的观点:没有对与错(先进与落后)的代码分支管理机制,只有适不适合自己团队当下以及未来发展的管理模式。


先从大的层面上来说,我们当前所讨论的都是为了解决并行开发的问题,即有多个项目或团队对于同一系列应用进行功能开发。如果仅仅是串行开发,是基本不用太考虑代码管理策略。


1、分支开发、主干发布。核心理念是使用固定的主干作为集成分支。使用分支进行开发,在合并到主干分支后生命周期终止。当然除此之外,还有紧急发布分支等。


010d5fedc314ecbb519b2ebed41a59c9259ae0bb


2、分支开发、分支发布。发布成功后执行写基线操作,确保主干的及时更新和稳定。同时分支发布的方式不依赖于大集成,保持很强的灵活性。


a932c75e023bf59e1dab25433717d06c97e1e1f3

 

体现在项目上的流程为:


a1c2f9d84a356b7042d4607f73f7234533047763


3、其他模式:主干开发、分支分布等。由于我们并不常用,所以略过。


相关阅读:在阿里,我们如何管理代码分支

 

平台化的支持:早期配管的人肉化,也造成了代码集成和部署的效率很低。不同角色之间的协同靠人来完成。因此在那个背景下,还需要一个配套的PMO组织来保障。在这样一个历史背景下,Aone(对外叫云效)也孕育而生,从平台化的角度来解决研发过程的协同、构建、集成和测试几个复杂的过程。


为了更清楚的了解那个时期的痛点,我找了2009年左右的Aone(云效)的蓝图,可以管中窥豹(这个时期我并没有亲自经历过,只是针对于当时的老人做了些访谈和收集了一些资料)。我猜想也正因为这条道路面向未来解决问题造就了现在的Aone平台(云效)


 

a39c0e994ead429ac11770ac59327dbde7eb4cc0

 

四、测试


当一个技术团队小,负责应用少以及业务的用户群体少时,是完全可以不用测试的。只有当业务发展到一定阶段,用户对于质量的容忍程度越来越低时,才引入专业的测试角色。其次,在软件离线交付阶段,由于软件的召回成本很高,所以对于测试是不遗余力的,但随着在线交付时代的深入,测试团队是否能够快速的实现软件质量的评测反馈,成为一个非常关键的问题。而也决定着,在打通上述各个环节后,7*24小时软件持续交付通道是否能够真正实现。

 

在讲之前,我们再回顾一下上个章节。Aone(云效)平台实现了开发代码、配置、应用部署的在线化,现在只剩下最后的一环——测试。从2010年以来,B2B的测试团队就希望可以把分层自动化平台跟Aone(云效)研发协作平台绑定在一起,通过系统调用的方式来实现一个测试的快速验证机制,并最终实现回归测试过程中的无人值守。


76fd4426f997db3a6c72510e47e9be1bee76ee7d

 

这个意义非常重大。应用的服务化后,技术的风险实际上是收敛的,大家都可以面向服务来进行开发,实现高内聚、构耦合。并且应用的发布也更加灵活了。但对于测试来说,却是极大的挑战:


1、测试的层次增加了。

2、测试的轮次变多了。每次集成,每次发布就有可能是一次完整的测试回归。

 

8c8ada5bcfb6df3cca3487c37b3b759db1c1facf


就如Aone(云效)的推进间接取替了SCM这个角色一样。研发平台的快速发展和业务7*24小时发布的述求,也开始冲击测试在代码集成后的快速反馈能力。这是一个挑战,也是一个机会。否则,前期释放出来的所有生产力,最后全都被卡在了测试这最后一个环节,而且没有办法拆解(每拆解出来一个,测试工作量就增加一倍)。只能通过不断叠加集成的应用量来提高集成测试的效率。


66d02244133cb74ed647091c0db03de88d89d69a

经过1688测试团队几代同学的努力,现在我们在这个方面总算有了些成绩。我们已经通过分层自动化体系实现了60%以上发布测试的无人值守,并且全年拦截故障在数百个级别(含页面、UI等)。

28319bb141decb48b2b11d7d017e5dd33ae32c85



它的实现逻辑如下:


02ec7c5998ce16de9990cb7132d8d1d7ee2557f7



五、文化


至此,真正所谓的7*24小时业务的持续交付通道已经完全打造出来。


80aace51d7c3caaf02df176c3021d1bc492c7488

<Aone/云效流程图>

 

我们再回顾一下:


1、应用内的架构分层,前端、后端、测试各应其职,通过专业化的力量激发了一轮生产力。


2、服务化的架构,让技术人员可以面向服务来进行业务的开发,实现了架构上的高内聚低耦合。进一步释放大规模技术团队的活力。


3、研发平台的搭建,提供了持续交付管道,实现了开发、测试过程的快速、准确传递。


4、依托于研发平台,实现了环境的自动化部署,应用监控,代码检查。扫除了研发过程的基建设施。让技术人员聚焦于代码的生产。


5、测试自动化验证体系,减少系统集成风险,提高集成的频率。最终实现了代码的快速上线。


作者简介


施翔,毕业于南昌大学,现就职于阿里巴巴新零售技术事业群CBU技术部,担任高级专家职务,负责质量技术、系统稳定性和DevOps团队。过去曾就职于中兴通讯、支付宝等公司,善于通过技术手段解决研发环节质量问题,在系统高可用、测试工具研发、研发效率提升等方面有着丰富的经验。


提升研发效能36计


阿里内部研发效能提升系列课程首次对外

明星讲师——阿里巴巴云效敏捷教练何勉亲自授课,

理念+实操:被阿里验证过的研发效能提升实践


9a303a9b75eb949a28b830450a6f5c89d0b5d2be


直播大纲:

 

(1)不要做路灯下的醉汉——如何应用看板,“照亮”效能问题所在

 

(2)束水攻沙——如何控制在制品(并行需求)数量,让需求更加持续、快速地流动

 

(3)高效的每日展会——站会的核心是什么?如何让站会更高效


直播报名请前往“看板+站会”或钉钉扫描下方二维码,加入阿里研发效能交流群

62efc6fdb131e7335a11871a4eebe11591af652d

关注云效公众号,获取更多阿里研发效能提升干货


相关实践学习
流水线运行出错排查难?AI帮您智能排查
本实验将带您体验云效流水线Flow的智能排查能力,只需短短1-2分钟,即可体验AI智能排查建议。
ALPD云架构师系列 - 云原生DevOps36计
如何把握和运用云原生技术,撬动新技术红利,实现持续、安全、高效和高质量的应用交付,并提升业务的连续性和稳定性,这是云原生时代持续交付共同面对的机会和挑战。本课程由阿里云开发者学堂和阿里云云效共同出品,是ALPD方法学云架构师系列的核心课程之一,适合架构师、企业工程效能负责人、对DevOps感兴趣的研发、测试、运维。 课程目标 前沿技术:了解云原生下DevOps的正确姿势,享受云原生带来的技术红利 系统知识:全局视角看软件研发生命周期,系统学习DevOps实践技能 课程大纲: 云原生开发和交付:云研发时代软件交付的挑战与云原生工程实践 云原生开发、运行基础设施:无差别的开发、运行环境 自动部署:构建可靠高效的应用发布体系 持续交付:建立团队协同交付的流程和流水线 质量守护:构建和维护测试和质量守护体系 安全保障:打造可信交付的安全保障体系 建立持续反馈和持续改进闭环
相关文章
|
新零售 测试技术 持续交付
阿里如何定义团队的研发效能?
作者:何勉,阿里巴巴研发效能部资深技术专家 相关阅读:都996了,研发效能还是提不起来,关键在这里 因为身处研发效能部,我接触了公司很多产品技术团队。他们几乎都把研发效能提升列为了本财年的重要目标,大部分还为此成立专项。
19048 3
阿里如何定义团队的研发效能?
|
架构师 开发者 运维
开发人员各级岗位胜任力模型
上个月,我写了一篇《架构设计师能力模型》,为开发者指出一些发展的方向、架构师的能力要求,以及需要学习的相关知识。 本月,我为公司的人力部门编制了更加量化的《2017年研发人员岗位能力模型 V1.4》。
10409 0
|
8月前
|
移动开发 数据可视化 前端开发
tmagic - editor:大厂开源项目,零代码/低代码页面可视化编辑的利器,多端统一方案揭秘!如何用一套代码支持H5/PC,牛牛牛~~~
腾讯推出的开源项目 **tmagic-editor** 是一款所见即所得的页面可视化编辑器,支持H5、PC、TV等多种页面类型。它已应用于腾讯视频会员、腾讯会议等业务,每月生产和发布数百个页面,极大提高了开发效率。通过简单的拖拽和配置,非技术人员也能轻松创建复杂页面。tmagic-editor 支持 Vue2/Vue3 和 React 等多种前端框架,并提供了丰富的扩展功能,满足不同业务需求。
817 3
|
缓存 前端开发 JavaScript
理解 React 的 Fiber 架构
【8月更文挑战第6天】 理解 React 的 Fiber 架构
770 1
|
JavaScript 前端开发 小程序
高德地图实现-逆地理编码-输入提示-地图标点-实现车库管理
高德地图实现-逆地理编码-输入提示-地图标点-实现车库管理
656 0
|
XML 监控 安全
Android App性能优化之卡顿监控和卡顿优化
本文探讨了Android应用的卡顿优化,重点在于布局优化。建议包括将耗时操作移到后台、使用ViewPager2实现懒加载、减少布局嵌套并利用merge标签、使用ViewStub减少资源消耗,以及通过Layout Inspector和GPU过度绘制检测来优化。推荐使用AsyncLayoutInflater异步加载布局,但需注意线程安全和不支持特性。卡顿监控方面,提到了通过Looper、ChoreographerHelper、adb命令及第三方工具如systrace和BlockCanary。总结了Choreographer基于掉帧计算和BlockCanary基于Looper监控的原理。
281 3
|
SQL JavaScript Java
StarCoder 2:GitHub Copilot本地开源LLM替代方案
GitHub CoPilot拥有超过130万付费用户,部署在5万多个组织中,是世界上部署最广泛的人工智能开发工具。使用LLM进行编程辅助工作不仅提高了生产力,而且正在永久性地改变数字原住民开发软件的方式,我也是它的付费用户之一。
615 0
|
数据安全/隐私保护 iOS开发 开发者
iOS App审核状态和审核时间管理指南
对于一款开发完成并准备上架的 iOS 应用程序来说,通过苹果公司的审核是非常重要的一步。苹果公司会对应用程序进行严格的检查,以确保应用程序的质量和安全性。本文将介绍 iOS 应用程序审核的流程和时间,希望能够帮助开发者更好地了解和处理审核过程中的问题。
|
Linux
Linux中执行cp命令复制时候出现错误及解决方法
Linux中执行cp命令复制时候出现错误及解决方法
1531 2
|
缓存 前端开发 Java
卡顿监测 · 方案篇 · Android卡顿监测指导原则
卡顿监测 · 方案篇 · Android卡顿监测指导原则
923 0
卡顿监测 · 方案篇 · Android卡顿监测指导原则