度量平台落地实践

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 度量平台落地实践

640.jpg

     度量的最终结果不是一个可视化的图表,而是一个问题改进的清单及改进方案,关注这些度量数据给我们带来的信息,获取当前团队的改进重点,持续优化,才是重中之重。同时,度量是动态变化的,在持持续改进的进程中,我们需要逐步提高标准


最近,研发效能平台在业内被不断的提起,总结。张乐大神还出来长篇连载,从不同的角度来解读研发效能,笔者也在持续的关注大佬的文章。恰巧笔者在去年也负责了公司度量平台的研发,有一些收获,通过本文分享给大家,也算是自己对这个平台总结。为后续在新团队开展度量活动理清思路。本文将从以下几个方面来做开展:


640.png


NO.1

为什么要引入度量活动

     管理大师德鲁克说:“你如果无法度量它,就无法管理它”(“It you can’t measure it, you can’t manage it”)”,这句话的大背景是处在工业发展时间,企业创造活动更趋向于劳力活动,所以很多东西都比较好度量。如果以计件的方式来管理软件研发过程,是否合适?这个每个人都有自己的体会。笔者从自己团队的现状出发,给出了自己的看法:


640.png


NO.2

度量活动的目标是什么

      笔者认为,主要是为了解决痛点4失中的2失:目标导向缺失及持续优化迷失。       解决标导向缺失:没有明确的、直观的、可量化的数据,我们就无法知道我们努力的目标在哪,在制定OKR的时候,我们经常说目标要数据化,是因为具体的数据才能引导我们往这个目标去努力。通过度量活动,建立团队的研发基线,有助于我们明确目标(例如阿里的“211” 交付愿景)       解决持续优化迷失:我们在为什么做优化?当下技术能力的提升是否能解决团队最紧急的痛点?技术团队比较容易陷入自嗨的情绪中,业务最终的目标是交付价值,不是技术SHOW。技术难点是团队的瓶颈点,还是测试活动是团队的瓶颈点?又或许是需求拆分?更有可能的是各种环境的准备搞的你焦头烂额?没有可靠的度量数据,只能凭借自己的感觉或者经验,无法弄成统一的大局观,看似解决了某一个痛点,但并未对团队的整体交付带来更高的价值

NO.3

度量指标的选择



      明确了目标后,我们就可以有选择性的选择度量指标,经过团队的充分讨论后(而不是拍脑袋或者依据所谓的成熟度指标),我们定义了以下几个维度的度量指标:
     需求交付维度,目标:拆分合理,快速交付


640.png

     研发交付,目标:持续集成,持续验证

640.png

   

    测试交付,目标:更早介入,更快回归

640.png

     在度量前期,我们以这些指标作为指导,观察我们整体的研发活动,看看哪个节点上花费的时间最多,然后就想办法针对性的解决,然后再观察整体,发现节点瓶颈,以此往复,慢慢缩短整体的交付周期。在多轮迭和更新后,形成的最终度量体系如下:


640.png


NO.4

技术落地过程


    度量平台经过几轮的技术重构和定义,最终的业务架构如下:

640.png

     上面的业务架构图应该比较清晰了,就不过多的说明,使用的技术栈也相对简单,核心是Django+Pandas+Mysql+es+vue。当然还有一些其它的技术组件,就不一一说明了,都相对比较常见。在整个平台的研发过程中,也踩过很多坑,这里提两点比较重要的来说明下,希望大家可以少走点弯路。1. 不同的业务数据库间的数据如何同步到度量平台       虽然公司通过统一的DevOps平台管理研发过程,但是每个服务都有自己的数据库,度量平台如何从不同的业务库中收集数据,是第一个难点,经过调研,业内主要有两种方案:        方案一:同步双写:最为简单的方式,业务在将数据写到mysql时,同时将数据写到ES,实现数据的双写。

       优点:业务逻辑简单。        缺点:硬编码;业务强耦合;存在双写失败丢数据风险;性能较差        方案二:利用Mysql的Binlog来进行同步,具体步骤如下:读取Mysql的Binlog日志,获取指定表的日志信息;将读取的信息转为MQ;编写一个MQ消费程序;不断消费MQ,每消费完一条消息,将消息写入到ES中。       优点:自主可控,性能也较好。       缺点:需要binlog权限,需要额外的研发工作量       我们采用的是第三种取巧的方案:因为业务的数据库采用了主从结构,所以我们直接从业务的从库中拿一台出来,给度量平台用,直接从业务数据库里读数据,虽然方法土了些,但省时省力,后续数据量上来了,再考虑其它的方案。2. ES从入门到放弃       当度量平台把业务数据从业务数据库抽取出来,经过清洗后,要放在哪里进行聚合计算,成为了第二个难点。当时团队有两种思路:用行业比较流行的ES来处理,或者用Pandas来处理。由于两种方式团队内成员都没有明显的实战经验,于是就两种方法都采用,需求和测试的报表用ES,研发类报表用Pandas。        经过几轮的迭代后,Pandas的优势明显。ES的缺陷有两个:第一个问题,Mysql的数据同步到ES需要用到logstat组件来处理,这需要我们单独部署一个服务来处理,由于经验不足,logstat的output配置写的很糟糕,用表结构直接映射。这就带来了第二个问题,由于output是根据表来做的,所以ES生成的Index和表是一一对应的,对于Mysql来说,多表关联查询是再正常不过了,但是对于ES来说,跨Index查询是非常糟糕的,官方的用法也不推荐(虽然用宽表模式可以解决,但会冗余很多数据,并不友好。有这方面经验的大神可以指教下)。           最终,我们还是逐渐放弃使用ES,Pandas还是很香的,不是么。放一些效果图给大家参考下:

