DevOps的前世今生

article/2025/8/30 4:22:57

导语

DevOps诞生已经13年了,你理解他吗?

为什么相伴了13年,你仍然对他不甚了了呢?

你真的以为DevOps是一个筐,什么东西都可以往里装吗?

你以为DevOps落地就是找一个JIRA(敏捷管理工具)+ CICD吗?

今天,就跟大家聊一聊DevOps,希望聊完之后,你对上面的问题有更明确的看法。至于,DevOps如何落地,限于篇幅,咱们今天不聊。

DevOps是什么?

1. DevOps的历史

先讲一个故事。1908年,有人曾经问过基辛格:“基辛格先生,您可以解释一下昨天波斯尼亚所发生的事件吗?”基辛格先生回答:“哦,是这样的。这要从1722年谈起。”

为什么基辛格要扯那么久远的事?因为历史是一串连锁反应的事件,要想理解后来发生的事情,必须理解由一连串历史事件所形成的背景。

这叫历史观

同样,我们理解DevOps,也需要从历史来看他,咱们直接上图来了解DevOps的诞生和发展。

注:图片来源于:The history of DevOps: A visual timeline 

大概用文字说明一下:

  1. 2007 年:

    一切始于 2007 年,当时Patrick Debois开始负责数据中心迁移工作。在这个项目的过程中,他经历了很多挫折,从问题的开发端不断来回切换,到运维端等待的一堆操作。他意识到,在将项目从开发转移到运维过程中花费了(或者更确切地说是浪费了)大量的精力和时间。然而,弥合这两个世界之间巨大的鸿沟是不可能的。

  2. 2008 年:

    2008 年在加拿大多伦多举行的敏捷会议上,一位名叫 Andrew Shafer 的人试图安排一场名为“敏捷基础设施”的聚会。Patrick参加了这次会议,他很兴奋终于遇到了一个志同道合的人。他在会议上找到Andrew,并在走廊上与他交谈。后来,他们继续为各种想要发表想法的人组成一个讨论组,这些想法将有助于为开发和运维之间的巨大差距带来相关的解决方案。

  3. 2009年:

    在最初阶段,并没有多少人从这个角度提出他们的想法。然而,事情在 2009 年 6 月开始好转,Paul Hammond 和 John Allspaw 举办了一场题为“每天部署 10 次以上:Flickr 的开发和运维合作”的演讲。Patrick在比利时的家中,观看了该演示文稿的流媒体视频。它的观点引起了他的高度共鸣,使他意识到这正是他一直在寻找的解决方案。受这次讲座的启发,他安排了一次系统管理员和开发人员的聚会,他们坐在一起讨论开始弥合这两个不同领域之间鸿沟的最理想方法。该活动名为 DevOpsDays,于 2009 年 10 月的最后一周举行。

  4. 2010 年:

    由于这一事件引起了这两个领域专家的极大关注,因此在用户使用#DevOps 标签的 Twitter 上进行了热烈的辩论。到这个时候,DevOps 成功地获得了起初的追随者,成员们开始广泛地推动他们各自的想法。

  5. 2011 年:

    2011年 3 月,Gartner 的 Cameron Haight 预测 DevOps 将在接下来的几年中上一门课程。凭借他积极的态度,许多其他成员和用户纷纷涌入并开始实施具有广泛想法的 DevOps。很快,企业无论规模大小都开始采用 DevOps。DevOps 是工作区中最内部的框架之一,并且开始采用这些新实践。随着 DevOps 的名气越来越大,它是一个类似于 Agile 的东西。

  6. 2015 年:

    纳入 SAFe 的 DevOps SAFe 在企业领域迅速获得关注,DevOps 在其中得到采用和扩展。

  7. 2016 年:

    DevOps 是高绩效公司的新规范。

  8. 2018 年:

    DevOps 状态报告定义了从 0 级到 5 级的 5 阶段方法,引入了一种描述性、务实的方法来指导团队执行 DevOps 计划。

其实,要更详细了解DevOps,需要了解DevOps诞生之前的历史,也就是软件工程的历史,从机器语言、编译语言、高级编程语言、面向过程开发、面向对象开发,从瀑布模型到敏捷,特别是理解瀑布模型和敏捷。限于篇幅,我这里就不详细谈了。

2. DevOps的本质

由DevOps诞生的历史,我们可知,DevOps的出现就是为了解决Dev团队和Ops团队之间的鸿沟。那么,他们之间的鸿沟是什么呢?——Dev要快,Ops要稳。具体来说,Dev要求变更快,包括(开发快、测试快、上线快),而Dev要求稳,他们讨厌变更,因为生产环境不稳,他们要负责任。所以,很多大公司上线需要各种审批,各种签字画押,这都是在给变更增加障碍。

