一文彻底读懂DevOps与SRE来龙去脉

2023-12-19 06:08

本文主要是介绍一文彻底读懂DevOps与SRE来龙去脉,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 若是把运维当作一门学科来看,是有难度的.不仅因为如何很好的运行系统这种普遍问题未得到解决外,现存的最佳实战也因高度依赖环境,而未得到广泛使用;另外一个未解决的问题就是如何更好的管理运维团队。详细分析这些问题通常被认为起源于致力运筹学的研究,在第二次世界大战期间用于改善盟军的进程和产出,但事实上,几千年来,我们一直在思考如何更好的运营

  • 然而,尽管有这么多的努力和想法,可靠的生产运维仍然难以保障,特别是在信息技术和软件可操作性领域 例如:以企业的角度,通常将运维视为成本中心;如果可能,要做有意义的改进即使是困难的.因对这种方法的短视,尚未得到广泛理解,但是对它的不满已经引发了如何组织我们在IT中所有事情的一场革命,这场革命源于试图解决一系列共同问题,最新解决这些问题的方案有两个:DevOps和SRE(Site Reli‐ability Engineering)。事实上,它们有很多相似之处,要比我们想象的多

DevOps产生的背

DevOps是一套松散的实践、指南和文化,旨在打破IT开发、运维、网络和安全方面的孤岛。由JohnWillis,Damon Edwards和Jez Humble联合执笔,阐述:CA(L)MS-代表文化、自动化、精益(如精益管理,持续交付)、度量、分享,是DevOps关键思想的缩写。分享和协作是这场运动的最前线,在DevOps方法中,改进(通常通过自动化方式)、然后度量结果,并与同事分享这些成果,这样整个组织都可以得到改进。所有CALMS原则都是有这种支持性文化促成的

DevOps、敏捷以及各种其他商业和软件工程技术都是关于如何在现代商业中最好的做生意的普遍世界观的例子。DevOps思想中的任何元素都不容易彼此分离,这基本上是通过设计来实现的。然而,一些关键的想法可以相对独立的进行讨论

不再孤岛(谷仓效应)

第一个关键思想:不再有孤岛,针对这一思想有两个方面的反应:

  • 历史上流行但现在越来越老式的独立运维和开发团队

  • 事实上,知识的极端孤立,对纯粹的局部优化的激励,以及缺乏协作在很多情况下对于企业来说都是非常糟糕的

事故是正常的

第二个关键思想: 事故不仅仅是个人孤立行为的结果,而是因为当事情不可避免地出错时缺少保障措施。例如:一个糟糕的界面在压力环境下会促使采取错误操作。如果发生(未明确的)错误情况,系统错误会使失败不可避免;坏的监控使我们无法知道是有问题,更不用说出了什么问题。一切传统观念的企业具有根除犯错制造者和处罚他们的文化本能,但这样做有其自身的后果:最明显的是,它们创造了是问题混淆、掩盖真相、责怪他人的动机,所有这些最终都是无益的分心行为。因此,着眼于加速恢复故障比预防事故更有意义

变更应该循序渐进

第三个关键思想: 小而频繁的变更时最佳的。在变更委员会每月开会讨论彻底修改大型机配置的计划,这是一个激进的做法。然而这种做法并不鲜见,所有变更必须由经验丰富的人员考虑并且为了有效考虑而进行批量化的观点,结果或多或少与最佳实践相悖。变更是有风险的,没错,但是正确的做法是将变更尽可能拆分成晓得组件或单元。然后,根据产品、设计和基础设施的变更,建立一个稳定的低风险变更管道。这种策略,增加对小变更的自动化测试和可靠地回滚有问题的变更,就形成了变更管理的方法:持续集成(CI)和持续交付或部署(CD)

工具和文化是相互关联的

工具和文化是DevOps的重要组成部分,特别是在强调正确管理变更的今天,变更管理依赖于高度特定的工具。然而,DevOps支持者强烈强调组织文化而不是工具本身,作为新工作方式成功的关键。一个好的文化可以解决围绕破碎的工具工作,但相反的情况很少适用。俗话说的好,文化将策略当早餐吃了(意味着文化的影响力远胜过策略),像运维,改变其自身是很难的事

度量至关重要

最后,度量在总体业务环节中尤其重要,例如打破孤岛和事件解决方案。在每个环境中,通过客观的测量来确定正在发生的事情的真实性,验证是否按预期进行了改变。并为不同职能部门达成一致建立客观基础(适用于业务和其他环境,例如on-call)