640.png

640.png


640.png

NO.5

测试活动只是开始,不是结束

      度量平台搭建完成后,并不意味着度量活动的终结,恰恰相反,有了度量平台,反而是我们做持续改进的开始,度量的最终结果不是一个可视化的图表,而是一个问题改进的清单及改进方案,关注这些度量数据给我们带来的信息,获取当前团队的改进重点,持续优化,才是重中之重。同时,度量是动态变化的,在持持续改进的进程中,我们需要逐步提高标准。       同时,不要把度量反馈的数值直接和个人的KPI关联,这样会很容易把度量引导到不正确的方向。细心的读者可能会发现,在第3小节中,我们选取的指标基本上都是基于团队导向的,很少会有个人的数据度量(业内常见的代码行数、个人缺陷数、千行BUG率之类),因为这类数据虽然很好统计,但缺乏指导性,团队成员容易提交大量重复、冗余的代码来“凑指标”,让数据变得很好看,但这对团队没有任何价值。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL 数据采集 运维
从数据到价值,DataOps精益数据运营概述
DevOps大家可能比较熟悉,但对于概念相近的DataOps大家可能还不清楚。简单来说,如果DevOps是更快交付软件的一种理念,那DataOps就是"更快交付高质量数据"的一种理念。 我们星轨工具团队过去围绕数据链路,沉淀了很多工具和组件,提升了我们数据域项目交付的效率和质量,这和DataOps提倡的聚焦数据链路,从全局提效很匹配。因此我们结合DataOps理念做了一些探索和实践,本文会详细给大家介绍下DataOps理念。
2144 2
从数据到价值,DataOps精益数据运营概述
|
机器学习/深度学习 SQL 存储
实时特征计算平台架构方法论和实践
在机器学习从开发到上线的闭环中,实时特征计算是其中的重要一环,用于完成数据的实时特征加工。由于其高时效性需求,数据科学家完成特征脚本离线开发以后,往往还需要工程化团队通过大量的优化才能完成上线。另一方面,由于存在离线开发和工程化上线两个流程,线上线下计算一致性验证成为一个必要步骤,并且会耗费大量的时间和人力。
1068 0
实时特征计算平台架构方法论和实践
可观测性简史-可观测性价值精讲ppt-业务系统的护城河
可观测性价值精讲,文末随附可观测性简史,可以快速注册体验可观测性平台,构建业务系统的护城河,指标体系和价值体系
205 1
|
Cloud Native 前端开发 IDE
「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)
本文作者将给大家提供一些简单的容易实操的方法,能够让所有人都知道什么是效能的提升,如何提升个人的效能,如何提升团队的效能。
1658 11
「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)
|
SQL 数据采集 运维
袋鼠云数栈 DataOps 数据生产力实践,实现数据流程的自动化和规范化
袋鼠云数栈在7年多的研发历程中为上千家客户提供了数据生产效率提升解决方案,也在这个过程中不断地将 DataOps 的理念融合到产品中,助力越来越多的企业成功实现数字化转型升级。本文将就数栈基于 DataOps 的敏捷、高质量数据生产力实践进行分享,希望对大家有所帮助。
424 0
|
容灾
《云上容灾交付服务白皮书》——4.交付标准化评估要素——4.2 现状调研的评估要素
《云上容灾交付服务白皮书》——4.交付标准化评估要素——4.2 现状调研的评估要素
105 0
|
新零售 运维 监控
研发效能的度量| 学习笔记
快速学习研发效能的度量
研发效能的度量| 学习笔记
|
敏捷开发 程序员
从业务侧视角如何度量研发效能
从业务侧视角如何度量研发效能
552 0
从业务侧视角如何度量研发效能
优秀度量与实践应该什么样?|2022阿里云研发效能峰会
随着数字化转型深化,研发效能管理成为热门话题。2022阿里云研发效能峰会·研发效能度量与实践专场希望通过理念和案例碰撞,让更多企业在效能课题上建立起科学认知。
171 0
优秀度量与实践应该什么样?|2022阿里云研发效能峰会
《研发效能提升36计-敏捷协作篇:设定北极星指标,数据驱动效能改进》电子版地址
研发效能提升36计-敏捷协作篇:设定北极星指标,数据驱动效能改进
169 0
《研发效能提升36计-敏捷协作篇:设定北极星指标,数据驱动效能改进》电子版地址