度量平台落地实践

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 度量平台落地实践

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率之类),因为这类数据虽然很好统计,但缺乏指导性,团队成员容易提交大量重复、冗余的代码来“凑指标”,让数据变得很好看,但这对团队没有任何价值。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
运维 大数据 Devops
研发管理难题如何破?云效打造强有力的阿里技术中台
云效(内部叫Aone)就是阿里的2万多名工程师和几万名员工协作沟通的工具,为了产品研发提供一个标准化的平台,覆盖从研发,到发布,再到日常运维的一站式平台,能够让开发同学通过这个平台,低成本的按照统一的流程进行研发活动,减少错误,提高效率。
5442 1
|
安全 关系型数据库 Java
SonarQube实战:部署(一)
基于Docker部署SonarQube及中文汉化。
1146 0
|
7月前
|
弹性计算 监控 数据可视化
怎么使用阿里云的云监控服务?
阿里云云监控(CloudMonitor)提供免费、实时的云资源与应用性能监控服务,支持ECS、RDS等产品及网站、API监控。具备全方位监控、智能告警、数据可视化等功能,可通过控制台轻松设置监控项与阈值,及时发现异常,保障系统稳定运行。
|
运维 数据可视化 网络协议
Docker可视化工具Portainer的安装和使用
Docker可视化工具Portainer的安装和使用
17648 1
Docker可视化工具Portainer的安装和使用
|
11月前
|
人工智能 监控 Cloud Native
深度剖析电商API监控与报警:守护电商系统稳定的核心策略
电商API监控与报警是保障电商业务稳定运行的关键工具。文章从重要性、关键指标(如响应时间、成功率、错误率等)、技术工具(如日志监控、性能监控、异常检测)及实施步骤等方面详细阐述了如何构建高效的监控体系。通过案例分析,如京东的商品API实战,展示了全链路追踪与智能告警的应用价值。未来,随着AI、自动化和云原生技术的发展,电商API监控将更加智能高效,助力提升用户体验与业务效率。
|
存储 Kubernetes 调度
k8s常见的排错指南Node,svc,Pod等以及K8s网络不通问题
k8s常见的排错指南Node,svc,Pod等以及K8s网络不通问题
5717 1
|
12月前
|
JavaScript 搜索推荐 前端开发
通义灵码2.5智能体模式联合MCP:打造自动化菜品推荐平台,实现从需求到部署的全流程创新
本项目利用通义灵码2.5的智能体模式与MCP服务,构建在线点餐推荐网站。基于Qwen3模型,实现从需求到代码生成的全流程自动化,集成“今天吃什么”和EdgeOne MCP服务,提供个性化推荐、偏好管理等功能。技术架构采用React/Vue.js前端与Node.js后端,结合MCP工具链简化开发。项目涵盖功能测试、部署及未来扩展方向,如餐厅推荐、语音交互等,展示高效开发与灵活扩展能力。
|
存储 人工智能 Prometheus
剑指大规模 AI 可观测,阿里云 Prometheus 2.0 应运而生
本文介绍了阿里云Prometheus 2.0方案,针对大规模AI系统的可观测性挑战进行全面升级。内容涵盖数据采集、存储、计算、查询及生态整合等维度。 Prometheus 2.0引入自研LoongCollector实现多模态数据采集,采用全新时序存储引擎提升性能,并支持RecordingRule与ScheduleSQL预聚合计算。查询阶段提供跨区域、跨账号的统一查询能力,结合PromQL与SPL语言增强分析功能。此外,该方案已成功应用于阿里云内部AI系统,如百炼、通义千问等大模型全链路监控。未来,阿里云将发布云监控2.0产品,进一步完善智能观测技术栈。
1258 42
|
运维 监控 算法
数据指标体系入门讲解(上)
数据指标体系入门讲解(上)
3167 2
|
人工智能 边缘计算 算法
AI人流热力图分析监测技术
通过深度学习算法(如CSRNet)进行实时密度估算和热力图生成,结合历史数据分析预测高峰时段,优化人员调度与促销活动。采用边缘计算减少延迟,确保实时响应,并通过数据可视化工具提升管理决策效率。
1378 24