You are on page 1of 31

提高企业研发效能

建设开发人员生产力工程
刘永强
Gradle 大中华区技术负责人

www.QECon.net QECon全球软件质量&效能大会 - 深圳站


刘永强
Gradle 大中华区技术负责人


照 • Gradle 大中华区工程能效团队技术总监(技术负责人)
片 • 企业能效工程建设领域深耕十余年的资深效能专家, Gradle构建编译技术
认证专家、Jfrog制品库认证技术专家,华为MVP, 华为、招行、顺丰、中
兴等知名企业的资深 DevOps 专家顾问。
目录
Contents 01 什么是开发人员生产力工程(DPE)

02 DPE的特征和应用收益

03 DPE最佳实践-Gradle Enterprise
企业生产力挑战 -- DPE
企业生产力 = 速度 * 效率

PART 01
如果你可以做到...
企业生产力建设演进

1970s+ 1980s+ 1990s+ 2000s+ 2010s+ 2020+

JIT 流程重组 变革管理 Agile 精益 DevOps DPE

• CI/CD
• 聚焦业务流程 • 生产力为目标
• 适应变化 • 敏捷精益 • 打破部门墙
• 计划管理 • 打破金字塔 • 开发阶段
成本、质量、
• 控制变革 • MVP • 自动化提升
• 0库存 •
快速反馈
• 规模化能效
速度 • 影响变革 • • 端到端效能
• 快速反馈
• 端到端质量
开发人员生活中的一天
开发者每天浪费的时间

每天浪费1个小时的生产力
编码

本地构建的等待时间

调试生成失败

Lunch

编码
本地生成的等待时间

CI 构建的等待时间
sprint 冲刺

调查/修复测试

定位构建失败浪费的时间
快速反馈周期重要性
什么是 DPE

● DPE (开发人员生产力工程)是领先的软件开发组织使用的一种新的
软件开发实践,用于最大限度地提高开发人员的工作效率和幸福感。
● DPE将开发人员的生产力视为工程挑战,而不是通过管理规范和最佳
实践进行全面管理的人员挑战。
● DPE使用加速技术来加快软件构建和测试过程,并通过数据分析,以
使故障排除更加高效。

● 更快的反馈周期
● 更可靠的工具链
● 可用于持续改进开发人员的可操作数据,提高生产力和开发人员体验
DPE 专注解决的痛点/ 挑战

DPE可以提供帮助的地方…
减少构建和测试的空闲/等待时间

高效率的构建、测试和C构建I故障/问题的故障排除

及时检测发现构建性能退化和瓶颈

减少不可靠的测试,减少发布阻塞

用于持续改进的DevProd指标/关键绩效指标(可观测性)

降低CI和CI构建队列的成本

提升开发者体验/士气/幸福感

提高生产代码质量/客户体验

更快地发布软件
DPE的特征及应用收益
企业生产力 = 速度 * 效率

PART 02
DPE补充提供构建加速和行为数据,以支持SDLC的可追溯性
DPE 在解决的问题到底是什么?

任务时间太长

故障修复时间太长

不可预测及预防故障
DPE 目标导向 --- 支持企业核心业务目标

C-Level REVENUE COST BRAND


Objectives

VP/Director QUALITY OF
TTM PRODUCTIVITY
Engineering Drivers Fast Delivery Resource Efficiency SERVICE
Delight Customers

Developer/Build SLOW BUILDS & INEFFICIENT DEBUGGING,


Engineer Pains FEEDBACK CYCLES TESTING & CI
DPE 不作为成本 —— COI

每个工程年约52个工作周

每周 平均 等待时间 工程师成 工程师成 构建加速 等待时间 工程师成


构建次数 构建时间 (年) 本 本 后 (年) 本节省
(分钟) (年) (年)
本地构 10000 5分钟 约25 2Rmb 520万 1分钟 5年 416万

DPE的不作为成本计算器(COI )
https://gradle.com/roi-calculator/

IDLE/ INEFFICIENT FLAKY


WAIT DEBUGGING TESTS &
TIME OTHER
AVOIDABLE
FAILURES
DPE 构建加速收益

Spring Boot 项目在利用 Build Cache 进行编


译和单元测试时遇到的初步结果。Spring Boot 项
目具有 270K 行代码和 86 个子项目。使用 Maven
编译和运行单元测试需要 20.25 分钟,使用开箱即
用的 Gradle Enterprise,完全缓存后的构建时间可
IDLE/ INEFFICIENT FLAKY 缩短 6 倍或原始构建时间的 16.5%。通过对构建的

WAIT DEBUGGING TESTS & 配置进行一些优化,构建时间将进一步提高到原始


构建时间的 13.6%。现在构建时间节省又减少了一
TIME OTHER
个数量级。
AVOIDABLE
FAILURES
DPE 构建加速收益

