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

2023-11-09

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三、腾讯云研效工作未来规划

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 性能测试 —— 生成html测试报告、参数化、jvm监控

    1 生成HTML的测试报告 1 1配置 1 找到 jmeter 的安装目录 下的bin中的jmeter properties jmeter配置文件 2 ctrl f 搜索jmeter save saveservice output form
  • linux 杀死指定端口的进程

    利用kill 9 和 ss antlup命令 kill 9 ss antlup grep 18100 awk print 7 awk F print 3
  • 快速能访问服务器的文件

    1 背景 访问ubuntu上的文件 2 方法 python3 m http server 8081 directory home NAS 共享访问协议 NFS SMB FTP WebDAV 各有何优势 http 1 Ubuntu 搭建文件服
  • Potplayer播放器远程访问群晖WebDav本地资源【内网穿透】

    文章目录 本教程解决的问题是 按照本教程方法操作后 达到的效果是 1 使用环境要求 2 配置webdav 3 测试局域网使用potplayer访问webdav 3 内网穿透 映射至公网 4 使用固定地址在potplayer
  • linux 定时任务crontab编写

    使用命令 crontab e 0 0 sh opt maxwellToMysql create data log sh 编写完保存
  • Centos8破解Root密码

    注 Centos7同理 1 重启Centos8系统后 在启动页面中选中第一行 按 e 键进入界面 2 找到linux开头所在行的找到 ro 改为上 rw init sysroot bin bash 同时按下 Ctrl X 跳转到紧急模式 3
  • Linux配置Acado

    如果需要使用acado的matlab接口 请移步 Linux Matlab配置Acado 首先 安装必要的软件包 sudo apt get install gcc g cmake git gnuplot doxygen graphviz 在
  • 服务器3M固定带宽什么意思?够用吗?

    云服务器3M固定带宽是什么意思 速度快吗 3M固定带宽是指云服务器的公网带宽 用于在外网提供服务的 3M带宽的下载速度是384KB 秒 上传速度是1280KB 秒 对于个人博客或流量不多的企业官网速度还是挺快的 阿里云服务器网aliyunf
  • HDMI光端机技术概述:高清多媒体传输的前沿

    在数字多媒体传输领域 HDMI光端机 代表着高清传输技术的前沿 作为现代视听设备的标准接口 HDMI光端机在高清视频和音频传输方面的应用日益广泛 它不仅支持更高的分辨率和更丰富的色彩 还提供了更加稳定和高效的传输方式 技术特点 高清晰度传输
  • 【linux】日志管理和分析

    一 概述 在Linux系统的管理和运维中 日志文件起到至关重要的作用 它们记录了系统运行过程中的各种事件 包括系统故障 性能数据和安全事件 二 日志的作用和分类 日志的作用 日志文件记载了系统的生命线 利用它们可以 1 诊断系统故障 2 监
  • 猫头虎博主的MySQL救援指南:轻松解决初始化问题(nysqld: Can create directort :mysgl mysg! 9-winx64 data errno such file o)

    博主猫头虎的技术世界 欢迎来到 猫头虎的博客 探索技术的无限可能 专栏链接 精选专栏 面试题大全 面试准备的宝典 IDEA开发秘籍 提升你的IDEA技能 100天精通Golang Go语言学习之旅 领域矩阵 猫头虎技术领域矩阵 深入探索各技
  • 使用匿名binder实现client向server端的死亡通知

    一 引言 因为binder是跨进程通信 难免会遇到服务端出现异常挂死的情况 这个时候需要通知到客户端进行相应的处理 在网络通信中是非常常见的机制 当然 在binder中 Android也为我们写好了相关的框架 但通过binder源码分析 你
  • AIDL通信过程中设置死亡代理

    概述 在进行进程间通信的过程中 如何服务端进程由于某种原因异常终止 我们的远程调用就会失败 影响我们的功能 那么怎么样能够知道服务端进程是否终止了呢 那就是给Binder设置死亡代理 下面看看如何设置 Override public voi
  • Linux ls命令

    目录 一 配置项 1 1 ls l 1 2 ls a 1 3 ls lrt 1 4 ls ld 二 案例 2 1 查看指定文件夹下文件的数量
  • 消耗服务器带宽的因素有哪些

    消耗 服务器 带宽的因素有 1 网站布局更改使网站页面大小增加 用户获取数据时会加大带宽的消耗 2 网站访客增加使浏览页面数据增加 从而加大对带宽的消耗 3 网页数量增加导致服务器带宽消耗加快 4 突然引起流量峰值 导致带宽使用量增加 5
  • RF自动化环境安装+自动化实例解析

    RF定义 通用型的 自动测试框架 绝大部分的软件的的自动化系统都可以采用它 特点 测试数据文件 Test Data 对应一个个的测试用例 测试数据文件里面使用的功能小模块叫关键字 由测试库 Test Library Robot Framew
  • Kubernetes (十三) 存储——持久卷-动静态分配

    一 简介 二 NFS持久化存储步骤 静态分配 1 集群外主机用上次nfsdata共享目录中创建用来测试的pv 1 3 目录 用来对三个静态pv 2 创建pv的应用文件 vim pv yaml apiVersion v1 kind Persi
  • GitLab CI 实现项目A更新代码自动触发项目B更新错误码文档

    一 CI CD简介 CI CD 是持续集成 Continuous Integration 和持续交付 持续部署 Continuous Delivery Continuous Deployment 的缩写 是一种软件开发和交付的最佳实践 这两
  • 网工内推 | 上市公司同程、科达,五险一金,年终奖,最高12k*15薪

    01 同程旅行 招聘岗位 网络工程师 职责描述 1 负责职场 门店网络规划 建设 维护 2 负责网络安全及访问控制 上网行为管理和VPN设备的日常运维 3 负责内部相关网络自动化和系统化建设 4 优化与提升网络运行质量 制定应急预案 人员培
  • 【安全-SSH】SSH安全设置

    今天发现自己的公有云服务器被攻击了 在这里插入图片描述 https img blog csdnimg cn direct cafdca04646f4b8b838400ec79ac282f png 然后查看了登录日志 如上图 ls sh va