我们再给DevOps定个性——DevOps的出现,是为了解决一个软件工程领域的不同部门(或角色)之间的协作问题。

这里可能你会有另外的问题:

  • 为什么不需要解决产品经理、开发人员、测试人员之间的协作问题?

    答:需要解决。但已经有了解决方案——敏捷(Agile)。敏捷是解决产品经理、开发人员、测试人员协作的框架,但把Ops给落下了。所以,从这个角度上讲,Devops是敏捷的增强版,DevOps = Agile Pro

  • 敏捷的核心又是什么?

    敏捷的核心是:需求小颗粒度(story)交付 + 快速反馈。其实,做好敏捷本身,比消除Dev和Ops团队之间的鸿沟重要得多,强烈建议读者好好学习一下敏捷。

我们再来看一下DevOps在维基百科上的定义,英文版本和中文版本对照一下:

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary to agile software development; several DevOps aspects came from the agile way of working.

DevOps 是一组结合了软件开发 (Dev) 和 IT 运营 (Ops) 的实践。 它旨在缩短系统开发生命周期并提供高质量软件的持续交付。 DevOps 是对敏捷软件开发的补充; DevOps 的几个方面来自于敏捷的工作方式。

3. DevOps包含什么

圣经里面有句话:日光之下无新事。解决协作问题,在经济学、管理学、组织学等学科里面早已经有了论述。DevOps这个框架里面的包含的内容,也并没有什么特别之处。一般而言,解决协作问题的框架如下:

对应到DevOps,包含的内容如下:

  • 认知。Ops需要改变认知,软件工程可以做到又快又稳,二者并不矛盾。
  • 目标。Ops需要跟Dev对齐目标,都是为了又快又稳的交付价值。
  • 指标。为了达成目标,需要有个指标来衡量,这就是DevOps的4个指标,这4个指标都做得好,才算DevOps做得好,缺一不可。
    • 变更提前期。指代码变更提交到主干分支与进入可部署状态之间的时长
    • 变更失败率。变更失败率是指生产后需要热修复或其他补救措施的代码变更百分比。
    • 部署频率。将新代码部署到生产环节的频率。
    • 平均恢复时间。部分服务中断或完全故障中恢复所需的时间。
  • 为了达成目标与指标,才有了各种创新的组织架构、流程、标准、工具、模板、指南。

所以,对齐了目标和指标之后,各种手段和方法都可以包含在DevOps里面。从协作的角度上讲,消除Dev与Ops团队之间的鸿沟,在对齐了目标与指标的前提下,重点是最好信息和交付物的高效流转

4. 关于DevOps,正在发生什么?

Ops正在弱化。

  • 云计算的发展,让企业不用做基础设施的运维、或者只用少量的人做基础设施的运维。
  • K8s的发展,让应用的运维越来越标准化,应用运维变得很简单,应用部署升级、应用的韧性、应用的弹性、应用的可观测性,可以由开发人员轻易完成,不再依赖Ops团队。

http://chatgpt.dhexx.cn/article/eOI9RkRX.shtml

相关文章

Learning DevOps

什么是 DevOps DevOps(Development & Operations)/de’vps/ 是一组过程、方法与系统的统称,用于促进开发 (Dev)、技术运营 (Ops)和质量保障(QA)部门之间的沟通、协作与整合。 DevOps 的开发流程 软件从零开始到…

DevOps思想

什么是DevOps? DevOps是一种思想或方法论,它涵盖了开发、测试、运维的整个过程!DevOps强调开发、测试、运维、质检(QA)部门之间的有效沟通与协作。强调通过自动化的方法管理软件变更、软件集成。使软件从构建到测试、发布更加快捷、可靠&…

DevOps的发展史

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! — 1 — 可操作的概述 多亏了云计算和开源,软件开发的速度从几年缩短到几个月。每家公司都在向一个软件公司转变。DevOps 已迅速成为公司大规模开发和部署软件的最有效方…

DevOps——简析

节选自百度等资料 知乎解析连接 一、DevOps的目的 只有一个:提高开发到运维发布版本的效率。 1.初级应用:开发运维一体化 2.最高阶的应用:端到端的概念。 DevOps 的三大支柱之中,即人(People)、流程&…

DevOps推广实践总结

中大型团队在敏捷DevOps转型过程中常见的实践总结 目录 1、聘用外部DevOps顾问 2、建立DevOps共识 3、采用“DevOps改进”而非“DevOps转型” 4、构建“比学赶超”的组织氛围 5、规范化DevOps实践 1、聘用外部DevOps顾问 小型团队可以不用聘用昂贵的外部教练,因…

DevOps

