什么是DevOps?如何使用DevOps?

无论您是在维持公司基础设施的正常运行,还是在为客户的IT问题管理提供支持,抑或是在构建、测试或修复软件,还是在保护同事免受安全威胁,您都可能接触过 DevOps。

IT问题管理

毕竟,这个术语已经出现了 15 年,其采用率也呈指数级增长。然而,这并不意味着它的定义、定位和应用已经普及。它导致了许多语义上的混乱,如 BizDevOps、DevSecOps、AIOps、NoOps、FinOps 等。这一切都加剧了人们对 DevOps 及其与数字生态系统中任何人的相关性的困惑。因此,让我们花点时间来揭开 DevOps 背后的基本原理、原则和不为人知的真相。

一切是如何开始的?

首先,让我们从什么是 DevOps 的通用定义开始。仅仅这个简单的问题就能引发数小时的争论、争吵甚至宗教战争。因此,无论如何,让我们回到源头,寻找一个可靠的答案。帕特里克-德布瓦(Patrick Debois)于 2009 年在比利时根特组织了第一届 "DevOps 日 "活动,首次创造了这个术语。作为一名系统管理员,Debois 饱受技术交付链缺乏协作之苦,他的挫败感成为全球 DevOps 运动的火种。困惑之墙 "是一个痛苦的隐喻,指的是开发和运营之间缺乏共鸣、共享和有效协作。

他关于 DevOps 定义的一句名言是:“DevOps 是为克服孤岛之间的摩擦所做的一切。其余的都是普通工程”。

对 DevOps 的这种广义理解说明了 DevOps 及其基本理念的整体观和适用性。虽然这个术语本身暗示着仅针对开发人员(dev)和操作人员(ops)的狭窄范围,但启动这一切的主要驱动力是改善所有相关孤岛之间的协作和流程,包括业务、安全、质量或支持。因此,理解为什么这种潜在的愿望会导致 DevOps 最终被采纳为组织、文化和技术变革的主要载体,远比寻找一个更好、更易理解的 "DevOps "更有意义。

DevOps 不是目标

既然我们已经知道如何定义 DevOps,那么我们还必须明白,DevOps 本身并不是目标。无论我们将 DevOps 视为一套实践、原则,甚至是一种社会技术构造,它都只是实现基本目标的一种手段。活跃的 BVSSH 社区为我们提供了一套合乎逻辑的主要目标: 更快更好更安全更快乐。换句话说,DevOps 实践和原则可以帮助我们实现最佳价值、更好的质量、更安全的交付、更快的反馈以及让客户和员工在工作中更加轻松快乐。如果你认为自己在做 DevOps,但却没有实现这些基本目标,那你就做错了。

在过去的十年中,许多 DevOps 应用都未能带来预期的价值。实践表明,DevOps 转型失败的主要原因之一是我们将其称为 DevOps 转型。这种给新举措贴标签的行为让我们不再关注根本(业务)目标,如更快乐的客户或高质量的交付等。

DevOps 的承诺建立在 "三种方法 "之上: 流程、反馈和持续学习与实验。

1. 第一种方法: 流程
侧重于优化从创意到生产、从开发到运营的工作流程。这意味着要打破团队之间的孤岛,创建协作文化,实现流程自动化以消除瓶颈。目标是确保工作尽可能顺利、快速地完成。优化端到端流程的策略包括批量大小:通过系统的工作批量较小。大型发布等结构会严重阻碍优化流程。
工作进度:限制团队同时处理的项目数量。
确定优先次序:以价值或经济为导向的决策支持将重点放在最相关的流程上。

2.第二种方法:反馈
强调在开发和运营内部之间和周围建立快速可靠的反馈回路。这意味着要实施持续的测试、监控和客户或用户反馈机制。还意味着要让团队能够轻松地分享知识并相互学习。这可以让团队尽早获得反馈,了解他们的价值假设是否有效。此外,这还包括从客户、用户、开发人员、供应商或生态系统中的任何其他利益相关者那里收集经验数据。毕竟,我们对所提供的产品或服务的潜在价值的假设,只能通过测量最终交付后的体验来验证。将情感和运营数据反馈到系统中可以促进持续改进和学习。

3.第三种方法:不断学习和实验
强调持续学习和实验的重要性。这意味着要培养一种实验文化,将失败作为学习的机会,在流程、技术和团队中建立复原力,并利用数据和指标来推动持续改进。通过不断学习和实验,团队可以长期改进流程和成果。

