从字面上看,研发效能追求的是“效率”,但是脱离目标谈效率是没有意义的。从研发的角度看,软件的意义就是交付用户和客户的所需,从而产生价值。因此,研发效能就是更快地为软件的用户或客户交付价值。这里的价值包括以下几个方面。

有效性:让业务交付的服务与客户的需求及市场更加匹配,即对不对的问题。

质量:提升业务的安全性和可靠性、用户体验等,即好不好的问题。

效率:提升研发运维和变更的效率,即快不快的问题。

2021 年,腾讯 CSIG 技术委员会成立了研发效能提升组,基于腾讯云的技术标准化,以CODING 为底座,建设了统一的 DevOps 平台,集成从需求、代码、制品到云原生部署研发运维全生命周期的工具能力,基于工作流帮助业务实现研发运维过程的自动化,提升软件研发效率和质量。

下面介绍腾讯会议在研发效能项目中的实践经验,希望对同样走在研发效能提升道路上的你有所借鉴与帮助。

1

腾讯会议研发效能建设前概况

腾讯会议作为行业领先的云视频会议产品,为企业混合式办公、会议室协作,以及各类垂直场景提供高清流畅、便捷易用、安全可靠的连接模式,虽然经常被大家调侃为“只有三个按钮的 App”,但具有十分便捷的入会体验,且极大地提升了协作效率。

腾讯会议于 2019 年年底上线,面对疫情期间用户需求的爆发式增长,小步快跑,通过App Store 可以看到腾讯会议的迭代频率:在刚上线的 100 天内,快速迭代了 20 多个版本,下图是腾讯会议的发展历程。

随着产品的持续发展,腾讯会议在 2020 年下半年已经拥有了云会议、腾讯会议 Rooms、会议室连接器、开放平台 4 个产品线,随着团队规模和业务规模的扩大,团队协作的复杂性不断提高,导致研发效率降低。

如下图所示,2021 年年初研发效能专项建设前的数据显示,腾讯会议的团队规模与业务规模迅速扩大,但随着业务与协作复杂性的增加,研发效率却出现明显的下降,而导致研发效率下降的主要原因,相信也存在于大多数研发团队中。

腾讯会议的研发流程主要分为开发、测试、部署、运营 4 个部分,它们分别对应的领域存在以下问题。

开发域:技术栈不统一、流程化程度低、公共组件积累少。

测试域:环境单一、自动化程度低、测试工具不完善。

部署域:平台多、入口多、发布慢、回滚慢、没有门禁权限控制。

运营域:组件分散、定位时间长、自动化拨测覆盖率低。

生于云、长于云的腾讯会议,从规范和组件的建设开始,开启了研发效能提升之路。

2

腾讯会议研发效能改进历程

从 2020 年下半年开始,腾讯会议启动了基础建设与调研。2021 年,腾讯 CSIG 技术委员

会研发效能提升组成立,腾讯会议作为第一批试点业务团队,正式启动了研发效能专项,目标是通过半年的专项共建提升团队的整体研发效能,下图是研发效能建设规划。

腾讯会议研发效能体系建设分别从开发域、测试域、部署域、运营域 4 个方面输出解决方案,对存在的问题逐个击破。

开发

开发域的研发效能建设主要分为两个方向:标准化建设和工具建设。

腾讯高级管理顾问乔梁说:“一致性是效能提升的必经之路”。没有标准,散乱的微服务就如同一盘散沙,无法形成合力。这也是腾讯会议要从标准化建设入手建设研发效能体系的原因。

1)标准化建设

腾讯会议的标准化建设包括语言、框架和流水线。

(1)统一语言和框架

由于历史遗留等原因,腾讯会议存在技术栈不统一、缺乏统一规范的问题。

统一语言和框架可以大大减小开发差异和减少学习成本,也有利于团队内部研发进行组间流动和需求支持。从语言的角度看,没有任何一门语言能“一统天下”,但从腾讯会议的角度看,肯定有一门最适合腾讯会议目前现状的语言。

