Coursera 笔记

Module 02 · DevOps & CI/CD开发运维与持续集成·持续交付

Definition of DevOps什么是 DevOps?

Coursera ↗

学习目标

观看本视频后,你将能够:

  • 定义 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不是一个工具,而是一种文化的转变。