DevOps 一、DevOps的由来和概念1. 由来2. DevOps概念解析(1)来自不同渠道和来源的定义:(2)其他摘录 二、DevOps 工作流程1. DevOps的好处与价值2. DevOps能力环 三、devops流程工具四、DevOps发展现状哪些互联网公司采…

Devops的概念

1、什么是DevOps? 答:DevOps是产品开发过程中开发(Dev)和运营(Ops)团队之间的灰色区域。DevOps是一种在产品开发周期中强调沟通,集成和协作的文化。因此,它消除了软件开发团队和运营…

DevOps—基本概念

DevOps—基本概念 1. DevOps2. CI/CD 1. DevOps 维基百科定义: DevOps是一组过程、方法与系统的统称,用于促进 开发、技术运营 和 质量保障(QA) 部门之间的沟通、协作与整合。我理解DevOps是一种软件管理思维模式。 为什么会有D…

DevOps简介

一、DevOps定义:Development和Operations的组合,突出重视软件开发人员与运维人员的沟通合作,通过自动化流程使得软件构建、测试、发布更加快捷、频繁和可靠。 它是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成&#xf…

什么是 DevOps?看这一篇就够了!

文章目录 一、前因二、记忆三、他们说……3.1、Atlassian 回答“什么是 DevOps?”3.2、微软回答“什么是 DevOps?”3.3、AWS 回答“什么是 DevOps?” 四、DevOps 文化4.1、什么是文化?4.2、什么是 DevOps 文化?4.3、领…

Devops基本概念和原理

一、什么是DevOps 1、 DevOps概述 DevOps,即Development and Operations,是一组过程、方法与系统的统称,用于促进软件开发、运维和质量保障部门之间的沟通、协作与整合。DevOps的出现是由于软件行业日益清晰的认识到:为了按时交…

DevOps概念及搭建全过程(Jenkins、Harbor、SonarQube、K8s)

DevOps入门及过程搭建 在如今互联网的格局下,抢占市场变得尤为重要,因此敏捷开发越来越被大家所推崇。于是,慢慢的有了DevOps这个概念,大致意思是开发-运维一体化。 1 DevOps概念 1.1 基本概念 可以看到上图是一个无穷大的一个符…

Hzero数据库初始化

一:获取种子数据: git地址:https://gitlab.flytiger.net/huying-hzero/hzero-resource.git 二:配置数据库信息 打开hzero-resource项目,编辑application.yml配置文件,修改对应的数据库连接信息 三:初始化…

【Python学习笔记】深入剖析随机数种子

深入剖析随机数种子 一、定义1.1 作用 二、实战2.1 同样的随机数种子2.2 不同的随机数种子2.3 不指定随机数种子 三、随机数列的大小是多少呢?3.1 设定为百万,没问题3.2 设定为千万,没问题3.3 设定为亿,没问题3.4 设定为十亿&…

pytorch的主要模块

1. torch模块 torch模块包含了一些pytorch的常用激活函数,如Sigmoid(torch.sigmoid)、ReLu(torch.relu)和Tanh(torch.tanh);同时也包含了pytorch张量的一些计算操作,如矩…

np.random.seed()随机数种子学习笔记

文章目录 np.random.seed()随机数种子为什么使用np.random.seed()什么是np.random.seed() 代码理解np.random.seed()的参数适用情况 np.random.seed()随机数种子 为什么使用np.random.seed() 在机器学习中,有很多的操作和算法带有一定的随机性,所以在复…

种子项目详解

引言 在上一篇文章简单讲解了种子项目搭建,但是项目搭建起来是为了方便我们后续开发的。因此了解整个项目的架构,以及各个Maven模块是如何各司其职、相互依赖,是至关重要的。 这里分成两块介绍 lenosp自带的内容新增扩展的内容 lenosp自带…

【Abp VNext】实战入门(九):DbMigrator 自定义项目所需种子数据

前言: 项目开发过程中难免会涉及到一些业务相关的基础数据,我们称之为种子数据,主要为了方便测试功能或者展示效果; 常规做法是手动到数据库表创建数据,但是随着表结构更改或者数据清空后,又要重新录入基…

区块链模块化的大胆尝试,解读公链Celestia

作为以链游为主的社区,暴躁兔也会时常关注加密行业的其他赛道和方向。对于目前市场而言,公链的机会与红利仍然存在,且相对而言,技术创新较多,同时资本也比较喜欢这样的赛道。今天为大家讲解的是Cosmos生态的项目Celest…

scrapy_redis种子优化

前言: 继《scrapy_redis去重优化(已有7亿条数据),附Demo福利》优化完去重之后,Redis的内存消耗降了许多,然而还不满足。这次对scrapy_redis的种子队列作了一些优化(严格来说并不能用上“优化”…