腾讯会议后台研发效能提升之路

博文小编

2022-11-18

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在精心设计的逻辑结构组织下,本书对效能实践、效能工具平台、效能度量方法及各个行业典型案例等进行既全面又有深度的解读。全书分为5篇共13章,包括近80个小节,每个小节都详细讲解了研发效能领域的某种具体方法、具体实践点或技术点。

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

(此全景图随书附赠)

京东限时下单立减100,快快扫码抢购吧!

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    5063 724 3 7
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    3101 36 0 1
  • czk 2017-07-29
    5325 28 0 1