通过了解和实施 “三种方法”,组织可以改进协作、反馈和持续改进,从而取得更好的成果和更高效的流程。换句话说,它们有助于为团队带来真正的所有权和端到端的责任。或者,正如亚马逊首席技术官维尔纳-沃格尔斯(Werner Vogels)所说,“建造它,运行它”。团队在创造价值时遇到的依赖越少,我们在实践中看到的结果就越好。

保留 CALMS,构建 DevOps 实践
CALMS 是 DevOps 中广为接受的缩写,代表文化(Culture)、自动化(Automation)、精益(Lean)、测量(Measurement)和共享(Sharing)。当以适当的平衡方式一起应用时,CALMS 支柱提供了一个坚实的框架,指导组织采用 “三种方法”,并在其生态系统中集成相应的 DevOps 实践:

文化指的是在组织内部创建一种协作、同理心、信任和持续学习的文化。
自动化是指坚持不懈地将流程和工作流自动化,以提高效率并降低人为错误的风险。
精益是指精益(和敏捷)工作方式的方法论基础,如消除浪费、关注客户价值和流程。
衡量是指使用数据(证据)和指标来衡量产品、服务、流程和实践的有效性,并确定需要改进的领域。
共享是指促进组织内团队和个人之间的知识共享与协作。

文化: 培养同理心、协作精神和共同责任感CALMS 以文化为起点是有原因的。文化是 DevOps 理念的基础,它强调向协作、分担责任和打破组织孤岛转变。这种文化转变不仅限于开发和运营团队,还延伸到业务利益相关者、用户、安全专家和供应商。它包括一种重视沟通、换位思考和共同致力于为最终用户提供价值的思维方式。

鼓励 DevOps 文化包括在不同团队和部门之间培养透明度和开放的沟通渠道。业务部门融入开发流程,确保 IT 计划与组织目标保持一致。DevOps 文化的精髓在于通过打破团队之间的孤岛,促进责任共担文化,从而提高产品和服务交付的速度、质量和可靠性。

注重这些文化方面将加快价值交付,提高质量和可靠性,增强应对不断变化的业务需求的灵活性,并加强团队协作和团队精神。此外,DevOps 文化还能通过自动化重复性任务和简化流程,帮助企业降低成本,提高效率。

自动化:最大限度地减少手工作业,简化工作流程,提高效率自动化是为 DevOps 机器提供动力的引擎,使企业能够简化工作流程、减少人工错误并加快交付时间。从代码开发到部署和监控,自动化工具在实现持续发现、集成、交付和部署方面发挥着举足轻重的作用。

自动化测试可确保对代码变更进行全面评估,从而降低将缺陷引入生产环境的可能性。持续集成管道实现了构建和集成流程的自动化,为部署提供了一致、可靠的基础。自动部署工具有助于无缝、可重复地部署应用程序,最大限度地减少停机时间,提高整体效率。

除此之外,还有无数其他技术解决方案可解决相关任务,如版本控制、发布管理、容器协调、基础设施配置、知识管理、体验测量、监控和可观察性。

精益:关注价值、消除浪费、优化流程

精益和敏捷是 DevOps 工作方式的核心。数字组织在很大程度上依赖于敏捷和精益原则与实践,以应对多变、不可预测的环境。无论团队使用 Scrum、看板还是其他工具来管理他们的工作(流程),DevOps 的主要工作特征都包含对价值、流程和弹性的执着关注。

如果您是 Scrum 团队的一员,正在为企业开发一种新产品,但却很难从已投入生产的产品增量中获得反馈。在这种情况下,您可以考虑使用结对工作、可观察性或经验测量来收集所需的反馈。在此过程中,可视化管理、价值流图和 Kaizen 等精益实践可以有效地应用这些实践,消除瓶颈或减少收集所需反馈的人工工作量。同样,如果您是一名每天与客户打交道的服务台人员,肯定会为处理复杂事件的解决小组之间的高效协作和工作流程而兴奋不已,也会为用于创造快乐客户和用户的体验数据的持续反馈回路而兴奋不已。

在应用精益和/或敏捷工作方法时,必须认识到并不是所有的环境都是平等的。如果您的团队是在一个以标准工作程序为主的可预测环境中运作,那么您对应用敏捷方法的需求将与处理高度不确定性和波动性的产品开发团队截然不同。因此,后者更有可能从增量开发、时间盒或 Scrum 等敏捷原则和框架中受益。同样,在可预测和稳定的环境下,精益改进将更有助于支持重复性任务和工作流程的标准化和自动化。

精益思想还鼓励使用指标(证据)来确定需要改进的领域。通过分析客户满意度、准备时间和恢复时间等指标,组织可以找出效率低下的地方,并优先考虑流程改进。

