研发效能分为两块,一是用技术的更新来提升效率;二是提高整个技术生态中的协同效率,激发技术活力。阿里巴巴技术团队在此基础上要实现的终极目标是打造7*24小时灵活发布的通道,以及提供更快的业务代码迭代能力。今天,阿里巴巴高级测试开发专家傲野为你带来关于研发效能的一些思考,希望对你有启发。

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

一、系统

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

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

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

二、架构

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

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

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

三、配置管理

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

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

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

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小时业务的持续交付通道已经完全打造出来。我们再回顾一下。

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

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

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

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

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

原文链接
本文为云栖社区原创内容,未经允许不得转载。

如何实现7*24小时灵活发布?阿里技术团队这么做相关推荐

  1. 阿里技术团队编写的对标金九银十大厂面试指南又在 git 上火了

    前言 又要到金九银十了,每年 9.10 月份各大互联网公司都会周期性地发生人事变动,无论是刚进社会的职场小白,还是准备跳槽的"外卖员",都会争取在这个时候获得新工作,或迎来晋升涨薪 ...

  2. AI自动播——AI虚拟主播帮你实现24小时直播带货技术分享

    如今很多淘宝天猫商家会在做直播的时候,会遇到真人主播难招或者真人主播直播时长有限,那么有什么办法解决这个难题呢,这个时候就可以用AI自动播了,也就是AI虚拟主播直播带货.具体怎么操作呢?下面一起来看看 ...

  3. 阿里技术团队是如何打造的?

    ‍ 来源:阿里巴巴中间件 01 我们经常会面对什么问题? 在互联网公司带过技术团队的人,或多或少会遇到这样一些问题: 1. 我们潜心研究的自认为高大上的项目成果,抬头看天的时候发现天已经变了,完全不能 ...

  4. 阿里技术团队的组件与团队管理的核心技能

    Photo @https://hackernoon.com/ 文 |威视 作者简介: 张荣,花名威视,现任职阿里巴巴 CRO 线 NLP 算法团队 leader ,长期聚焦于 NLP .图像识别.视频 ...

  5. 走进阿里:现任阿里技术团队负责人,公开解密阿里新一代核心技术

    前面不久,在京举行的中国数据库技术大会上,来自阿里巴巴集团研究员张瑞发表了题为<面向未来的数据库体系架构的思考>的主题演讲. 主要介绍了阿里数据库技术团队正在建设阿里下一代数据库技术体系的 ...

  6. 加入阿里技术团队三年,哪些习惯让我在工作上持续受益?

    2017年研究生毕业,我加入阿里巴巴数据库技术团队,从事分布式数据库研发,如今算来已经有三年时间了,在这期间,我深度参与了双十一背后的数据库PolarDB-X从设计到实现的全过程.在这三年的时间里,于 ...

  7. 开发加速使用maven国内源,感谢阿里技术团队,良心团队!

    2019独角兽企业重金招聘Python工程师标准>>> Maven阿里云中央仓库 maven作为一个项目管理工具确实非常好用,但是在国内这个网络条件下实在是让人恼火.之前oschin ...

  8. 阿里技术团队编写的“阿里巴巴 Java 面试参考指南(泰山版)

    这份文档由阿里巴巴架构师牵头,联合了部门上上下下 P6 - P8 级岗位众人的意见,1.0版本由此诞生.(这阵容,质量就不用我多说了吧)内容非常全面,主要是结合了互联网大厂的面试需求点,包含了: 分布 ...

  9. 首次公开,阿里技术团队编写的“大厂面试参考指南”v1.0版本

    有人调侃我们说: 程序员不如送外卖.送外卖是搬运食物,自己是搬运代码,都不产出新的东西-- 透支体力,又消耗健康,可替代性极强,30岁之后就要面临被优化的危险-- 想跳槽,但是更高的平台难进,同级别的 ...

最新文章

  1. 概率统计:第八章:假设检验
  2. 码农人生——从未学过Android如何开发Android App 案例讲解-第002期案例
  3. Java春招实习面试经验汇总,面试篇
  4. C++中的深拷贝和浅拷贝(详解)
  5. Android系统(20)---开发android项目的常用jar包
  6. UGUI- 单列列表(VerticalLayoutGroup)
  7. 2017/05/04 java 基础 随笔
  8. JAVA程序员,你读过这些书吗?
  9. 在玩图像分类和图像分割?来挑战基于 TensorFlow 的图像注解生成!
  10. 下载离线地图数据并搭建离线地图开发环境(一套代码支持谷歌、百度、高德等所有地图源)
  11. 码率多少算是正常的1080p_MP3的频率、比特率、码率与音质的关系(网络整理)...
  12. idea部署启动ssm项目
  13. 《计算机网络教程》(微课版 第五版)复习补充题
  14. 关于html的实训日志,满足你的甜蜜幻想, 《我与她的实习日志》登陆NS
  15. 微信小程序 防连点时间_微信小程序如何避免按钮多次点击重复触发事件
  16. 孤独者的自我救赎[自我的认知]
  17. 【matplotlib】饼图+legend()、loc、color位置颜色图例中文显示(一个饼图的例子)
  18. Superset系列9- 制作地图
  19. 19年 GSoC 中 Jenkins 的七个项目
  20. 数据结构实训-纸牌游戏

热门文章

  1. 计算机文化基础B卷期末,《计算机文化基础》上机试卷B
  2. 找通项公式在线计算机,在线硬盘分区计算器工具
  3. python登录并关注公众号_python微信公众号之关注公众号自动回复
  4. 高度为5的3阶b树含有的关键字个数_数据结构要考得好,你心里要有B树
  5. 松阳天气预报软件测试,松阳天气预报15天
  6. java floyd_百度百科里面的floyd算法java的代码,总是无法运行。请问是代码有问题吗,如何编译啊?...
  7. 正交变换在基下的矩阵都是可逆阵_矩阵分析与应用(一,矩阵基础知识)
  8. linux 优先级必须为整数,进程友好性(优先级)设置对Linux没有影响
  9. 数学 :追求真和美的学问
  10. 特朗普为何喜欢马云?阿里巴巴开始拯救美国企业