云效鼓励师导读:打造7*24小时的持续交付通道是很多技术团队梦寐以求的事情,那么如何才能实现呢?阿里高级技术专家施翔带来了他的思考。

此外,文末我们还为大家首次推出了阿里敏捷教练团队倾心打造的提升研发效能36计课程之“看板+站会”相关内容课程,欢迎报名。

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

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

一、系统

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

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

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

二、架构

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

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

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

三、配置管理

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

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

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

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

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

体现在项目上的流程为:

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

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

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

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

四、测试

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

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

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

1、测试的层次增加了。

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

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

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

它的实现逻辑如下:

五、文化

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

<Aone/云效流程图>

我们再回顾一下:

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

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

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

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

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

作者简介

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

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

  1. 阿里高级技术专家宋意:平凡人在阿里十年的成长之旅

    宋意 读完需要 14 分钟 速读仅需 5 分钟 阿里妹导读:不管是什么角色,成长是我们每个人都必须经历的过程.作为一个技术人,成长不仅是技术上的不断精进,也包括日常工作中的方方面面. 本文分享阿里巴巴 ...

  2. 阿里高级技术专家邱小侠:微服务架构的理论基础 - 康威定律

    邱小侠 阿里高级技术专家 读完需要 10 分钟 速读仅需 4 分钟 邱小侠,阿里巴巴集团客户体验事业群高级技术专家,阿里花名肥侠.2014年加入阿里巴巴,现在负责客户体验驱动及创新中心有关商家业务的开 ...

  3. 阿里高级技术专家张建飞:深度剖析领域模型vs数据模型的用法

    张建飞 frank 读完需要 21 分钟 速读仅需 7 分钟 阿里巴巴高级技术专家,著有图书<代码精进之路 从码农到工匠>,维护公众号<从码农到工匠> ID:craftsman ...

  4. 阿里高级技术专家箫逸:如何画好一张架构图?

    中生代技术 链接技术大咖,分享技术干货 全文:10000字 阿里妹导读:架构图是什么?为什么要画架构图?如何画?有哪些方法?本文从架构的定义说起,分享阿里文娱高级技术专家箫逸关于画架构图多年的经验总结 ...

  5. 阿里高级技术专家张建飞:面对复杂业务,if-else coder 如何升级?

    阿里高级技术专家 张建飞 Frank <从码农到工匠>作者 读完需要 7 分钟 速读仅需 3 分钟 阿里妹导读:针对业务在不同场景下的差异,我们常常会习惯性地使用 if-else 来实现不 ...

  6. 使用 KubeSphere 和极狐GitLab 打造云原生持续交付系统

    KubeSphere 简介 Kubernetes 是一个非常复杂的容器编排平台,学习成本非常高,KubeSphere 所做的事情就是高度产品化和抽象了底层 Kubernetes,是一个面向云原生的操作 ...

  7. 阿里高级技术专家至简: Service Mesh 在超大规模场景下的落地挑战

    至简 阿里云高级技术专家 读完需要 20 分钟 速读仅需 5 分钟 随着微服务软件架构在互联网企业的广泛实践,新一代微服务软件架构技术悄然兴起, Service Mesh 便是其中之一.根据 Link ...

  8. 阿里高级技术专家:整洁的应用架构“长”什么样?

    简介: 作者张建飞是阿里巴巴高级技术专家,入司6年,他创建了COLA.希望可以探索一套切实可行的应用架构规范,这个规范不是高高在上的纸上谈兵,而是可以复制.可以理解.可以落地.可以控制复杂性的指导和约 ...

  9. 阿里高级技术专家方法论:如何写复杂业务代码?

    阿里妹导读:张建飞是阿里巴巴高级技术专家,一直在致力于应用架构和代码复杂度的治理.最近,他在看零售通商品域的代码.面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题.结合实际的业 ...

  10. 阿里高级技术专家:研发效能的追求永无止境

    背景 大约在5年前,也就是2013年我刚加入阿里的时候,那个时候 DevOps 的风刚吹起来没多久,有家公司宣称能够一天发布几十上百次,这意味着相比传统软件公司几周一次的发布来说,他们响应商业需求的能 ...

最新文章

  1. ITK:在矢量图像上执行注册
  2. Java Project和Web Project
  3. cad考试题库绘图题答案_证券从业资格考试证券市场基本法律法规题库答案
  4. 1 State Hook
  5. jzoj1247-队列变换【字符串hash,二分】
  6. 不朽传奇-云计算技术背后的那些天才程序员:Qemu的作者法布里斯贝拉
  7. 使用pymysql进行数据库的增删改查
  8. Socket.io:有点意思
  9. 交换机 Telnet远程登录配置
  10. shell 日期格式化输出
  11. Linux命令行打开不了发行光盘RHEL_6.3 i386 Disc 1
  12. 蓝桥杯单片机温度传感器DS18B20(基于STC15F2K60S2)
  13. Win11谷歌的IDM插件用不了怎么解决?如何解决win11idm插件问题
  14. [Python版]2019税改税后工资计算法
  15. 使用GCC和Makefile编译c文件
  16. C++ 开源库,很完整介绍【转】
  17. 2022年CVPR挑战赛
  18. 研发管理心得,从技术小白做到CTO(研发总监)的辛酸之路
  19. 区块链和大数据结合方案
  20. class torch.optim.lr_scheduler.StepLR

热门文章

  1. FZU 2092 收集水晶 BFS记忆化搜索
  2. 创建一个WPF+EF应用程序
  3. modalTransitionStyle各种present效果
  4. SparkSQL UDF使用方法与原理详解
  5. [ACM训练] 算法初级 之 基本算法 之 枚举(POJ 1753+2965)
  6. UGUI ScrollRect使用
  7. TeamWork#3,Week5,The First Meeting of Our Team
  8. iOS.数据持久化.PersistenceLayer.属性列表
  9. 【Android开发】之Android环境搭建及HelloWorld
  10. SpringBoot热部署(实战)详解