IDLE/ INEFFICIENT FLAKY


WAIT DEBUGGING TESTS &
TIME OTHER
AVOIDABLE
FAILURES
规模化 DPE

⬢ 构建工具市场将持续分散的状态,这种分
散存在于生态系统内部,也存在于跨生态
系统间,以及大多数大公司内部。

⬢ 任何通用商业加速技术和分析平台,都可
能推动DPE发展,为企业生产力带来提升。
IDLE/ INEFFICIENT FLAKY
WAIT DEBUGGING TESTS &
TIME OTHER
⬢ DPE是在现有Devops技术下,新的开发效
率提升手段
AVOIDABLE
FAILURES
DPE 践行者 -- Gradle Enterprise
企业生产力 = 速度 * 效率

PART 03
Gradle 公司
• TechCrunch:全球25名最具价值开源项目之一

• Github :Top 200 Java开源项目第二名


Gradle获得Springy “最具创新性开源项目”奖
2010 主要开源项目迁移到 Gradle ( Hibernate 和 Spring Framework) • Google:官方推荐的Android编译和构建工具

• Build Tool :2500万/月 下载量 (2021)


2011 JAX 最佳 Java 技术奖
• 业务区域:世界级开发者遍布约 25 个国家/地区和 5 大洲,
含中国
Google 选择 Gradle 成为 Android 默认构建工具 • 客户:全球科技品牌top100中,25%的企业是Gradle
2013
enterprise 的客户

2017
Gradle Build Tool 被TechCrunch列为top 25名开源项目之一 • 客户:200+ 企业付费用户
Gradle 推出 Gradle Enterprise
• 员工:200+员工
IDLE/ INEFFICIENT FLAKY https://gradle.com/
2019 WAIT DEBUGGING
Gradle Enterprise 宣布为 Maven 提供支持
TESTS &
TIME OTHER
2021 Gradle 构建工具达到每月 2500 万次下载里程碑 AVOIDABLE
FAILURES
2022 2022年正式成立Gradle 中国公司
Gradle Enterprise 解决方案概述 -- DPE

INEFFICIENT FLAKY
DEBUGGING TESTS &
OTHER
AVOIDABLE
FAILURES
Gradle Enterprise 技术概览

IDLE/ INEFFICIENT FLAKY


WAIT DEBUGGING TESTS &
TIME OTHER
AVOIDABLE
FAILURES
DPE 构建加速原理

输入 模块 1 实现改变
(Non-ABI)
Gradle 中使用 implementation or api?

Grade task 模块 2 模块 3
编译任务缓存命中
IDLE/goal
Maven INEFFICIENT FLAKY (不用重复编译)

WAIT DEBUGGING TESTS &


TIME OTHER 测试用例会重新执行
AVOIDABLE
模块 4 因为作为运行时类路
径已更改

输出 FAILURES
DPE 构建加速原理

Child Node

Remote
Local cache Child Node
cache

Child Node
IDLE/ INEFFICIENT FLAKY
WAIT DEBUGGING TESTS &
Read
TIME Put Put
OTHER Read
AVOIDABLE
FAILURES
Gradle task
Maven Goal Execution
Gradle Enterprise 单元测试分布式加速方案

IDLE/ INEFFICIENT FLAKY


WAIT DEBUGGING TESTS &
TIME OTHER
AVOIDABLE
FAILURES
Gradle Enterprise 构建扫描对比分析

构建扫描报告

IDLE/ INEFFICIENT FLAKY


WAIT DEBUGGING TESTS &
TIME OTHER
生成比较显示 2个生成之间的生成环境 AVOIDABLE
、依赖树和元数据的差异。它是查明故 Gradle 企业导出 API 允许您将构建数据与您选择的数据解决
障原因的关键工具。 FAILURES 方案结合使用,以进行日常分析。
Gradle Enterprise 构建故障分析

“我是唯一一个看到这种失败的人吗?”
搜索 Maven 和 Gradle 构建故障(如 StackOverflow),或使用 Gradle Enterprise 的高级故障分析功能识别常见但具有破坏性的构建故障。
DPE 构建加速方案应用-- 无侵入

And configure the


Gradle plugin/extension/Event
Add Gradle Enterprise
plugin to build.gradle Service Target to reach the
Gradle Enterprise server

Maven
Add Gradle Enterprise
IDLE/
extension to INEFFICIENT FLAKY
WAIT
.mvn/extensions.xml
DEBUGGING TESTS &
TIME OTHER
AVOIDABLE
Bazel
Add Gradle Enterprise FAILURES
Server as Bazel Event
Service Target in .bazelrc
DPE 工程践行者 – 刘永强

讲师微信 DPE 白皮书

You might also like