衡量: 数据驱动决策和持续改进
衡量是 DevOps 的基石,可为知情决策和持续改进提供所需的数据。DevOps 衡量标准有助于组织评估其数字产品、服务和流程的有效性,确定需要改进的领域,并跟踪随时间推移取得的进展。对相关数据和指标的持续收集、解释和应用有助于在整个价值生命周期(从构思到运营,从领导到团队)更好地开展协作。

大多数高绩效组织和团队已经卓有成效地应用了 DevOps 的典型 DORA 指标:变更提前期、部署频率、失败率和恢复时间。此外,企业还开始探索成果或价值指标,如客户保留率、用户满意度和员工幸福感。通过引入对成果、体验和影响的严格衡量,重点正在转向真正的端到端交付、优化和协作,而不是部分或团队成果。

与 DevOps 的 "第三种方法 "相一致,衡量也是持续学习文化的重要组成部分,以支持不断发展的生态系统。将零重复作为创新指标之一,激发安全的学习环境(“犯错没关系”),同时强调从以前的错误中学习的重要性(“同样的错误不要犯两次”)。

分享: 分配认知负荷和知识共享
CALMS 的 "共享 "部分强调了团队内部和团队之间沟通、协作和知识共享的重要性。在 DevOps 文化中,信息在开发、运营和其他利益相关者之间无缝流动,促进对目标和优先事项的共同理解。

共享还延伸到文档和知识转移。DevOps 鼓励创建必要的(精益求精/恰到好处)文档,记录整个开发生命周期。这些文档是新团队成员入职、排除故障和确保人员变动时连续性的宝贵资源。

按照 "谁建设,谁管理 "的理念,企业努力将尽可能多的自主权和责任赋予实际团队。团队执行任务的自主性越强,其流程就越可靠,反馈回路就越短,为客户提供的价值就越大。一个常见的误区是期望产品生命周期和交付链中的所有任务都汇聚到一个团队中。认知负荷的概念告诉我们,人的局限性决定了不可能在一个由 5-9 名工程师组成的团队中汇集所有相关知识和能力,从简单到复杂。

这就是为什么企业要采用区分产品和平台的组织结构,使团队能够将产品交付、平台工程和专业支持分开。这样,产品团队就可以专注于理解、创建和交付面向客户的数字产品,同时使用平台团队提供的标准化服务,并由支持团队的安全或测试自动化专家提供支持。

将 DevOps 付诸实践

这一切都引发了人们对 DevOps 工程师是否存在的讨论。从根本上说,DevOps 是一场运动、一种思维方式、一套实践方法。声称我们有一个 DevOps 工程师,在一个角色中囊括了所有这一切,就好比说我们指派了一个人去协作。更实际的观点是,我们可以让工程师在任何现代组织中执行 DevOps 相关活动,并接受典型的 DevOps 原则和实践。无论他们是产品团队或平台团队的一员,还是担任辅助角色,我们都可以使用 DevOps 工程师这一总称来准确定位所需的能力和行为。

DevOps 就是通过应用 "三种方法 "和平衡各自的 CALMS 支柱来消除孤岛之间的摩擦。如果我们真正理解了这一点,就能为自己的组织发挥其潜力。这将使生态系统表现出更多的同理心、更好的协作、优化的流程,并最终为我们的客户创造更多价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/778892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的二维码LCD显示控制设计

**单片机设计介绍,基于单片机的二维码LCD显示控制设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的二维码LCD显示控制设计是一个集硬件、软件与通信于一体的综合性项目。此设计的主要目标是实现单片机…

Linux_应用篇(02) 文件 I/O 基础

本章给大家介绍 Linux 应用编程中最基础的知识,即文件 I/O(Input、 Outout) , 文件 I/O 指的是对文件的输入/输出操作,说白了就是对文件的读写操作; Linux 下一切皆文件,文件作为 Linux 系统设计…

Win11 安装docker 及 WSL2 并更新安装位置及迁移

1 下载并安装运行 Docker Desktop 1.1 下载 Docker Desktop 点击链接下载 Docker Desktop:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe 下载后得到: 1.2 通过命令行安装 Docker Desktop 在 Docker Desktop Install…

HEVC的Profile和Level介绍

文章目录 HEVCProfile(配置):Level(级别):划分标准 HEVC HEVC(High Efficiency Video Coding),也称为H.265,是一种视频压缩标准,旨在提供比先前的…

云数据仓库Snowflake论文完整版解读