在研发效能建设专项成立后,腾讯会议对比了腾讯内部各业务的使用情况,分析了各门语言和框架在公共组件的适配程度,以及语言和社区的学习成本,最终选择公司内部主流的Golang + tRPC 分别作为开发基础语言和框架。

这时,又面临一个困难:若统一语言,那么存量的业务模块怎么办?

对此,我们采用的策略主要有阻断新增、限时重构,减少支持的力度。最终,腾讯会议采用Golang + tRPC的覆盖率已超过 95%,完美地实现了语言与框架统一的目标。下图所示为统一语言与框架图。

(2)统一流水线

在研发效能建设前,腾讯会议项目下有一百多种风格的持续集成(CI)流水线。在研发配置流水线时,由于对流水线的设计在很大程度上靠“觉悟”,因此统一流水线的建设其实是统一研发流程的起点,因为这是提升代码质量的切入口。比如,如果某个第三方组件存在安全风险,则可以通过在流水线上增加 Hook 来添加相关的校验规则。

腾讯会议通过标准化接入、统一基线流水线配置模板等方式,让流水线逐渐统一,达到控制提交代码质量、流程和规范的效果。

我们基于研发现状梳理了各条流水线的工作流,如下图所示,按照研发过程流水线被拆分为 5 条:开发流水线→提测流水线→合流流水线→主干流水线→预发布流水线。

  • 开发流水线:通过提交代码触发,在个人开发环境下完成代码扫描、单元测试,以及单组件冒烟自动化。

  • 提测流水线:通过扭转 TAPD 状态触发,在集成测试环境中完成产品 P0 用例自动化回归、开发自测,以及测试验证。

  • 合流流水线:通过 MR 触发,在集成测试环境中实现产品 P0 用例的自动化回归、CodeReview、自动打包。

  • 主干流水线:通过定时或提交代码触发,从而实现单组件 P0 用例回归、自动打包。

  • 预发布流水线:通过手动或者打标签触发,完成发布测试区、多产品 P0 用例自动化回归。

以开发工作流为例,统一流水线改造的内容,如下图所示。

(1)通过流水线模板创建开发流水线,确保执行的内容一致,也可以是一个代码库对应一条流水线。

(2)监视分支代码变更,有推送时自动触发。

(3)必要的门禁保障,如单元测试、代码分析等。

(4)环境部署建议通过子流水线来维护。

开发流水线实例,如下图所示。

2)工具建设

在工具建设方面,腾讯会议分别从服务脚手架、性能分析、接口即文档等方面进行了研发效能建设。

(1)服务脚手架

在进行研发效能建设前,团队研发人员经常反馈:项目从零开始搭建非常复杂,各个项目间的差异非常大,交接、维护成本高等。

在研发效能建设开展后,我们通过服务脚手架建设解决上述问题,服务脚手架实例如下图所示。

首先通过 CODING 平台的服务接口功能编写 PB 文件,然后根据基础项目模板一键生成项目代码。新生成的项目能直接部署、运行,并符合开源治理规范,便于进行后续的自动化流程,如代码质量检查、镜像构建等。

(2)性能分析

在性能分析中,腾讯会议的自研工具——火焰图可以与 CODING 应用管理无缝集成,做到一站式闭环。火焰图集成是 Golang 官方的性能调优利器,通过可视化能直观呈现 CPU 和内存等消耗情况,同时支持多维度在线性能分析,10 秒即可完成性能分析,对服务的关键指标和热点消耗做到一目了然。

(3)接口即文档

随着业务规模的迅速扩大,文档问题一直为大家所诟病,特别是在接口对接、联调过程中,“口口相传”成为常态。

研发效能建设开展后,腾讯会议通过自研接口,即文档工具,无缝闭环嵌入 CODING 应用管理。通过规范接口定义和注释说明,使定义 PB、定义接口自动生成对应的接口文档,从而实现一站式的统一管理,摆脱了“口口相传”的困境,也降低了沟通的信息差与成本。接口文档前后对比如下图所示。

