导语
近年来,研发效能提升越来越受到业界重视,许多厂商都在不断探索研发效能提升之路,从而实现研发效率和质量的持续优化,以应对日趋复杂的产品开发。那么腾讯云的研发效能相关工作是如何开展和落地的呢?今天我们特邀了腾讯云研发效能工作组负责人、腾讯健康副总裁 张渝老师,他将带大家深入了解腾讯云研发效能提升之路,同时也给大家解读未来腾讯云研效的发展方向。
探析腾讯云研效痛点和解决思路
近几年,腾讯云在整个研发过程中遇到的痛点,在我看来主要可以归结为三点:标准规范、工具平台、文化宣传。具体而言,首先,由于腾讯云业务涉及的研发人员和业务产品数量庞大,而每个团队都有自己的规范和研发模式,但从整体上看,无论是在代码层还是工具层,我们都缺乏更高层次的统一标准和规范。
其次,此前腾讯云的工具平台并不完善,各种工具从需求到代码到 CI、CD 到线上部署都有,但是工具与平台之间互相割裂,没有形成统一整体,需求对接、代码管理、构建发布和运营数据监控都在不同平台上完成,从而导致效率降低。此外,腾讯云发展多年,一些工具平台年久失修,缺乏维护,且出现了重复建设的情况。对于新员工而言,面对众多平台和工具他们也有些不知所措。因此,我们必须尽快将这些平台纳入统一维护。
第三方面是文化宣传。我们希望在腾讯云内部,所有人都能认识到提高研发效能的重要性,并愿意投入更多精力共同建设。因此,在推进研发效能提升方面,我们采取三种方式:第一,制定统一的标准规范,使大家逐渐采用我们推荐的主流标准;第二,把工具平台做成一站式串联,形成一个统一的整个腾讯云共享的研效平台;第三,加强宣传引导,让大家共同关注和参与。可以说,研效的建设是研发管理、工具建设和文化宣传三者的共同作用结果。
针对上述存在的问题,我们主要的建设思路是采用金字塔模型,最终目标是在研效平台上实现从需求到最终运维的一体式全过程,提高一线研发和运维的幸福感。金字塔的底层是各种工具的完善,我们将挑选已有的主流工具加强自动化能力。第二阶段通过一站式门户将工具串联整合到平台上,实现从需求到最终监控的全过程。第三阶段将实践 DevOps 理念,尤其是从应用视角贯穿整个流程。最上层是价值体现,通过数据度量跟踪,来体现所有的研效提升工作是否符合预期,如果符合设想的轨道再往前推进。下图是腾讯云研效平台的理念和思路。
接下来将具体分解研效平台的各个层次和我们所做的工作。下图中左侧的导航栏集成了主要的研发过程和使用的工具,不仅仅是将入口统一在一起,更重要的是将各系统与腾讯云进行深度结合和打通,这是研效工作的基本要求。
第二个层级是 DevOps 信息集成。我们立项时就制定了与腾讯云原生的合作标准,与自研业务的云原生化并行,一方面是容器化云原生搬移,另一方面是研效工作的提升,帮助提高腾讯云自研产品的效率和质量。在 DevOps 中,强调了从应用管理的角度来看整个生命周期,以提高操作效率。从微服务代码框架到配置、后端云函数调用、协议管理、集成发布等,都通过平台完成,构建并发布到云上,支持公有和私有部署。
第三个层级是自动化。我们极力推崇自动化执行理念,并且在整个过程中,以底层为基础,尽可能实现状态流转之间的自动化操作。通过各种消息,触发各角色制订标准的工作流,从而实现持续的开发、测试和部署。
最后是价值度量。我们定义了几个核心指标来观测和跟踪,长期度量我们的价值,指引研效工作的持续改进和提升。我们订立了四个指标:部署频率、变更前置时间、变更失败率和服务恢复时间,这些指标直接反映了研发工作效率和质量。
腾讯医疗研效提升最佳落地实践
腾讯云在研效工作方面遇到的一些挑战和痛点,在推动具体业务落地实践上也存在。以腾讯医疗业务为例,我们发现在研发过程中,业务快速增长和复杂的业务逻辑导致了研发效率下降和问题定位困难等问题。
为了解决这些问题,我们采用了按域划分问题和分域解决的思路。具体来说,我们将研发团队分为开发域、构建域、测试域、部署域和运营域,并根据整个研发流程的生命周期,按域划分和解决问题。我们的解决方案包括统一代码规范、标准开发模式、自动化工具、持续集成、自动化回归测试、减少人工介入、建立可观测体系等。同时,我们也着重加强团队文化建设和技术交流,提升团队协作和合作效率,共同推动研效提升。
在具体业务落地实践研效提升方面,我们需要根据具体业务场景制定相应的研效提升策略,并结合团队实际情况和行业最佳实践,进行持续优化和升级。此外,我们发现研效提升需要全员参与和共同推动,而不仅仅是技术人员的责任和工作。因此,我们还需要加强团队培训和技术普及,提高团队整体水平,形成良好的研发文化和协作机制,以保证持续的研效提升和创新驱动。
在开发领域,缺乏统一的开发流程会导致测试阶段容易受到相互影响,出现测试环境覆盖等问题。此外,由于需求没有与分支形成绑定关系,代码追溯变更或问题排查会变得困难。团队刚刚成立时,因配合默契度不高也会导致协作效率低。为此,我们采取了三个措施:统一开发模式-分支开发、主干提测;将 TAPD 需求与分支绑定,解决追溯问题;引入特性开关以支持并行开发,从而提高效率并解决以前相互干扰的问题。
在服务治理方面,我们确立了一系列标准,如统一模块目录结构、为服务增加 DevOps 能力、以及统一组件等。我们还开发了标准组件,并将这些标准传达给团队,从而实现服务标准化。通过引入脚手架,我们实现了开发流程自动化并提高了效率,同时保证了质量和统一规范的目标。
在整个开发过程中,团队也在持续倡导和实践测试左移的概念,主要依靠单元测试和代码评审 CODING。通过 CODING 插件自建自动化流水线,将单元测试视为质量门禁。同时,我们在团队内部建立文化氛围,与员工激励相结合,以提高参与度。
在测试领域,我们主要面临环境管理方面的问题。为此,我们采用了增量复制和路由管理等改进措施来优化资源消耗和降低对业务的侵入。另外,在部署方面,我们提高了自动化运营覆盖率,通过流水日志自动生成测试用例,并借助公司工具平台实现了流量回放。在运营方面,我们使用腾讯云可观测以后,能够快速定位和解决问题,从而提高效率并降低复杂度。
综上所述,我们通过统一开发模式、规范、自动化脚手架、完善 CI/CD、强化单元测试、完善持续发布和构建流程等措施,在开发、构建、测试、部署和运营等领域不断创新,进而提高效率、降低成本,并优化了团队文化和运营管理体系。
腾讯云研效工作未来规划
目前,鉴于腾讯云已经实现了各工具域之间的互联互通,但在项目内部的互通以及项目之间的互通方面仍然存在一些缺失。因此,未来腾讯云的研效工作,我们的重点是致力于持续强化项目内部的互联互通,并在跨 BG 方面实现更多的效率提升。
此外,另一个维度则是扩展视角。目前,平台主要以应用为视角来组织连接各功能模块,那么我们的下一步计划是在此基础上扩展到项目视角,以了解各应用之间的关系。甚至我们可以从产品业务视角来看待多个项目之间的关联关系,探索进一步提升的空间。
简言之,只有抓住研发效能实践、平台、以及度量这三点,才能有效提升研效工作。我们整个研效的核心思路是通过研效实现,平台在此基础上输出核心研效指标,以推动业务方提高研效性能,最后使得正向增强回路。
毋庸置疑,研效提升是一项持续性工作,我们也十分期待通过研效提升,赋能腾讯云业务的进一步发展。