本文是对于Snowflake论文的一个完整版解读,对于从事大数据数据仓库开发,数据湖开发的读者来说,这是一篇必须要详细了解和阅读的内容,通过全文你会发现整个数据湖设计的起初原因以及从各个维度(架构设计、存算分离、弹性…

简单的LAMP部署

目录 一、准备环境 二、安装apache组件 三、安装mysql组件 四、安装php组件 五、浏览器访问 一、准备环境 iptables -F #清空防火墙规则 systemctl stop firewalld #关闭防火墙 setenforce 0 …

vue3封装Element表格自适应

表格高度自适应 分页跟随表格之后 1. 满屏时出现滚动条 2. 不满屏时不显示滚动条 坑 表格设置maxHeight后不出现滚动条 解决方案 表格外层元素设置max-height el-table–fit 设置高度100% .table-box {max-height: calc(100% - 120px); } .el-table--fit {height: 100%; }示例代…

MYSQL8.0安装、配置、启动、登入与卸载详细步骤总结

文章目录 一.下载安装包1.方式一.官网下载方式二.网盘下载 二.解压安装三.配置1.添加环境变量 三.验证安装与配置成功四.初始化MYSQL五.注册MySQL服务六.启动与停止MYSQL服务七.修改账户默认密码八.登入MySQL九.卸载MySQL补充:彻底粉碎删除Mysql 一.下载安装包 1.方…

GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。

demo案例 GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。下面我将逐个讲解其入参、出参、属性、方法以及API使用方式。 入参(Input Parameters): GLTFExporter的主要入参是要导出的场景对象和一些导出选项。具体来说: s…

PowerBI加权计算权重

1.打开主页,点击快速度量值 2.计算里面 选择计算:每个类别的加权平均值 3.就是添加数据,基值(就是你要计算的值)粗细(就是你要用那个值计算权重)类别(就是你是要乘以那个类别&#x…

前端超分辨率技术应用:图像质量提升与场景实践探索-设计篇

超分辨率! 引言 在数字化时代,图像质量对于用户体验的重要性不言而喻。随着显示技术的飞速发展,尤其是移动终端视网膜屏幕的广泛应用,用户对高分辨率、高质量图像的需求日益增长。然而,受限于网络流量、存储空间和图像…

政安晨:专栏目录【TensorFlow与Keras机器学习实战】

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 本篇是作者政安晨的专栏《TensorFlow与Keras机器…

linux网络服务学习(4):SAMBA

1.什么是SAMBA SAMBA也是一种文件共享工具 (1)服务名:smb (2)软件名:samba (3)配置文件: /etc/samba/smb.conf /etc/samba/smb.conf.example (4&#…

解决npm init vue@latest证书过期问题:npm ERR! code CERT_HAS_EXPIRED

目录 一. 问题背景 二. 错误信息 三. 解决方案 3.1 临时解决办法 3.2 安全性考量 一. 问题背景 我在试图创建一个新的Vue.js项目时遇到了一个问题:npm init vuelatest命令出现了证书过期的错误。不过这是一个常见的问题,解决起来也简单。 二. 错误…

LeetCode:718最长重复子数组 C语言

718. 最长重复子数组 提示 给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1: 输入:nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出:3 解释:长度最长的公共子数组是 [3,…

Python基本运算

1.逻辑运算符 第四行会有黄色的下划线是因为这个不是系统推荐的写法,系统推荐的是第五行的链式比较; 2.短路求值 对于and而言,左边的语句是false,那么整体一定是false,右边的表达式就不会进行计算; 对于or而言&…

【数据结构】——栈与队列(附加oj题详解)深度理解

栈 1.栈的定义 栈:栈是仅限与在表尾进行插入或者删除的线性表 我们把允许一端插入和删除的一端叫做栈顶,另一端叫栈底,不含任何元素的栈叫做空栈,栈又叫做后进先出的线性表,简称LIFO结构 2.栈的理解 对于定义里面…

面向对象的学习

封装 //用来描述一类事物的类,专业叫做:javabean类 //在javabean类是不写main方法的//一个java文件中可以定义多个类,且只能一个类是public修饰,而且public修饰的类名必须成为代码的文件名 ://在类中一般无需指定初始化值 存在默…

CleanMyMac X 4.15.1 for Mac 最新中文破解版 系统优化垃圾清理工具

CleanMyMac X for Mac 是一款功能更加强大的系统优化清理工具,相比于 CleanMyMac 4.15.1来说,功能增加了不少,此版本为4.15.1官方最新中英文正式破解版本,永久使用,解决了打开软件崩溃问题,最新版4.15.1版本…

MYSQL数字函数实操宝典:场景化SQL语句一网打尽

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 MYSQL数字函数:不可不知的数据处理利器 文章目录 Part 1: 准备 &#x…