1.4.3 DevOps
DevOps 是另一个流行语,但有时也被误解了。当转向云原生时,这是一个需要掌握的重要概念。
DevOps 的起源很奇特。如果您有兴趣,我建议您在 YouTube 上看看 Ken Mugrage 的演讲。其中一个令人好奇的方面是,这部电影的创作者决定不提供这个概念的定义。结果是不同的人有不同的理解,我们最终使用 DevOps 表示了很多不同的东西。
在 DevOps 的所有定义中,我找到了 Ken Mugrage 提出的定义。他强调了 DevOps 的真正含义,其中包含大量信息也很有趣。
一种文化,在这种文化中,人们不分头衔或背景,共同规划、开发、部署和运维一个系统。
因此,DevOps 是一种文化,它是关于为了一个共同的目标而共同努力的。开发人员、测试人员、运维人员/运维工程师和其他人员,无论其职称或背景如何,都会参与,一起把想法带到生产中。
这意味着各自为战的终结,功能团队、QA 团队和运维团队之间不再有隔阂。DevOps 通常被认为是敏捷的自然延续,这也是小团队经常使用的概念,来向客户提供价值。亚马逊首席技术官 Werner Vogels 在 2006 年的一句著名的话,更简洁的描述了 DevOps,那时 DevOps 还未成型:“您建立它,您运行它”。
在定义了什么是 DevOps 之后,让我们简要介绍一下它不是什么。
- DevOps 并不意味着没有运维。一个常见的错误是认为开发人员负责运维,这里运维人员的角色消失了。这是一种合作。一个团队包括这两种角色,有助于提高团队的整体技能,将创意变成产品。
- DevOps 不是一个工具。像 Docker、Ansible、Splunk 和 Prometheus 这样的工具通常是称为 DevOps 工具,但这是错误的。DevOps 是一种文化。您不会因为使用这些工具而成为 DevOps 组织。换句话说,DevOps 不是产品,而是相关促成者的工具。
- DevOps 不是自动化。即使自动化是 DevOps 的重要组成部分,但不是 DevOps 的定义。DevOps 是关于开发者和运维人员从构思到实践的合作,同时可能自动化一些流程,如
持续交付
。 - DevOps 不是一个角色。如果我们认为 DevOps 是一种文化,一种观念,很难理解 DevOps 角色。然而,对 DevOps 工程师的要求越来越高。通常,当招聘人员寻找 DevOps 工程师时,他们需要的技能包括熟练使用自动化工具、脚本和 IT 系统。
- DevOps 不是一个团队。没有充分了解上述风险的组织,最终会保持与以前相同的思路。只不过是这样变化:添加一个 DevOps 筒仓(silo, 参考 Analysing the DevOps Silo)替换 Ops 筒仓或什么别的筒仓。
开发人员和运维人员之间的协作,在云原生中至关重要。您可能已经注意到,设计和构建云原生应用程序,需要您始终记住您将在哪里部署这些应用程序:云端。与运维人员合作允许开发人员设计和制造更高质量的产品。它叫 DevOps。但是让我们记住,这个定义不仅仅适用于开发人员和运维人员。相反,它泛指各类人,不分头衔或背景。这意味着合作也在其他角色之间进行,如测试人员和安全专家。他们共同负责整个产品生命周期的工作。有了 DevOps 思维,您可以真正实现 CNCF 定义的云原生应用目标:“允许工程师用最少的劳动,进行频繁的和可预测的重大功能更新”。