Professional Documents
Culture Documents
建设开发人员生产力工程
刘永强
Gradle 大中华区技术负责人
02 DPE的特征和应用收益
03 DPE最佳实践-Gradle Enterprise
企业生产力挑战 -- DPE
企业生产力 = 速度 * 效率
PART 01
如果你可以做到...
企业生产力建设演进
• 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 目标导向 --- 支持企业核心业务目标
VP/Director QUALITY OF
TTM PRODUCTIVITY
Engineering Drivers Fast Delivery Resource Efficiency SERVICE
Delight Customers
每个工程年约52个工作周
⬢ 构建工具市场将持续分散的状态,这种分
散存在于生态系统内部,也存在于跨生态
系统间,以及大多数大公司内部。
⬢ 任何通用商业加速技术和分析平台,都可
能推动DPE发展,为企业生产力带来提升。
IDLE/ INEFFICIENT FLAKY
WAIT DEBUGGING TESTS &
TIME OTHER
⬢ DPE是在现有Devops技术下,新的开发效
率提升手段
AVOIDABLE
FAILURES
DPE 践行者 -- Gradle Enterprise
企业生产力 = 速度 * 效率
PART 03
Gradle 公司
• TechCrunch:全球25名最具价值开源项目之一
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 技术概览
输入 模块 1 实现改变
(Non-ABI)
Gradle 中使用 implementation or api?
Grade task 模块 2 模块 3
编译任务缓存命中
IDLE/goal
Maven INEFFICIENT FLAKY (不用重复编译)
输出 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 单元测试分布式加速方案
构建扫描报告
“我是唯一一个看到这种失败的人吗?”
搜索 Maven 和 Gradle 构建故障(如 StackOverflow),或使用 Gradle Enterprise 的高级故障分析功能识别常见但具有破坏性的构建故障。
DPE 构建加速方案应用-- 无侵入
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 工程践行者 – 刘永强