什么是DevOps?
它是英文词"development"和"operations"的结合。
定义
DevOps 是一种软件开发哲学和组织文化,侧重于软件开发者(Development)和 IT 运营专业人员(Operations)之间的沟通、协作和整合。DevOps 一词是 "Dev"(开发)和 "Ops"(运营)的组合,代表一种消除这两个世界之间壁垒的方法。
根据2024年 DORA(DevOps Research and Assessment)报告,高水平实施 DevOps 的组织部署频率是低水平组织的208倍,Lead Time 快106倍。
起源
DevOps 这个词最初在2009年由 John Allspaw 和 Paul Hammond 在 O'Reilly Velocity 09 会议上的演讲"每天10次部署"中提出。但这个运动实际上始于更早的2007年,当时比利时独立顾问 Patrick Debois 经历了开发和运营团队之间的持续冲突。
Debois 在2009年在比利时根特组织了第一次"DevOpsDays"——这个会议后来发展成在全球数十个城市举办的全球性活动。从那时起,DevOps 成为软件行业最具影响力的方法之一。
进化
DevOps 已经发展到包含高级实践:
CALMS 模型
CALMS 模型总结了 DevOps 的支柱:
- Culture(文化) — 协作和共同责任的文化
- Automation(自动化) — 自动化重复过程
- Lean(精益) — Lean 原则减少浪费
- Measurement(度量) — 持续衡量绩效
- Sharing(分享) — 团队间分享知识和工具
三种方式(Three Ways)
Gene Kim 定义的 DevOps 核心原则:
- 流动(Flow) — 加速从开发到生产的流动
- 反馈(Feedback) — 创建快速反馈循环
- 持续学习(Continuous Learning) — 实验和从失败中学习的文化
基础设施即代码(IaC)
DevOps 最重要的实践之一是通过代码管理基础设施:
- 基础设施定义 — 服务器、网络和数据库用代码定义
- 版本控制 — 基础设施像普通代码一样进行版本控制
- 恢复能力 — 能在数分钟内恢复整个环境
- 一致性 — 开发、测试和生产环境保持一致
流行工具:Terraform、Ansible、Puppet、Chef、CloudFormation。
DORA 指标
DORA(DevOps Research and Assessment)指标是衡量 DevOps 绩效的四个关键指标:
- 部署频率(Deployment Frequency) — 向生产环境部署的频率
- 变更前置时间(Lead Time for Changes) — 从提交到部署的时间
- 变更失败率(Change Failure Rate) — 导致故障的部署百分比
- 平均恢复时间(MTTR) — 从故障中恢复的平均时间
| 水平 | 部署频率 | 前置时间 | 失败率 | MTTR |
|---|---|---|---|---|
| 精英 | 按需 | 少于一天 | 0-15% | 少于一小时 |
| 高 | 每周一次 | 一周到一个月 | 16-30% | 少于一天 |
| 中 | 每月一次 | 一到六个月 | 16-30% | 少于一周 |
| 低 | 每六个月一次 | 超过六个月 | 16-30% | 超过六个月 |
DevSecOps
DevSecOps 是 DevOps 的扩展,在开发生命周期的每个阶段整合信息安全(Security):
- Shift Left Security — 尽早进行安全测试
- Security as Code — 用代码定义安全策略
- 自动扫描 — 在每次构建中检查安全漏洞
- 持续合规 — 确保代码符合监管标准
常见问题(FAQ)
DevOps 和 Agile 有什么区别?
Agile(敏捷)专注于软件开发,而 DevOps 将协作扩展到运营和部署。DevOps 是 Agile 的自然延伸——它将敏捷原则应用于整个软件生命周期。
DevOps 是一个职位吗?
DevOps 首先是一种文化和方法,而非职位。但实际上,很多人称基础设施和自动化工程师为"DevOps 工程师"。
实施 DevOps 需要多长时间?
完整实施需要12-24个月,但 CI 等单独实践可以在数周内实施。关键是持续改进。
DevOps 适合小型组织吗?
是的。小型组织尤其能从 DevOps 中受益,因为它们有更少的官僚主义和壁垒需要打破。现代云工具使 DevOps 对所有人都可及。
DevOps 和云计算有什么关系?
云计算提供了支持 DevOps 的基础设施——按需服务器、IaC 和托管 CI/CD 服务。大多数 DevOps 组织使用云(AWS、Azure、GCP)。
什么是Blue / Green部署?
这是一种软件部署方法,涉及维护两个完全相同的生产环境,其中一个环境(蓝色)运行应用程序的当前版本,另一个(绿色)运行新版本。...
什么是功能标志?
功能标志,也称为功能开关,是一种技术,允许开发人员在不改变代码库的情况下启用或禁用某些功能。...
CI是什么意思?
持续集成(CI)是一种软件开发实践,开发者定期将代码更改合并到中央仓库中,随后进行自动构建和测试。它是DevOps哲学的核心实践。...
什么是持续集成(CI)和持续部署(CD)?
CI/CD(持续集成/持续交付)是现代软件工程中的关键实践,也是 DevOps 方法的核心支柱。CI/CD 使开发团队能够自动且频繁地集成代码、执行测...
ALM代表什么?
ALM,即应用生命周期管理,指的是从软件应用的初步设计和开发到最终退役的管理过程。...