通过度量把发版过程的不确定变成确定-构建闲鱼版本持续交付管道及度量 | 实践案例三

简介: 2018 财年初为了应对闲鱼业务和技术快速发展。闲鱼技术团队在云效中心敏捷教练的指导下闲鱼客户端的泳道研发支撑项目 kickoff。

2018 财年初为了应对闲鱼业务和技术快速发展。闲鱼技术团队在云效中心敏捷教练的指导下闲鱼客户端的泳道研发支撑项目 kickoff。

确定了端侧的研发模式从“小瀑布模式”到“泳道”持续集成的转变。

确定了端侧2-1-1的核心愿景目标。因为端侧依赖打包,适配验证等必要环节。

目标设置为2-1-7。

  • 即:“2"指的2周的交付周期,85%以上的需求可以在2周内交付;
  • 第一个“1”指的是1周的开发周期,85%以上的需求可以在1周内开发完成;
  • 第二个“7”指的是7小时的发布前置时间 - -拉集成代码后可以在7小时内完成发布。

确定核心目标很关键,但执行和支撑也同样重要。

我们做了哪些事情?核心目标 :“2-1-7” 实施的效果如何呢?下文主要从几个方面介绍:

一、建能力

背景:集团 AONE(云效)系统针对服务端做了比较多持续集成的支撑,但缺少支撑端侧持续集成的支撑系统,我们建立了两个平台 fishci,fishgurad。

  • fishci 主要实现了端代码监控,项目打包,测试件触发的能力。
  • fishguard 主要 建立了 测试包,测试机,测试任务和通知管理的能力。两个平台的设计思路是:

 - 低投入,围绕核心功能展开,做功能最小集合。
 - 充分复用已有集团已有中台平台能力。

  • 研发无人化理念建设:测试件自动构建,触发运行自动化

串联系统

image.png

由此建立了 1 次代码提交(commit,push,merge request )到实时出端主干回归测试结果持续集成能力。

同时沉淀了整个端侧研发效能和质量的过程数据。

二、建度量

目标达成,度量很关键,度量决定了我们做的事情在目标大方向上是否偏离,距离目标还有多远。所以对 2-1-7 核心目标做度量之外,我们还需要分解过程目标。

fishci 和 fishguard 两个平台支撑了端侧的代码变更,编译打包,触发数据,测试件运行数据,沉淀在平台的这些数据就具备了版本运营的能力。

技术 PM,PTM,TL 可以通过数据关注版本运行状态,跟踪和做持续的改进。

三、改过程

泳道集成研发过程整体图:

image.png

  • 研发分支管理:需求关联分支,develop 分支,develop 和 release 管理,合入代码

评审卡口。

  • 端开发:端架构升级。
  • 测试技术:端侧 UI 测试件自动构建和回归,端性能测试自动化,端侧 monkey 自动化触发。
  • 流程卡口:需求 aone(云效)管理,新建代码 review 卡口,新建集成质量卡口,发版质量标准,新建性能测试集成卡口。

四、版本研发度量数据:(度量数据更新到 3 月份底)

1. 发版效能和需求吞吐量:

发版准时率度量:20/21= 96%

需求吞吐量(按月):

结论:需求吞度量逐步提升。3 月底需求吞吐量达到历史最高。

---使用合入 develop 分支的分支数度量(每一个分支对应一个 aone(云效)需求编号)

image.png

研发耗时:

需求“端”到“端”接手开发到开发测试(自测)时间即效能数据,(2-1-7)中的 1度量数据:使用泳道第一次 push 代码的时间---合入 develop 的时间做度量。

结论:开发到合入主干时间,之前无度量数据。

通过数据暴露的问题1月份泳道研发分支大需求过多,导致平均研发周期在2周左右,(玩家,社区)。

我们的工程体系对需求的拆分支持的还需要提升,后面把闲鱼社区做独立 bundle 的拆分。

三月份研发周期下降到1周左右。接近目标。

image.png

2. 持续集成效率核心数据:

集成效率核心数据

使用合入develop分支的变更频次和变更规模度量的task的次数和代码规模(文件数)。

结论:可以看到,持续集成的按月次数提升,提交分布更均匀,持续集成的节奏在朝着正确的方向运转。

image.png

发布效率:从拉集成分支到发布

泳道模式前:1周目前版本:平均1.5天

3. 集成质量核心数据:

集成后变更规模:

使用 release 分支变更频次和变更规模度量,越少越好。

结论:release 分支提交次数在明显上升,需求吞吐量增加的同时,集成后代码质量下降。这是我们效率增加后质量的负向指标也升高,风险在增大。

image.png

总缺陷在泳道阶段,集成阶段的缺陷走势。

结论:缺陷总数趋势稳定,提测阶段缺陷数在增加,集成后的缺陷占比在下降。

image.png

泳道提测质量和遗留到集成阶段缺陷趋势。

(major bug+低级 bug 数)

结论:泳道提测质量恶化,质量压力持续增加,1 月份提测质量达到最差。项目风险也最高。

三月份有所下降,质量压力好转。

image.png

