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

news2024/10/6 4:13:48

本文作者:张渝

导语 | 近年来,研发效能提升越来越受到业界重视,许多厂商都在不断探索研发效能提升之路,从而实现研发效率和质量的持续优化,以应对日趋复杂的产品开发。那么腾讯云的研发效能相关工作是如何开展和落地的呢?今天我们特邀了腾讯云研发效能工作组负责人、腾讯健康副总裁 张渝老师,他将带大家深入了解腾讯云研发效能提升之路,同时也给大家解读未来腾讯云研效的发展方向。

img

探析腾讯云研效痛点和解决思路

近几年,腾讯云在整个研发过程中遇到的痛点,在我看来主要可以归结为三点:**标准规范、工具平台、文化宣传。**具体而言,首先,由于腾讯云业务涉及的研发人员和业务产品数量庞大,而每个团队都有自己的规范和研发模式,但从整体上看,无论是在代码层还是工具层,我们都缺乏更高层次的统一标准和规范。

其次,此前腾讯云的工具平台并不完善,各种工具从需求到代码到 CI、CD 到线上部署都有,但是工具与平台之间互相割裂,没有形成统一整体,需求对接、代码管理、构建发布和运营数据监控都在不同平台上完成,从而导致效率降低。此外,腾讯云发展多年,一些工具平台年久失修,缺乏维护,且出现了重复建设的情况。对于新员工而言,面对众多平台和工具他们也有些不知所措。因此,我们必须尽快将这些平台纳入统一维护。

第三方面是文化宣传。我们希望在腾讯云内部,所有人都能认识到提高研发效能的重要性,并愿意投入更多精力共同建设。因此,在推进研发效能提升方面,我们采取三种方式:第一,制定统一的标准规范,使大家逐渐采用我们推荐的主流标准;第二,把工具平台做成一站式串联,形成一个统一的整个腾讯云共享的研效平台;第三,加强宣传引导,让大家共同关注和参与。可以说,研效的建设是研发管理、工具建设和文化宣传三者的共同作用结果。

针对上述存在的问题,**我们主要的建设思路是采用金字塔模型,最终目标是在研效平台上实现从需求到最终运维的一体式全过程,提高一线研发和运维的幸福感。**金字塔的底层是各种工具的完善,我们将挑选已有的主流工具加强自动化能力。第二阶段通过一站式门户将工具串联整合到平台上,实现从需求到最终监控的全过程。第三阶段将实践 DevOps 理念,尤其是从应用视角贯穿整个流程。最上层是价值体现,通过数据度量跟踪,来体现所有的研效提升工作是否符合预期,如果符合设想的轨道再往前推进。下图是腾讯云研效平台的理念和思路。

img

接下来将具体分解研效平台的各个层次和我们所做的工作。下图中左侧的导航栏集成了主要的研发过程和使用的工具,不仅仅是将入口统一在一起,更重要的是将各系统与腾讯云进行深度结合和打通,这是研效工作的基本要求。

img

第二个层级是 DevOps 信息集成。我们立项时就制定了与腾讯云原生的合作标准,与自研业务的云原生化并行,一方面是容器化云原生搬移,另一方面是研效工作的提升,帮助提高腾讯云自研产品的效率和质量。在 DevOps 中,强调了从应用管理的角度来看整个生命周期,以提高操作效率。从微服务代码框架到配置、后端云函数调用、协议管理、集成发布等,都通过平台完成,构建并发布到云上,支持公有和私有部署。

img

第三个层级是自动化。我们极力推崇自动化执行理念,并且在整个过程中,以底层为基础,尽可能实现状态流转之间的自动化操作。通过各种消息,触发各角色制订标准的工作流,从而实现持续的开发、测试和部署。

img

最后是价值度量。我们定义了几个核心指标来观测和跟踪,长期度量我们的价值,指引研效工作的持续改进和提升。我们订立了四个指标:部署频率、变更前置时间、变更失败率和服务恢复时间,这些指标直接反映了研发工作效率和质量。

img

腾讯医疗研效提升最佳落地实践

腾讯云在研效工作方面遇到的一些挑战和痛点,在推动具体业务落地实践上也存在。以腾讯医疗业务为例,我们发现在研发过程中,业务快速增长和复杂的业务逻辑导致了研发效率下降和问题定位困难等问题。

为了解决这些问题,我们采用了按域划分问题和分域解决的思路。具体来说,我们将研发团队分为开发域、构建域、测试域、部署域和运营域,并根据整个研发流程的生命周期,按域划分和解决问题。我们的解决方案包括统一代码规范、标准开发模式、自动化工具、持续集成、自动化回归测试、减少人工介入、建立可观测体系等。同时,我们也着重加强团队文化建设和技术交流,提升团队协作和合作效率,共同推动研效提升。

img