测试、部署、运营这三部分更详细的解读推荐你阅读《软件研发效能权威指南》获取

3

腾讯会议研发效能经验总结

从对整个项目进行复盘的过程中,我们得到了以下经验。

1)流程建设

在流程建设方面,主要有内部推广和外部对接两个方面。

在内部推广时,CSIG 研发效能与腾讯会议形成接口人机制,并制定标准的对接流程:由架构组负责对外协调,组织内部接口人推广,接口人负责各个小组的实施落地。在外部对接时,制定了研发效能流程建设规范,每周组织例会沟通存在的问题与研发效能建设需求落地的进展情况。在风险控制方面,增加了各种机器人和监控,做到实施可观测;在度量方面,有多维度、可视化的度量指标,如发布频率、发布时长、发布前置时间等。下图所示是项目过程整体概览。

2)质量保证

由于腾讯会议的研发效能建设需要引进 DevOps 平台,因此组件之间的协调和磨合是不可避免的。比如,在组件的引进中,质量如何度量?有哪些验收标准?需要输出哪些报告?在此过程中,腾讯会议也踩过不少“坑”,最终总结出一些引用的规范与考量要点。比如:

  • 引进的功能是否符合腾讯会议的业务现状?

  • 组件性能是否满足或对齐业界的标准?

  • 组件容灾情况是否满足要求?

  • 使用后,成本是否能接受?

  • 引进后,对业务有何影响?是否符合预期?

当然,目前腾讯会议只是完成了阶段性目标,但对研发效能的追求是无止境的,且研发效能是随着项目的发展而持续迭代的。

我们针对接下来的研发效能建设也有一些新的设想,其中有的正在建设中,有的还在调研阶段,比如,测试左移、配置管理、秒级发布、变更体检、混沌工程等。随着腾讯会议规模的不断壮大,我们希望在研发效能方面做得更好,为业务的快速迭代提供支撑,也为更多需要进行研发效能提升的团队带来借鉴与参考。

以上内容节选自《软件研发效能权威指南》,这本书堪称研发效能领域的“百科全书”,涵盖了效能提升全生命周期的方方面面。

在精心设计的逻辑结构组织下,本书对效能实践、效能工具平台、效能度量方法及各个行业典型案例等进行既全面又有深度的解读。

本书特色

 作者阵容强大、背景资深

本书由QECon组委会组织,茹炳晟和张乐领衔主编,因为研发效能领域涵盖的内容非常广泛,个体的力量毕竟是有限的,为了让本书更有含金量,邀请了48位效能领域的专家共同撰写。

参与编写的作者都在研发效能领域深耕多年,具有丰富的、可落地的实践经验,每个人都贡献自己最擅长、最有经验的内容,历经无数次的内部审校和反复修改,耗时近一年半,终于成书。

全书分为5篇共13章,包括近80个小节,每个小节都详细讲解了研发效能领域的某种具体方法、具体实践点或技术点。

从底层逻辑、案例剖析到全景式思维导图“一网打尽”!

(此全景图随书附赠)

扫码或点击阅读原文

京东双11限时优惠

干货多多 强烈推荐

