乔梁@百度 . 项目管理部
—— 持续交付的魅力
– 百度项目管理部
• 高级架构师
– InfoQ
• 敏捷社区 特约编辑
• 《持续集成》专栏作者
– 《持续交付》的译者
中文站:www.continuousdelivery.info
Agenda
A real story @ Baidu
Devops and Continuous Delivery
Context
a
complex
software
ecosystem
Context
一个复杂的软件生态系统
Context
7 Devs + 2 QAs + 0.3 OP
c/c++ legacy code (10 years old)
7+ modules
few automation tests for a single module
deploy to 170+ boxes
6 months ago
3个月的大版本发布
紧急修复较多
紧急需求
Pray
Pray
Play
now
3 周小版本发布
紧急修复很少
没有紧急需求
Play
6个月前
多分支并行
持续集成
主干开发
只在发布时拉分支
trunk
release 1.1 release 1.2
6个月前
手工测试
内建质量
功能验收测试
单元测试
集成测试
系统测试
非功能验收测试
(容量、
安全,… …)
演示
易用性测试
探索性测试
业务导向的
技术导向的
支
持
开
发
过
程
的
评
判
项
目
的
内建质量
自动化
功能验收测试
单元测试
集成测试
系统测试
自动化
非功能验收测试
(容量、
安全,… …)
自动/手工
手工
演示
易用性测试
探索性测试
业务导向的
技术导向的
支
持
开
发
过
程
的
评
判
项
目
的
6个月前
手工部署
一切皆版本控制
应用配置信息
环境配置信息
数据信息
环境
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
化
单一部署脚本
6个月前
铁路警察
共同的目标
频繁、高效地沟通
共担一些KPI
What we got now
Details
Commit
Commit
Commit
Commit
.
.
.
.
A
B
C
G
Acceptance
Acceptance
Acceptance
Acceptance
.
.
.
.
Acceptance
Interface
function
模块级 子系统级 系统级
performance
Interface
function
试运行
Ping
发布
performance
A
子系统测试 系统测试 试运行 生产环境 B
G
自动 手动
每天 每周 三周
自动化部署流水线
可视化
可跟踪
易审计
部署流水线(deployment pipeline):
是软件系统的构建、部署、测试和审批过
程的自动化实现。
Time
1. 每次提交代码的质量都达到生产环境可部署
2. 小步增量发布
持续交付
small feature chunks
Lesson learned
软件的发布过程必须是可重复、可信赖的
把几乎所有环节都做成自动化
把所有内容都纳入版本控制
让痛苦提前,并不断练习
内建质量
“完成”就意味着“已发布”
所有人对交付负责
持续改进,需要耐心
Lesson learned
只构建一次二进制包
在每个环境上都使用相同的方式部署
对部署结果进行冒烟测试
每种部署环境都应该尽可能相似
任何地方出现失败,都要立刻停工
devops?
Value Stream
Continuous
Integration
Agile
Value Stream
Continuous
Integration
Agile
devops
devops
http://en.wikipedia.org/wiki/DevOps
devops = culture + tools
Culture
Tools
automation
– environment provisioning
• (Puppet, Chef, ControlTier, etc)
– app deployment & data migration
• (Capistrano, DBdeploy, etc)
– logging & monitoring
• (Splunk, Nagios, Munin, etc)
Q&A
@乔梁QL
http://blog.csdn.net/tony1130
qiaoliang.email@gmail.com
http://www.continuousdelivery.info
We are hiring now.
Email: pmo@baidu.com