在具体业务落地实践研效提升方面,我们需要根据具体业务场景制定相应的研效提升策略,并结合团队实际情况和行业最佳实践,进行持续优化和升级。此外,我们发现研效提升需要全员参与和共同推动,而不仅仅是技术人员的责任和工作。因此,我们还需要加强团队培训和技术普及,提高团队整体水平,形成良好的研发文化和协作机制,以保证持续的研效提升和创新驱动。

在开发领域,缺乏统一的开发流程会导致测试阶段容易受到相互影响,出现测试环境覆盖等问题。此外,由于需求没有与分支形成绑定关系,代码追溯变更或问题排查会变得困难。团队刚刚成立时,因配合默契度不高也会导致协作效率低。为此,我们采取了三个措施:统一开发模式-分支开发、主干提测;将 TAPD 需求与分支绑定,解决追溯问题;引入特性开关以支持并行开发,从而提高效率并解决以前相互干扰的问题。

在服务治理方面,我们确立了一系列标准,如统一模块目录结构、为服务增加 DevOps 能力、以及统一组件等。我们还开发了标准组件,并将这些标准传达给团队,从而实现服务标准化。通过引入脚手架,我们实现了开发流程自动化并提高了效率,同时保证了质量和统一规范的目标。

img

在整个开发过程中,团队也在持续倡导和实践测试左移的概念,主要依靠单元测试和代码评审 CODING。通过 CODING 插件自建自动化流水线,将单元测试视为质量门禁。同时,我们在团队内部建立文化氛围,与员工激励相结合,以提高参与度。

在测试领域,我们主要面临环境管理方面的问题。为此,我们采用了增量复制和路由管理等改进措施来优化资源消耗和降低对业务的侵入。另外,在部署方面,我们提高了自动化运营覆盖率,通过流水日志自动生成测试用例,并借助公司工具平台实现了流量回放。在运营方面,我们使用腾讯云可观测以后,能够快速定位和解决问题,从而提高效率并降低复杂度。

综上所述,我们通过统一开发模式、规范、自动化脚手架、完善 CI/CD、强化单元测试、完善持续发布和构建流程等措施,在开发、构建、测试、部署和运营等领域不断创新,进而提高效率、降低成本,并优化了团队文化和运营管理体系。

腾讯云研效工作未来规划

目前,鉴于腾讯云已经实现了各工具域之间的互联互通,但在项目内部的互通以及项目之间的互通方面仍然存在一些缺失。因此,未来腾讯云的研效工作,我们的重点是致力于持续强化项目内部的互联互通,并在跨 BG 方面实现更多的效率提升。

此外,另一个维度则是扩展视角。目前,平台主要以应用为视角来组织连接各功能模块,那么我们的下一步计划是在此基础上扩展到项目视角,以了解各应用之间的关系。甚至我们可以从产品业务视角来看待多个项目之间的关联关系,探索进一步提升的空间。

简言之,**只有抓住研发效能实践、平台、以及度量这三点,才能有效提升研效工作。**我们整个研效的核心思路是通过研效实现,平台在此基础上输出核心研效指标,以推动业务方提高研效性能,最后使得正向增强回路。

毋庸置疑,研效提升是一项持续性工作,我们也十分期待通过研效提升,赋能腾讯云业务的进一步发展。

点击此处链接,助力企业研发效能提升

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/555511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【遥感图像】目标检测系列.1

目录 Unsupervised Domain Adaptation for Cloud Detection Based on Grouped Features Alignment and Entropy Minimization, TGRS2022 Semi-Supervised Cloud Detection in Satellite Images by Considering the Domain Shift Problem, RS2022 CoF-Net: A Progressive Coa…

深度学习笔记之递归网络(四)铺垫:Softmax函数的反向传播过程

深度学习笔记之递归网络——铺垫:Softmax的反向传播过程 引言总结:递归神经网络的前馈计算过程场景构建前馈计算描述 铺垫: Softmax \text{Softmax} Softmax的反向传播过程场景构建 Softmax \text{Softmax} Softmax反向传播过程 引言 上一节…

OpenSIPS 3.1 负载均衡 MRCP 服务器的实现

文章目录 1. 方案设计2. 实现方式2.1 FreeSWITCH 的配置2.2 OpenSIPS 3.1 的配置2.2.1 OpenSIPS 保存 MRCP 服务器地址2.2.2 OpenSIPS 脚本开发 2.3 实现效果 1. 方案设计 FreeSWITCH 通过 unimrcp 模块来对接 MRCP 服务器,该模块在启动时会根据 mrcp profile 配置…

【Java|golang】1080. 根到叶路径上的不足节点--dfs

给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 不足节点 ,并返回最终二叉树的根节点。 假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit,则该节点被称之为 不足节点 ,需要被删…

【Linux基本指令(2)】几十条指令快速入手Linux/深入理解什么是指令

本文思维导图: 文章目录 Tips:7.man指令(重要):echo指令和输出重定向,追加重定向,输入重定向 8、cp指令(重要)9.mv指令(重要)10.cat指令11.more指…

weblogic CVE 2017-10271