SRE产生的背景

网站可靠性工程师(SRE)是Google工程副总裁BenTreynor Sloss创建的术语(和相关的工作角色)。正如我们在前一节中所讲,DevOps是关于运维和产品开发之间的全周期协作的一系列广泛原则。SRE是一个工作角色,一组实践。如果DevOps是一种哲学和一种工作方法,那么SRE实现了DevOps所描述的一些思想,而且更接近于工作或角色的定义,比如"DevOps工程师"。因此,从某种程度上来说,SRE是DevOps的实现。 与DevOps运动不同,DevOps运动起源于多家公司的领导者和实践者之间的合作产生的,在SRE广泛普及之前,Google的SRE继承了周围公司的大部分文化,并没有像DevOps一样突出文化的变化

SRE有以下具体原则

运维是一个软件问题

SRE的基本原则是做好运维是一个软件问题。因此,SRE应该使用软件工程思想来解决该问题。这是一个广泛的领域,包括从流程和业务变化到类似复杂但更传统的软件问题,例如重写堆栈以消除业务逻辑中的单点故障。

通过SLOs(服务质量目标)进行管理

SRE不会试图提供100%的可用性,正如我们第一本书《Site Reliability Engineering》(网站可靠性工程)中所讨论的,这是个错误的目标,原因有很多。相反,产品团队和SRE团队为服务及其用户群选择适当的可用性目标,并将服务管理到该SLO。决定这样的目标需要业务部门强有力的合作。SLOs也有文化内涵:作为利益相关者之间的协作决定,SLO违规行为将团队无可指责的重新回到绘图板。

减少琐事

对于SRE来说,任何手动、重复性的的运维任务都是让人厌恶的。我们相信,如果一台机器可以执行期望的运维操作,我们就应该经常这样做。这种差别和价值在其他组织中并不常见,一些琐事就需要人力才能完成。对于在Google的SRE来说,琐事并不能作为工作来做。任何花费在操作任务上的时间意味着我们并没有真正的在为项目工作——我们如何使服务更可靠和可伸缩 a 然而,"生产智慧"为我们执行运维任务提供了非常重要的帮助。这种工作,可以通过指定系统的实时反馈来落地。需要甄别琐事的来源以便可以最小化这些工作甚至消除。但是,如果发现自己操作状态不佳,则可能需要更频繁的推送新功能和变更,以便其他工程师熟悉你所支持的服务

  • 生产智慧 关于"生产智慧"阐释: 使用这个词,意思是我们从运行的生产环境中获取到的智慧——关于它实际上是如何工作的、软件应该如何设计的细节而不是与实际相孤立的服务。获得所有事件及团队获工单等等都与现实直接相关,可以更好为系统设计和行为提供信息

工作自动化

这个领域的真正工作是决定什么条件下做什么自动化以及怎么自动化。 SRE在Google实践中:团队成员花费在琐事上而不是产生持久价值工程的时间为限制在50%。许多人把这个认为限制的上限。实际上,针对采用工程方法来解决问题,视为一种明确的声明和机制,要比一遍一遍的做琐事更加有用的多。

当我们考虑自动化和琐事时,基线和其如何发挥作用并不直观。随着时间的推移,一个SRE团队会将所有可以自动化的服务都自动化,剩下的都是无法实现自动化的(Murphy-Beyer效应)。这将主导SRE团队的工作,除非有其他要做。在Google环境中,你倾向添加更多的服务,直到达到某些限制,仍然有50%工程时间,或者你在自动化方面非常成功你可以去做一些其他完全不同的事情

通过降低失败成本来快速流转

SRE的主要优点之一就是不一定要提高可靠性,即使它已经发生,但实际上改进了产品开发的产出。为什么?降低常见故障的平均故障时间(MTTR)会增加产品开发人员的迭代速度,因为工程师不用将精力过多分散在处理故障问题上。这源于一个众所周知的事实,即在产品生命周期的后期,一个问题被修复的代价越高。SREs专门负责改善处理产品后期出现的问题,为整个公司带来收益。

与开发人员分享所有权

"应用程序开发"和"生产"之间的严格界限(有时被称为Dev和Ops)会产生相反的效果。将责任分工、运维分类作为成本中心,则会导致权力失衡或薪酬差异这一点尤为正确

