第1页
夏仲璞 百度工程效率部
第2页
大纲
1 百度工程效率全景:效率核心 & 实践集
2 百度的挑战:大规模协同 + 产品多样性
3 百度工程效率提升的整体思路
4 万人协同规模下的工程效率挑战
5 百度效率工具方案相比组合方案的优势
第3页
工程效率全景:效率核心 & 实践集
用户故事地图 迭代计划 需求拆分 看板跟进
回顾复盘
精益画布 MVP
用户反馈 舆情分析
管 理 实 践 集
工程
复用
基础设施复用
服务复用
工 程 实
代码复用
• 公共库 • 单根代码树
践 • 末端依赖
集 • 代码质量保证
• 代码检索
• 高速编译
工高程速 复迭用代
持续集成 持续交付 灰度发布
工价程值 复验用证
A/B验证
第4页
百度工程效率的挑战:大规模协同 +产品多样性
快 协同人数10000+ 速 增 长 每日代码提交1万次+ 的 协 同 规 源文件3000万+ 模
每月新增需求bug卡片7万+
研发交付效率 从3天到最快3小时
项目迭代效率 从20天到6天
价值验证效率 验证周期缩短至1/10
创业期 v.s. 稳定迭代期 运营驱动型 v.s. 研究型 3-5人团队 v.s. 数百人团队
产 品 开 发 形
态 多 样 性
Web产品 v.s. 移动 v.s 硬件
第5页
百度工程效率提升的整体思路:研发基础设施 x 标准规范 x 最佳实践
以统一的工具平台实现优秀工程实践, 整体提升全公司工作模式和工程效率
研发基础设施
工程 效率
标准规范
用规范筑底全公司工程行为准则, 保障协作、传承
最佳实践
以产品团队为单位应用最佳实践, 以标杆团队引领工程效率持续提升
第6页
百度研发基础设施 = 基础研发平台 + 核心工具插件
需求
开发
交付
需求库
项目管理平台iCafe
产品规划插件 迭代计划插件 看板跟踪插件 分享讨论插件 数据报表插件 Bug创建插件
代码库
代码管理平台iCode
代码检查工具 代码搜索工具 编译工具 单测工具 分支管理插件
产品库
持续交付平台iPipe
构建执行工具 20+测试插件 5种部署插件 打包插件 监控插件
第7页
百度研发基础设施整体思路 – 基础研发平台:场景能力强大
项目管理平台 iCafe
需求/bug管理 产品规划(精益模式) 迭代计划(敏捷模式) 看板跟踪(敏捷模式) 数据报表 分享讨论
代码管理平台 iCode
持续交付平台 iPipe
基于Git的代码库 CR、PR开发协作流程 百度编码规范检查 代码质量多维度检查 主流分支模式(Centralized, Feature branch, Gitflow) 全库代码检索
Build:高速云编译 Test:20+测试服务 Deploy:5+部署方案 发布到产品库 发布上线
第8页
百度研发基础设施整体思路 – 工具:单点能力强大
强大:调度执行工具CTP
高效:代码质量检查工具CodeDr
每日构建量
先进:高速云编译BuildCloud
检查峰值 10万 行代码/分钟
数据驱动:度量工具KaoPu
编译时间(秒)
第9页
万人协同规模下的工程效率挑战
规模下的承载能力挑战:
- 企业级持续交付平台方案 - 高速云编译方案 - TB级代码库的git集群化方案
规模下的管理挑战 - 大规模产品开发“快而有序”
- “用户故事地图”让产品团队聚焦价值交付 - “研发数据链 (LINK ALL)”让需求、开发、交付联动贯通
第10页
RESOURCE
USER TASK
承载能力挑战 – 企业级持续交付平台方案
WEB API CLI
Register Scheduler-engine
Executer
Executer
……
con con con
node
Resource-pool
con con con
node
con con con
node
con con con
node
任务调度:
基于DAG算法的资源效益竞争机制 支持万级任务实时调度
资源管理:
基于容器进行资源管理 自动扩容 自动重加载 可视化管理
监控:
实时反馈任务执行情况 资源池自动预警、伸缩
执行方式:
并行、串行、定时、条件、关健路径
第11页
承载能力挑战 – 企业级持续交付平台方案
Build
功
能
插 集规动需
件 层
Git/svn
群 编
范 检
态 检
求 关
译查查联
Test
功压集压灰 能力成力度 测测测测验 试试试试证
Deploy
产 出一集监 统键群控 一回部反 管滚署馈 理
执
行 串行
层
并行
定时
条件触发
关键路径
调 度
注册
层
分配
执行 统一资源资源
结果 效益度竞争池
第12页
Code Repo
承载能力挑战 – 高速云编译方案 BuildCloud CLI
BuildCluster
Scheduler
Build Node
Build Node
Build Node
workspace
exe 依赖关 系解析
.a1 .o .a2
.o … .o .o … .o
缓存机制 分发 编译
BuildNode
反向依赖管理
反向依赖 编译调度
Module-Deps Management
分布式编译:
极速构建 云端增量编译 反向编译依赖构建
构建能力:
编译 单测 覆盖率检查 代码检查
第13页
承载能力挑战 – TB级代码库的git集群化方案
Sharding
基于repository分片 支持动态扩容
HA
Failover 三重备份
集群管理
集群监控 资源管理 提供可视化的dashboard
安全
支持专属云,物理隔离
第14页
管理挑战 – 大规模产品开发“快而有序”
“用户故事地图”让产品团队聚焦价值交付
- 可视化产品全貌,用户场景\用户行为\用户故事优先级一目了然 - 生成MVP规划,百人协同一条主线 - 同步开发进度,大型产品也可做到进展一览无余
第15页
管理挑战 – 大规模产品开发“快而有序”
“研发数据链 (LINKALL)”让需求、开发、交付联动贯通
第16页
百度效率工具方案相比组合方案的优势
完全支持
部分支持
不支持
用户故事地图
估算
版本规划
迭代计划
管理实践
任务板 燃尽图
看板
看板度量
回顾分析
分享讨论
协作模型
代码搜索
工程实践
代码规范 代码检查
代码评审
编译加速
混合云管理
稳定性&承载能力
工具间整体性&连通性
JIRA+Gitlab+Jenkins
BaiduiCafe+iCode+iPipe
第17页
百度效率工具方案已对外提供SaaS服务
第18页
THANKS
微信公众号:Baidu-EE 咨询邮箱:xiaolvyun@baidu.com QQ群:317759963 门户地址:https://xiaolvyun.baidu.com