发布于 2026-01-06 8 阅读
0

什么是 DevOps?我为什么要关注它?

什么是 DevOps?我为什么要关注它?

DevOps 的定义最棒的地方在于:它有太多不同的版本可供选择。关于这个行业最新热门词汇,已经有很多文章、书籍和课程进行了探讨。围绕它还涌现出了网站、会议,甚至整个公司。

我们拥有思想领袖、实践者和试图跟上这股浪潮的人,但我们唯一缺乏的是对它究竟是什么的清晰定义。本文应该能让你对此有更清晰的了解。

这是解释 DevOps 实践系列文章的第一篇,我们将从宏观层面开始,逐步深入探讨。

那么,DevOps 到底是什么?   

DevOps 不是软件,也不仅仅是一种方法论,而是一种文化。它无法购买或下载,但可以学习。大多数定义都以运维和开发必须协同工作为出发点,并辅以自动化。但它的内涵远不止于此。

DevOps 不是:

  • 仅仅是将一切自动化。
  • 迁移到容器/微服务架构
  • 持续集成

关于这一点有很多误解和迷思。你可能会听到这样的说法:

“加入一些 Kubernetes,这样我们就可以实现 DevOps 了!”

你不能仅仅部署容器、一些自动化工具和持续集成/持续交付(CI/CD)就说“我们现在就是DevOps了”。这些东西确实能实现DevOps,但DevOps更重要的是人,而不是技术。

“现在开发人员也兼任运维人员,反之亦然。”

虽然这没错,但通常被夸大了。这些群体之间的重叠比以前更多了,但角色仍然划分得很清晰。仅仅告诉工程师们现在必须自己配置机器,并不算是真正采用了DevOps。

DevOps 就是像大公司那样每小时发布一次产品。

虽然这可能是一个目标,但这只是DevOps文化整体目标的一小部分。每小时发布劣质代码并非进步。

DevOps 是:

一种思维模式和方法论:

  • 促进沟通与协作
  • 专注于快速IT交付
  • 利用工具快速行动

DevOps 专注于利用反馈循环来缩短软件开发生命周期 (SDLC),从而以更快的速度开发功能和修复错误。

DevOps 的一个重要方面是专注于更小、更频繁的版本发布。过去,我们发布新版本的软件可能需要数月甚至数年,而现在,我们只需几天甚至几小时就能完成。

我将重点介绍批量大小和在制品的概念,因为它们对这个过程非常重要。

DevOps 的总体目标是在不让工程师过度劳累的情况下提高速度和质量。

DevOps 的主要原则

DevOps 的主要原则在DevOps 的三种方式中得到了清晰的阐述。

方法一:系统思考

什么是DevOps?

第一种方法是系统思维。它不关注快速的IT部门或快速的开发团队,而是将两者视为一个整体系统。他们的目标是以最快的速度将想法转化为实际功能。这就是你的价值流。其背后的理念很简单:一旦确定需要开发某个功能,开发人员就负责创建,IT部门则以最快的速度进行部署。   

自动化在这里发挥着重要作用,因为它能让你以最快的速度将代码推送到系统中。

成功后,你提交的代码会自动快速高效地推送、测试并集成到客户系统中。

方法二:放大反馈回路

什么是DevOps?

第二种方法与建立反馈循环有关。开发人员将代码推送给运维团队,运维团队则提供关于该软件的反馈。然后,开发人员根据这些反馈修改或改进软件。如此循环往复。

以下是一些IT反馈示例:

  • 速度
  • 功能
  • 测试结果

方法三:持续实验和学习的文化

什么是DevOps?

第三种方法建立在现有反馈循环的基础上,并创建更多自我强化的反馈循环。它鼓励在短周期迭代中不断进行实验,从错误中吸取教训,并从改进中获益。   

实验环节至关重要。DevOps 是一个学习过程,它需要你尽快提出想法、付诸实践并从中学习。六个月的发布周期根本无法做到这一点,如果把时间浪费在软件迁移上,也无法实现这一点。

DevOps 创造了一种学习文化,这种文化以小而高效的工作负载为基础,并利用自动化将人们从繁重的工作中解放出来,让他们从事更有意义的工作。

那么,让我们来分析一些问题,看看我们为什么要费心采用 DevOps。

DevOps解决了哪些问题?

我从事IT和开发工作近20年了。更准确地说,我“还记得IT曾经是成本中心”的时候已经“入行”了。我还记得大约在2011年第一次听到“DevOps”这个词。我一位热情洋溢的技术朋友开始滔滔不绝地讲述IT运维和开发人员如何将职责合并,以及这将如何改变世界。

我的第一反应是“太棒了!我喜欢IT运维,而且我本身就是个开发人员。现在我居然可以配置机器了?简直完美!” 我可不是在讽刺,即使离开IT行业多年,我仍然对它充满热情。能以开发人员的身份参与IT相关工作,这个想法对我来说极具吸引力。这意味着我个人几乎没有抵触情绪,这或许也是我如此努力争取的原因。

我现在对DevOps的理解比以前更深入了,但我仍然觉得自己算不上专家。它本身就是一个不断发展变化的领域。不过,我确实看到很多变化都直接源于DevOps思维的采纳。

DevOps 的最大目标之一就是消除瓶颈

开发过程中一直存在瓶颈,而且将来也永远会存在。瓶颈可能出在人身上,可能出在技术上,也可能出在官僚作风上。DevOps 文化力求尽可能地减少所有瓶颈。