随机推荐

  • Ajax数据传递暨利用js进行表单数据回显

    问题一 Ajax传递整个表单数据 function createCustomer post pageContext request contextPath list add do new customer form serialize fu
  • PyQt5-布局

    布局 在qt里布局分四大类 QBoxLayout QGridLayout QFormLayout QStackedLayout QBoxLayout 直译为 盒子布局 一般使用它的两个子类QHBoxLayout 和 QVBoxLayout
  • AIX程序打包

    打包 首先需要安装打包工具mkinstallp 在AIX安装光盘中 安装bos adt insttools 安装过程中需要在放入光盘1 安装完成后 可以在 usr sbin 下找到mkinstallp AIX中一个package包含有多个f
  • 终于有人把 Docker 讲清楚了,别再说不会 Docker 了!(摘)

    富 Web 时代 应用变得越来越强大 与此同时也越来越复杂 集群部署 隔离环境 灰度发布以及动态扩容缺一不可 而容器化则成为中间的必要桥梁 本文我们就来探索一下 Docker 的神秘世界 从零到一掌握 Docker 的基本原理与实践操作 别
  • APT攻击是什么?面对APT攻击,我们应该怎么做?

    目录 一 概念 二 APT攻击特征 三 APT攻击技术 3 1 APT攻击方式 3 2 APT攻击诱饵种类 四 APT攻击模式 4 1 第一阶段 扫描探测 4 2 第二阶段 工具投送 4 3 第三阶段 漏洞利用 4 4 第四阶段 木马植入
  • 区块链学习笔记13——ETH以太坊概述

    区块链学习笔记13 ETH以太坊概述 学习视频 北京大学肖臻老师 区块链技术与应用 笔记参考 北京大学肖臻老师 区块链技术与应用 公开课系列笔记 目录导航页 比特币和以太坊是两种最主要的加密货币 比特币被称为区块链1 0 以太坊被称为区块链
  • 自动驾驶开发入门(三)---浅谈Apollo Cyber RT中的Transport

    Cyber的Transport为上层封装了底层数据传输的细节 上层主要使用Transport Transmitter Receiver三个类 其中Transport是工厂类 负责创建Transmitter Receiver以及Dispatc
  • pyspark作为生产者发送消息(推送数据)到kafka

    pyspark作为生产者发送消息到kafka 网上大部分的案例都是pyspark作为消费者消费kafka的消息 但是作为生产者生产消息发送给kafka的很少 下面把pyspark如何创建数据 或读取数据 作为生产者发送消息给kafka作为案
  • C++字节对齐

    系统让程序中的变量按字节对齐的目的 访问高效 字节是内存空间分配的最小单位 在程序中 我们定义的变量可以放在任何位置 但实际情况是访问特定类型变量的时候在特定的内存地址访问 这就需要各种类型数据按照一定的规则在空间排列 而不是顺序的一个接着
  • 两台文件服务器,负载均衡,用两台云服务器搭建一个负载均衡

    用两台云服务器搭建一个负载均衡 内容精选 换一换 弹性负载均衡 Elastic Load Balance 以下简称ELB 通过将访问流量自动分发到多台弹性云服务器 扩展应用系统对外的服务能力 实现更高水平的应用程序容错性能 用户通过基于浏览
  • 顺序表的C语言实现(静态/动态)

    目录 1 顺序表的定义 2 顺序表的实现 静态分配 3 顺序表的实现 动态分配 1 顺序表的定义 线性表的顺序存储又称顺序表 它是用一组地址连续的存储单元依次存储线性表中的数据元素 使得逻辑上相邻的两个元素在物理位置上也相邻 因此 顺序表的
  • C++基础知识 - 浮点类型

    需要精确计算的数学 工程应用 用整数类型不合适 float类型 单精度浮点类型 用来存储带小数部分的数据 在内存中占用4个字节 表示范围 3 4 1038 3 4 1038 不需记忆 精度 最长7位有效数字 是指7位10进制位 精度只能取值
  • 【Android】常用对话框大全(二)Material Dialog

    前言 上一篇文章中 谈到本系列的文章将讲解Android dialog Material dialog 为何要谈论Material呢 开发过Flutter的开发者也许就会明白 Material Design框架Flutter也在用 而在其官
  • MATLAB---获取图像中的指定像素点的值(RGB图像)

    输入 clear all RGB imread 图片名 格式 r x1 y1 z1 指定像素点的横坐标 c x2 y2 z2 指定像素点的纵坐标 p impixel RGB r c 用impixel 函数来返回RGB图像的横纵坐标对应的像素
  • Java 使用枚举消除if else

    1 功能需求 if else判断时写代码过程中非常常见的 但是有些相对比较固定格式的if else判断却是我们可以尽可能避免的 其中 枚举的作用在我们消除if else代码快的作用非常大 那么 我们该如何实现呢 2 代码实现 定义枚举变量
  • 【54-Sentinel熔断、降级、限流的基本概念-Sentinel实战上手应用-actuator实时监控-Docker安装部署Sentinel教程-熔断降级实战练习-Sentinel自定义资源】

    一 知识回顾 0 三高商城系统的专题专栏都帮你整理好了 请点击这里 1 系统架构演进过程 2 微服务系统架构需求 3 高性能 高并发 高可用的三高商城系统项目介绍 4 Linux云服务器上安装Docker 5 Docker安装部署MySQL
  • Redis复习笔记

    Redis 是一个高性能的key value数据库 支持多种数据类型 String 可以是字符串 整数 浮点数 List 列表 一个链表 链表上的每个节点都包含一个字符串 Set 集合 包含字符串的无序收集器 并且被包含的每个字符串都是独一
  • Sharding-jdbc

    一 概念理解 垂直切分 包含垂直分库和垂直分表 1 1 垂直分库 专库专用 按照业务类型对表分类 1 2 垂直分表 基于数据表的列 字段 为依据切分的 是一种大表拆小表的模式 1 3 垂直切分优点 不同业务的数据进行独立维护 监控 扩展 在
  • 右键里没有新建txt文件选项 win7

    试试这个方法吧 win7的试过 成功 找个文本文档 复制一个 把里面的内容清空 改后缀为reg 点右键 编辑 把下面的内容复制进去 保存 然后双击导入注册表 Windows Registry Editor Version 5 00 HKEY
  • 建设一站式DevOps平台,腾讯云研发效能提升实践

    导语 近年来 研发效能提升越来越受到业界重视 许多厂商都在不断探索研发效能提升之路 从而实现研发效率和质量的持续优化 以应对日趋复杂的产品开发 那么腾讯云的研发效能相关工作是如何开展和落地的呢 今天我们特邀了腾讯云研发效能工作组负责人 腾讯