腾讯会议后台研发效能提升之路相关推荐

  1. CODING 最佳实践:快课网研发效能提升之路

    快课企业移动学习平台是上海快微网络科技有限公司自主研发的企业级 SaaS 平台,提供移动学习.考试练习.培训管理.知识分享.统计分析等学习和培训功能,为员工.经销商及客户等全价值链合作伙伴提供全面的知 ...

  2. CODING 最佳实践:快课网研发效能提升之路 1

    快课企业移动学习平台是上海快微网络科技有限公司自主研发的企业级 SaaS 平台,提供移动学习.考试练习.培训管理.知识分享.统计分析等学习和培训功能,为员工.经销商及客户等全价值链合作伙伴提供全面的知 ...

  3. 建设一站式DevOps平台,腾讯云研发效能提升实践

    本文作者:张渝 导语 | 近年来,研发效能提升越来越受到业界重视,许多厂商都在不断探索研发效能提升之路,从而实现研发效率和质量的持续优化,以应对日趋复杂的产品开发.那么腾讯云的研发效能相关工作是如何开 ...

  4. 字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验

    2022年6月25日,第一期字节跳动Dev Better技术沙龙活动如期在线上举行,近3000位开发者同学参与到交流与活动中,直播点赞量过万. 字节跳动Dev Better技术沙龙是字节跳动基础架构- ...

  5. 研发效能提升最佳实践的探索

    GIAC(GLOBAL INTERNET ARCHITECTURE CONFERENCE)是长期关注互联网技术与架构的高可用架构技术社区和msup推出的,面向架构师.技术负责人及高端技术从业人员的年度 ...

  6. 人力节省 50%,研发效能提升 40%,阿里 Serverless 架构落地实践

    作者 | 万佳 嘉宾 | 杨皓然(不瞋) 导读:云的下一波浪潮是什么?杨皓然称"是 Serverless".作为一名阿里老兵,他早在 2010 年即加入阿里云,曾深度参与阿里云飞天 ...

  7. 小程序 Serverless: 解放生产力,驱动研发效能提升

    摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日于上海如期举办.ATEC移动开发专 ...

  8. 小程序 Serverless: 解放生产力,驱动研发效能提升 1

    摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日于上海如期举办.ATEC移动开发专 ...

  9. 4种常见分支模式解析及优劣对比 | 研发效能提升36计

    摘要:4 种常见分支模式解析及优劣对比.团队研发的本质并不是团队规模越大,研发的效率就越高.我们以为团队规模越大,研发效率就会越高,可以做越多的东西,但是我们发现团队规模大到一定程度,整个研发效率是会 ...

最新文章

  1. opencv_python 读取4通道png图片
  2. C++ 在线编译器(支持 C++11)
  3. CG CTF CRYPTO easy!
  4. OpenGL depthclamp深度夹紧实例
  5. 我的世界1.11服务器咋发信息,我的世界进服务器怎么注册怎么发信息
  6. 汽车电子嵌入式技术篇(一) -CRC-8和CRC-16算法
  7. oracle报sp20042,oracle中ora-04301故障处理
  8. 问题:jquery event.which详解
  9. 自动化测试用例设计方法
  10. java通过qq邮箱发送_java通过qq邮箱发送邮件
  11. ug中文字大小设置_ug10.0工具条字体大小如何修改?
  12. IAU SOFA 软件包介绍
  13. 集成环信easeUI添加联系人详情页面ListView的显示处理步聚
  14. atcoder Beginner Contest 156 Roaming(组合数学 插板法)
  15. Bootstrap 字体图标和自定义矢量图标
  16. 召集各位软件开发大佬
  17. 第十三周 任务三
  18. 如何在OC类里 调用swift类
  19. 直播界要哭了!罗永浩进军电商直播:最可怕的对手,永远来自未知领域!
  20. [ACNOI2022]猜数

热门文章

  1. SOHO办公遭IBM叫停,为什么说它是创业大忌?
  2. 项目管理工具dhtmlxGantt甘特图入门教程(五):甘特图实例特点
  3. java压缩解压缩rar、zip文件
  4. mocha 测试 mysql_GitHub - nodejs-xx/lei: 整合Express mysql ioredis ejs 的一开发框架,使用mocha对api进行测试...
  5. 带你了解什么是MySQL数据库(一)
  6. strip,lstrip,rstrip,sprit(字符串处理)
  7. 数据库与身份认证 - 04
  8. 关于舆情系统的“准”
  9. 详解SMS2003部署Windows 2003
  10. 生信文献 | HOXC11作为一种新的致癌基因在人结肠癌和肾透明细胞癌中发挥作用​...