1. 释放节奏

你听过这句话多少次?

我们必须等到版本发布后才能专注于此。

由于批量生产规模庞大且需要大量人工部署,每次软件发布都是一件大事。团队已经仔细对缺陷和功能进行了分类,并决定了哪些内容将包含在下一个版本中。其他所有工作都暂时搁置。

除非在你开发新软件的六个月期间出现什么关键问题,否则一切都没问题。安全性和合规性问题就是其中之一。如果存在重大的安全漏洞,你必须立即编写补丁并修复它,而不是几个月以后。所以,作为一名优秀的工程师,你会想办法暂时把它集成到软件中。

随着这类问题越来越多,你眼睁睁地看着截止日期一再推迟,同时还要忙着进行紧急修复和实施,并将这些修复程序整合到新软件中。

DevOps 解决这个问题的方法是:让软件发布不再像以前那样引人注目。我们不再为了软件部署而给团队带披萨和蛋糕了。软件发布每周、每天甚至每小时都在发生。

通过将工作分解成更小的部分并不断整合,您不再需要等待数月才能实施更改。

2. 过度劳累的工程师

这句话怎么样?

我们得等简把这件事处理好。这还需要一段时间,她现在有很多事情要忙。

如果你在这个行业工作超过一周,你肯定认识这种工程师。你也可能曾经是这种工程师。他们对某个特定领域或技术了如指掌,以至于完全将其视为己任。

他们聪明、积极进取,对项目的成功乃至整个公司的成功都至关重要。他们可能是基础设施工程师、开发人员,或者担任其他各种角色,充当软件的“把关人”。

这种瓶颈会给你的团队带来诸多问题。没有他们的参与,软件就无法快速迭代。更重要的是,他们工作过度,牺牲了与家人朋友相处的时间,并且长期处于压力之下。这会导致他们出现健康问题,甚至可能最终离开公司。

DevOps 如何解决这个问题:打破信息孤岛,将责任分配给更多团队成员;将工作分解成更小的任务,从而优化流程。这减轻了任何个人在推动工作流程方面的压力。

3. 非计划基础设施请求

我需要一台服务器,在我们拿到服务器之前,我们无法继续进行下去。

我职业生涯早期从事的是资产配置工作。以下是我的通常工作流程:

  • 收集需求
  • 设计服务器
  • 订购零件(如果手头没有的话)。
  • 组装机器
  • 给它装上操作系统
  • 配置软件
  • 在架子上找个地方。
  • 插上电源
  • 为需要的人提供访问权限

我以前每天都要重复做这些事。别误会,我很喜欢这份工作,但我也很高兴现在我们不用再这么做了。这些工作很费时间,我记得以前可以同时操作大约5台机器,后来就开始出错,遗漏细节了。

去年,我获取服务器的过程与现在大不相同。

  • 收集需求
  • 启动 Jenkins,选择一个配置文件
  • 必要时添加一些参数
  • 点击按钮
  • 获取服务器的 IP 地址

如果我需要登录 Azure 并在那里部署,流程也大同小异。

猜猜哪个耗时更长?现在虚拟化和云平台正在解决这个问题,但DevOps是其发展的重要驱动力。

DevOps 如何解决这个问题: DevOps 文化倡导一切自动化,包括服务器配置和容器部署。过去我们像给宠物起名字一样给服务器命名,现在我们像给牲畜编号一样给它们编号。它们应该是通用设计的实例,而不是特殊的个体。

4. 测试阶段速度减慢

修复程序还需要一到两周才能发布,目前还在测试阶段。

测试和质量保证曾经是一个糟糕透顶的过程。我记得开发过的软件好几个月都没正式发布。这部分是由于老式的瀑布式开发模式一次性发布大量软件,部分原因则是测试耗时过长。

这并非测试人员的错。我们一次性把一大堆软件塞给他们,还附带了一份长长的功能和修复bug清单……大概吧。迭代规模如此之大,以至于当测试人员发现bug时,我们已经在上面叠加了一大堆软件。所以,到那时,回归问题已经普遍存在了。

DevOps 如何解决这个问题:这里有两个关键的改变:

  • 批次大小:较小的批次工作量意味着更低的风险,并且每次只需检查一个小型功能或缺陷。测试完成速度更快。

  • 自动化:借助 DevOps,现在很多测试都实现了自动化,您可以编写代码、提交并观看它完成整个测试流程。然而,人工测试并没有过时,因为他们参与了测试自动化的构建,并在过程中进行抽查。

DevOps 让测试人员能够更高效地工作。

大局

DevOps可能会给你的组织带来巨大的文化变革。然而,在当今时代,它至关重要。

  • 企业创新速度比以往任何时候都快。
  • 技术准入门槛比以往任何时候都低。
  • 你可以在不牺牲质量的前提下提高速度。

这就是大家都在谈论DevOps的原因。这也是为什么人们争相采用新技术的原因。

这是DevOps系列文章的第一篇,我将在此解释DevOps原则以及如何应用这些原则。我们将探讨一些用例和实践,帮助您作为开发人员、运维人员或经理,充分利用这场文化变革。

如果您想在此期间了解更多关于DevOps的信息,

注意:12 月我将举办一场题为“实现低风险发布”的网络研讨会,届时我将探讨如何运用 DevOps 原则来提升发布速度。如果您想参加,请在此注册!

文章来源:https://dev.to/pluralsight/what-is-devops-4lfa