提测缺陷密度和遗漏到集成阶段缺陷密度趋势。

( 加权*10000 度量开发缺陷密度)

结论:随着开发提测质量随着需求吞吐量提高,提测阶段缺陷密度恶化,遗留到release 阶段缺陷密度有下降,依赖测试的泳道测试中的效率提升(发现更多的缺陷)。

三月份,需求吞吐量增高,变更量增大的情况下缺陷密度好转,整个质量压力好转。

image.png

五、小结

  1. 使用这些度量数据看可以得到结论,我们的研发过程从小瀑布集中式到泳道分布式持续集成,需求吞吐量增大,质量数据更透明,效能有明显的提升。
  2. 数据暴露问题看我们距离目标还有一定的差距,但从度量角度看这些问题数据是很有意义的。这些数据在度量之前是不可知的,也无从分析改进的切入点。现在可以通过改进action 和数据验证 形成闭环 来确定改进效果和方向。向正确方向行进很重要!同时通过平台设置质量卡口,使得我们的过程质量更透明和可控。(有趣是,设置了更多,更严格的质量卡口之后,整个效能数据并没有变差。)
  3. 总之通过这些度量数据,我们可以度需求吞吐量(多),需求响应速度(快),集成频次(好),缺陷收敛和缺陷密度(好),投入资源情况(省)。

如何评估研发效能,我的思考是通过数据可以拟合一张图(如下图。)

X 曲线才是我们的期望曲线。其他曲线都值得去监控和改进。

image.png

                                                                本文作者:韩越峰

lQLPDhsB-6_MTiPNBDjNB4CwJ0odfQ_xJCgB0-wc0wAZAA_1920_1080.png

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
相关文章
|
1月前
|
监控 负载均衡 测试技术
大模型开发:描述一个你之前工作中的模型部署过程。
完成大型语言模型训练后,经过验证集评估和泛化能力检查,进行模型剪枝与量化以减小规模。接着导出模型,封装成API,准备服务器环境。部署模型,集成后端服务,确保安全,配置负载均衡和扩容策略。设置监控和日志系统,进行A/B测试和灰度发布。最后,持续优化与维护,根据线上反馈调整模型。整个流程需团队协作,保证模型在实际应用中的稳定性和效率。
22 3
|
8月前
|
敏捷开发 数据可视化 测试技术
如何做好敏捷迭代管理?过程及工具分享
Leangoo领歌是ScrumCN(scrum.cn)旗下的一款永久免费的敏捷研发管理工具。 Leangoo领歌覆盖了敏捷研发全流程,包括小型团队敏捷开发,Scrum of Scrums大规模敏捷以及SAFe大规模敏捷框架等,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、缺陷管理、测试管理、进展跟踪、统计度量等。领歌上手快、实施成本低,可帮助企业快速落地敏捷,提质增效、缩短周期、加速创新,在数字时代赢得竞争。
如何做好敏捷迭代管理?过程及工具分享
|
测试技术
测试如何构建快速反馈的能力
测试如何构建快速反馈的能力
102 0
测试如何构建快速反馈的能力
|
数据采集 供应链 监控
谈谈构建成功的数据治理团队的四个步骤
成功的数据治理需要与明确定义的业务需求保持一致。然而,太多的数据治理程序未能实现目标,因为它们忽略了这一先决条件。
|
Kubernetes 安全 机器人
Lyft 微服务研发效能提升实践 | 3. 利用覆盖机制在预发环境中扩展服务网格
Lyft 微服务研发效能提升实践 | 3. 利用覆盖机制在预发环境中扩展服务网格
528 0
Lyft 微服务研发效能提升实践 | 3. 利用覆盖机制在预发环境中扩展服务网格
|
算法 Cloud Native 架构师
基于持续测试的质量守护:分层测试、测试自动化、单元测试(二)|学习笔记
快速学习基于持续测试的质量守护:分层测试、测试自动化、单元测试(二)
126 0
基于持续测试的质量守护:分层测试、测试自动化、单元测试(二)|学习笔记
|
Cloud Native 架构师 测试技术
基于持续测试的质量守护:分层测试、测试自动化、单元测试(一)|学习笔记
快速学习基于持续测试的质量守护:分层测试、测试自动化、单元测试(一)
204 0
基于持续测试的质量守护:分层测试、测试自动化、单元测试(一)|学习笔记
|
数据采集 消息中间件 监控
项目总体数据处理流程详解|学习笔记
快速学习项目总体数据处理流程详解
168 0
项目总体数据处理流程详解|学习笔记
|
测试技术 数据库
接口测试平台184:并发用例报告数据收集-数据准备/bug修复阶段 (2)
接口测试平台184:并发用例报告数据收集-数据准备/bug修复阶段 (2)
接口测试平台184:并发用例报告数据收集-数据准备/bug修复阶段 (2)
|
前端开发 测试技术 数据库
接口测试平台183:并发用例报告数据收集-数据准备/bug修复阶段 (1)
接口测试平台183:并发用例报告数据收集-数据准备/bug修复阶段 (1)
接口测试平台183:并发用例报告数据收集-数据准备/bug修复阶段 (1)