Module 02 · DevOps & CI/CD开发运维与持续集成·持续交付
Definition of DevOps什么是 DevOps?
学习目标
观看本视频后,你将能够:
- 定义 DevOps,并描述其 基本特征。
DevOps究竟是什么?
DevOps这个词,现如今已经成为了一个行业内过度使用的“流行语”。如果你问10个人如何定义DevOps,可能会得到11种不同的答案。
因此,为了澄清这个概念,让我们回溯到其起源,再逐步往前推。
DevOps的起源
在 2009年,Patrick Debois 首次提出了“开发与运维(Development Operations)”这一术语。他表示:
“开发与运维是敏捷开发环境的扩展,旨在增强整个软件交付过程。”
DevOps 是敏捷(Agile)的一种延伸。我们接下来会讨论敏捷对开发团队(Devs)所做的贡献,以及它对运维团队(Ops)并没有产生多大帮助。
Patrick Debois 提出:“如果我们把敏捷方法应用到运维上呢?如果我们让开发和运维团队一起工作呢?”这就是为什么有时候我会称DevOps为“运维的敏捷(Agile for Ops)”。
DevOps的本质
DevOps 是对开发和运维团队必须 打破隔阂,开始 共同协作 的一种认识。
我喜欢将DevOps定义为:
“开发与运维工程师在整个开发生命周期中紧密合作,遵循精益(Lean)和敏捷(Agile)原则,以便快速且持续地交付软件。”
DevOps的核心目标
- 快速:我们需要快速交付软件。
- 持续:我们需要持续交付软件,避免滞后。
- 协作:开发和运维团队需要 全程合作,共同完成目标。
文化转型
要实现这一目标,我们必须转变为一种 协作文化,重视 开放性、信任 和 透明度。
我们还需要采纳一种 新的应用设计,不再需要为增加一个功能就重新部署整个系统。
现代化应用系统要求能够快速部署,而不是像过去那样,手动部署大型单体应用十次以上。
DevOps中的自动化
自动化部署的重要性
随着应用的微服务化,人工部署已变得不可行。因此,我们必须通过 自动化 来加速和提高应用交付的一致性,以便 快速且稳定 地交付软件。
“我们通过微服务解决了一些问题,同时也带来了新的问题,这些问题通过自动化来解决。”
动态的软件定义平台
我们还需要一个 动态的软件定义平台,以便 持续部署。你不能再等待 几天或几周 来配置服务器并进行部署。
你应该能够说:“我需要一个环境,而且我现在就要。”
然后,系统自动创建环境,部署应用,软件就能正常运行。
DevOps的误解
DevOps不是简单的开发和运维协作
DevOps并不只是开发和运维团队一起工作,而是一次 文化的变革。
- DevOps不是:将开发和运维团队合并,并简单地“完成”任务。
- DevOps不是:一个独立的团队。
- DevOps不是:一套工具。虽然有很多工具可以支持DevOps,但这些工具只能 强化 你的DevOps文化,而不能改变它。
你无法通过购买工具套件来成为DevOps。
DevOps不是自动化的代名词
许多人认为,雇佣懂得所有DevOps工具的人就能完成自动化,进而使公司成为“DevOps”。
这并不是DevOps。开发者(Dev)依旧在做原本的事情,运维(Ops)也只是自动化了某些任务而已。
DevOps 不是仅仅关于自动化运维,而是 开发与运维共同协作 的过程。它需要两者结合,形成一个团队,一个共同的目标和衡量标准。
总结回顾
在本视频中,你学到了:
- DevOps并非简单的开发和运维协作,它是一场文化的变革。
- DevOps是开发与运维工程师在 整个开发生命周期中共同合作,遵循 精益 和 敏捷 原则,以便快速和持续地交付软件。
- DevOps强调 自动化,但它的核心是开发和运维的 密切协作,并不是单纯的工具使用或运维自动化。
DevOps不是一个工具,而是一种文化的转变。