weblogic ip :192.168.27.128:7001 使用weblogicscan对目标进行探测 python3 WeblogicScan.py -u 192.168.27.128 -p 7001 扫到了不少洞,现在开搞2017-10271 漏洞原理 CVE-2017-10271漏洞主要是由WebLogic Server WLS组件远程命令执行漏洞,主要由wls-…

自动化如何做?爆肝整理企业自动化测试工具/框架选择实施,你要的都有...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

电容的电介吸收性质

电介质吸收 我们首先讨论电介质吸收, 也称为“浸润” , 有时也称为“电介质迟滞” , 这可能是我们了解最少而潜在破坏性最高的一种电容效应。 放电时, 多数电容都不愿意放弃之前所拥有的全部电荷。 图2 显示了这一效应。 电容在时…

科技云报道:穿行数字经济时代,数据如何找到“安全感”?

科技云报道原创。 数据作为数字经济时代的新型生产要素,正快速融入经济社会的方方面面,甚至常常被形容为“未来的石油”。 在数字经济时代,数据安全与数据流通同等重要。但随着我国数字经济驶入快车道,数据流动和安全发展的矛盾…

idea中关联Git

注意:未安装和配置Git软件,请先跳转到 Git宝典_没办法,我就是这么菜的博客-CSDN博客 idea关联git 关联git.exe 选择你的Version Control 下的Git 选择你的Git安装目录bin下的git.exe,点击ok 点击Test,显示版本号…

opencv文字识别

OpenCV(开源计算机视觉库)是一个用于实现计算机视觉和机器学习的开源库。它包含了许多预先训练的模型和算法,可以帮助开发者快速实现图像处理、对象检测和识别等功能。在文字识别方面,OpenCV也有一些实用的工具和方法。 要在OpenC…

【使用ChatGPT写思维导图】

内容目录 一、利用ChatGPT生成思维导图内容1. 打开ChatGPT:2. 输入需求:3. 复制: 二、制作生成思维导图1. 打开思维导图制作网站:2. 网页版下侧 - Try it out → - 粘贴Markdown内容,就会自动生成。3. 自行下载。 一、…

四川省信创联盟2023年第一次理事会顺利召开,MIAOYUN荣获“信创企业优秀奖”!

5月18日,四川省技术创新促进会信创工委会(四川省信创产业联盟)在成都市高新区新川科技园成功召开《2023年第一次理事单位(扩大)会议》,四川省技术创新促进会专家组杜纯文副组长、四川省技术创新促进会任渝英…

构建完善的帮助中心,降低企业客户服务成本

随着信息技术的发展和应用的普及,越来越多的企业已开始意识到,通过构建完善的帮助中心,可以有效地降低企业客户服务成本,提高客户满意度。一个完善的帮助中心不仅仅是企业用于回答客户问题的工具,更是客户自主获取和消…

vite + electron 构建前端桌面应用程序

文章目录 一、创建 vite 项目二、构建 Electron 项目三、打包 Electron 桌面程序四、项目地址 一、创建 vite 项目 npm npm create vitelatestyarn yarn create vite选择是否继续 Need to install the following packages:create-vite3.2.1 Ok to proceed? (y) y项目名称 P…

【IIS建站教程】windows本地搭建web服务,内网穿透发布公网访问

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 转载自远程源码文章:【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网…

【C++】STL——容器适配器priority_queue(优先级队列)详解 及 仿函数的介绍和使用

文章目录 1. priority_queue的介绍和使用1.1 priority_queue的介绍1.2 priority_queue的使用1.2.1 仿函数介绍1.2.2 在OJ中的使用:数组中的第K个最大元素思路1:排序思路2:priority_queue思路3:TOP-K思想 2. priority_queue的模拟实…

C++入门--缺省、函数重载、引用学习

1.缺省参数 1.1缺省参数概念 缺省参数是指在声明或定义函数时为函数的参数指定一个缺省值&#xff0c;如果在调用该函数的时候没有指定参数&#xff0c;函数会使用该参数的缺省值&#xff0c;否则使用指定的参数。 #include<iostream> using std::cout; using std::cin;…

Flutter2.x升级3.x版本遇到的问题及解决方案

项目原本使用的Flutter版本为2.5.3&#xff0c;现在要升级到3.0.5版本&#xff0c;结果升级完后项目直接编译不通过&#xff0c;报了一堆的错误&#xff0c;如果你也是这种情况&#xff0c;可以按我接下来讲的操作试一试&#xff0c;反正我就是这么解决问题的。 目录 1、升级G…

连锁管理系统有哪些功能?如何选择实用的连锁管理系统?

传统门店管理系统有很多弊端&#xff0c;各种销售数据不能实时同步、沟通效率低、分店管理困难&#xff0c;库存混乱...... 一套合适的连锁管理系统&#xff0c;能够有效解决多门店之间的管理沟通难题&#xff0c;总店可以随时随地使用手机掌控分店各种事项&#xff0c;多门店之…