SREs倾向于关注生产问题而不是业务逻辑问题,但是随着他们用软件工程工具的方法来解决问题以及与产品开发团队分享技能。一般而言,SRE在他们关注的服务可用性、延迟、性能、效率、变更管理、监控、紧急响应和容量规划方面具有特殊的专业知识。这些特殊技能(通常明确定义的)是SRE为产品和开发团队技术服务的基础。理想情况下,产品开发和SRE团队对技术栈有一个整体的了解——前端、后端、库、存储、内核和物理机——任何团队都不应该嫉妒拥有单一组件

在《Site Reliability Engineering》(网站可靠性工程)一书中,我们并没有明确指出:在Google,产品开发团队就默认拥有他们的服务,虽然SRE原则仍然告知整个Google如何管理服务,但是SRE原则既不可用也不保证。SRE团队的所有权模式与产品开发团队合作最终也是一个共享模型

使用相同的工具,无论功能或职位

工具是一个非常重要的行为决定因素。在Google的环境中,SRE如果没有统一的代码库、软件和系统的各种工具、高度优化和专有的生产堆栈等是非常天真的。我们与DevOps分享这个绝对假设:负责服务的团队应该使用相同的服务工具,不管它们在组织中的角色是什么。如果没有好的方法去管理服务,一个工具给SREs使用,另外一个工具给产品开发者使用,在不同的情况下,操作不同,可能会是灾难性的。彼此分歧越多,公司从改进每个工具的努力中获益就越少

DevOps与SRE对比

从上面聊的原则中,我们可以看到它们之间有很多共性:

  • DevOps和SRE都取决于为了持续改进,必须接受变化

  • 协作是DevOps工作的前沿和中心,有效共享所有权模式和合作伙伴关系是SRE发挥作用的必要条件。与DevOps一样,SRE也具有跨组织共享的强大价值,这样更容易打破团队之间的壁垒

  • 变更的最佳实践是: 持续小而频繁的变更,大部分情况下,都需要自动化测试和应用。关键是变更对可用性影响对于SRE来说尤为重要

  • 使用正确的工具至关重要,工具在一定程度上决定了行动范围。然而,我们不能过于关注使用某种特定工具来实现一些操作。面向系统管理的API是一个更重要方法

  • 度量对于DevOps和SRE来说都至关重要。对于SRE来说,SLOs(服务质量目标)决定着是否改善优化服务。当然,如果没有衡量标准(以及在产品、基础设施/SRE和业务之间的跨团队合作),就不会有SLO。对于DevOps来说,度量行为常用来了解过程的产出、一个反馈周期持续的时间等等。无论从专业角度还是从哲学角度,DevOps和SRE都是面向数据的

  • 管理生产服务器残酷的事实就是偶尔发发生了故障,并且你要说出为什么。SRE和DevOps都是无可指责的,目的是为了消除无意义的争论

  • 最终,实施DevOps或SRE是一种整体行为,两者都希望使用一种特定的工作方式共同协作,促使整个团队运营的更好。对于DevOps和SRE来说,更好的速度就是产出。

正如你说看到的,DevOps和SRE有很多共同点。然而,也存在着显著的差异,DevOps在某种意义上是一种更广泛的哲学和文化。DevOps对于如何在一个具体层面上运行相对沉默,例如,它并没有明确规定如何对服务进行精细化管理,而更多的专注如何打破更广泛的组织中的障碍。这就很有价值。

另一方面,SRE的指责范围相对狭窄,其职权范围通常是面向服务的(以终端用户为导向),而非整体业务。因此,它解决如何高效运行系统有自己的知识框架(包括错误预算等概念)。尽管SRE作为一种职业,高度关注激励错误和效率,但在诸如“组织孤岛”和“信息壁垒”等话题上,却相对沉默。它将支持CI/CD,不一定是因为业务需要,而是改进操作的实践。或者,换句话说,SRE相信和DevOps相同的东西,但原因可能有所不同

但原因可能有所不同

译自: How SRE Relates to DevOps(class SRE implements interface DevOps) 

http://ow1schdt5.bkt.clouddn.com/books/site-reliability-workbook.pdf

看完本文有收获?请转发分享给更多人


欢迎关注“运维ABC”(AI、BigData、Cloud),运维技术社区,专注运维自动化、DevOps、AIOPS、ChatOPS、容器等落地与实践。

长按下方的二维码可以快速关注

这篇关于一文彻底读懂DevOps与SRE来龙去脉的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/511145

相关文章

Prometheus与Grafana在DevOps中的应用与最佳实践

Prometheus 与 Grafana 在 DevOps 中的应用与最佳实践 随着 DevOps 文化和实践的普及,监控和可视化工具已成为 DevOps 工具链中不可或缺的部分。Prometheus 和 Grafana 是其中最受欢迎的开源监控解决方案之一,它们的结合能够为系统和应用程序提供全面的监控、告警和可视化展示。本篇文章将详细探讨 Prometheus 和 Grafana 在 DevO

Linux 云计算底层技术之一文读懂 Qemu 架构

Qemu 架构概览 Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。 正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成

读懂《机器学习实战》代码—K-近邻算法

一,K近邻算法概念 K近邻算法即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。KNN 算法是一种 lazy-learning 算法,分类器不需要使用训练集进行训练,训练时间复杂度为0。KNN 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,

使用Azure Devops Pipeline将Docker应用部署到你的Raspberry Pi上

文章目录 1. 添加树莓派到 Agent Pool1.1 添加pool1.2 添加agent 2. 将树莓派添加到 Deployment Pool2.1 添加pool2.2 添加target 3. 添加编译流水线3.1 添加编译命令3.2 配置触发器 4. 添加发布流水线4.1 添加命令行4.2 配置artifact和触发器 5. 完成 1. 添加树莓派到 Agent Pool

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340

一文说清什么是AI原生(AI Native)应用以及特点

引言:智能新纪元 如今,走在街头,哪儿不被智能科技包围?智能音箱、自动驾驶汽车、聊天机器人......这些都在用不同的方式提升我们的生活体验。然而,究竟什么才能称得上“AI原生应用”呢? 什么是AI原生?   AI原生不仅仅是简单地引入人工智能功能。真正的AI原生应用犹如一个智慧的“大脑”,它的每一个决策都依赖于深度学习与数据分析。以Siri为例,它通过学习用户的习惯和需求,提供个性化的

世界公认十大护眼灯数据出炉!一文看懂孩子用的台灯哪个牌子好

近年来,随着科技的迅猛发展,诸如智能手机、电脑等电子设备在工作、学习及娱乐中的应用日益广泛,人们对这些设备的依赖程度也随之加深。然而,长时间面对屏幕不可避免地给眼睛带来伤害,如眼疲劳、干燥甚至近视等问题。因此,市场对能够缓解眼疲劳的照明产品的需求日益增长。这类护眼照明产品通常采用无频闪、无紫外线辐射等技术,旨在减少对眼睛的潜在危害,有效保护视力健康,并降低眼疾的发生率。随着护眼台灯的不断创新进步,

一文详解go底层原理之垃圾回收

1 前置知识 1.1 三色回收法 三色回收法在gov1.5版本时是主流的gc方式 简单介绍一下流程: 暂停程序执行流程(开启STW)将新创建的对象全部标记为白色从根节点开始遍历,把遍历到的第一层全部改为灰色遍历一次灰色集合,将灰色集合引用对象变为黑色重复上述步骤,知道没有灰色对象清除白色对象结束STW 1.2 STW 上述1.1所说的STW就是指的stop the world,简单的说

涉密电脑插U盘会不会被发现?如何禁止涉密电脑插U盘?30秒读懂!

在涉密电脑插U盘的那一瞬间,你是否也好奇会不会被发现?涉密电脑的安全监控可是滴水不漏的!想知道如何彻底禁止涉密电脑插U盘?简单几招搞定,轻松锁死外部设备,信息安全无懈可击! 涉密电脑插U盘会不会被发现? 涉密电脑是否会在插入U盘时被发现,需要根据具体情况来判断。在一些情况下,涉密电脑可能没有安装任何监控软件或安全工具,插入U盘可能不会立即触发警告。然而,随着信息安全管理的不断升级,越来越多

k8s集群本地搭建,使用gitlab、harbor、jenkens、cicd来实现devops自动化构建

k8s集群本地搭建 准备:一台windows即可我windows内存是32gb的,6核,每核2线程全程使用终端 ssh命令操作.我是直接用的mac点操作windows,然后windows连接虚拟机即可.虚拟机记得改网卡,这样才能保证以后ip不变.介绍:k8s集群本地搭建(1master、2node)k8x运用devops来自动化构建服务(gitlab、harbor、jenkens、cicd)简介