SRE与DevOps有什么不同?
SRE和DevOps有什么区别?您可能会说这很大程度上是语义问题,实际上,SRE和DevOps工程师扮演着相同的基本角色。
尽管如此,SRE和DevOps之间还是存在一些区别,即使是细微的区别。考虑到这两种角色在很大程度上具有相同的价值观和实践,它们似乎并不重要,但现实是,最终SRE和DevOps工程师满足了不同的需求。了解这些差异是确保您的IT团队尽可能高效地运营的关键。
什么是SRE?
SRE(Site Reliability Engineering)是站点可靠性工程或站点可靠性工程师的缩写,是指使用软件工程原理来帮助维护和管理IT系统。
至少,这就是 Google的SRE定义,这是在过去几年中推广该概念的公司。正如Google所说,SRE的目的是像对待软件问题一样对待[IT]操作
。
这个想法是创新的,因为在传统上,大多数公司在主要负责维护软件的IT运维人员和主要负责编写软件的软件工程师之间存在很大的分歧。这两个小组不仅从事不同类型的工作,而且还以不同类型的方式解决问题。软件工程师倾向于专注于使用代码来解决所有问题,而运维则更习惯于使用各种工具(监视软件,配置管理工具,访问控制框架等)来管理日常工作和软件系统的日常操作。
SRE趋势有助于解释为什么像 基础架构即代码 (IaC)和 声明式配置管理近年来已成为IT系统部署和管理的流行方法。这些实践是使用代码的方式以及软件工程的原理来管理传统上使用不同工具和方法执行的IT流程。它们也恰好是非常适合自动化和可伸缩性的方法,这是SRE优先考虑的价值观。
什么是DevOps?
顾名思义,DevOps旨在弥合开发与IT运维之间的鸿沟。
DevOps背后的核心思想本质上是驱动SRE的相同思想:通过允许软件工程师(或开发人员,在大多数情况下基本上是同一件事)和IT运维人员之间更紧密的协作,使整体IT运维更加可靠和高效。。
像SRE一样,DevOps奖励自动化和可扩展性。尽管DevOps也有一些技巧,例如DevOps对话,但IaC之类的方法通常会出现在DevOps对话中CI / CD,与SRE紧密相关。
SRE VS DevOps
因此,在较高的层次上,DevOps和SRE具有相似的目标和广泛相似的方法。但是DevOps和SRE之间存在重要区别:
- 开发人员扮演的角色: SRE使用开发人员的思维和工具来解决IT运营问题。因此,在SRE中,大多数事情都是从软件工程师的角度完成的。相比之下,DevOps更多地是要结合开发人员和IT操作工程师的技能,而不是使用前者取代后者;
- 文化与实现: 一般而言,DevOps倾向于将重点更多地放在文化目标和优先事项上,而不是特定的实施过程。不需要任何特定工具或方法即可执行"DevOps"。同样,也没有遵循SRE的特定脚本,但是与DevOps相比,SRE总体上提供了关于如何解决问题以及使用哪种类型的工具的更严格的规定;
- 组织结构: 在大多数情况下,DevOps不会取代现有的开发人员和IT运营部门或角色。公司可能会雇用一些DevOps工程师来帮助指导DevOps,但是他们并不会用DevOps工程师代替所有现有的IT角色。相反,SRE角色往往被视为至少替代IT操作的一种方式。(这是一个笼统的陈述,当然也有例外,但是总的来说,SRE涉及对组织结构的更大改变);
- 扩展到其他IT角色: DevOps产生了一个大量分支将DevOps概念扩展到开发和IT运维之间。现在,通常会听到有关DevSecOps的讨论,例如,将DevOps应用于安全性的问题或QAOps,这将QA工程师带入DevOps领域。同时,SRE概念还没有看到这种广泛的使用。
SRE和DevOps之间有真正的区别吗?
尽管如此,很难完全解释SRE和DevOps之间的区别。一些观察者有争论差异并不足够大或不一致,不足以使其有意义。其他人可能会争辩说,SRE和DevOps的定义以及公司采用这些概念的方法差异很大,因此实际上不可能一开始就提供这两个术语的通用定义,更不用说清楚地阐明如何他们彼此不同。
这些观点是有价值的。不过,我确实认为,在总体上,使用SRE和DevOps的方式之间存在一些细微但重要的差异。这些概念不可互换,并且寻求为IT战略带来最大价值的公司可以从这两种战略中受益。
SRE使用一种以前仅应用于软件开发的方法,以一种实用的实施方式来帮助简化IT运维。同时,DevOps提倡更高层次的思考,以使整个IT组织更加高效和自动化,而又不将公司限制在一组狭窄的工具或方法论上。
最终,将SRE和DevOps视为截然不同的概念,并接受它们所提供的独特价值是有价值的。
之前也看到了刘征老师公众号发送的视频,这里也分享给大家:
英文原文: http://suo.im/6sMqO7
- PHP实用功能——modern PHP读书笔记(一)
- ModernPHP读书笔记(二) ——PHP开发标准
- iBatis.Net(6):Data Map(深入)
- iBatis.Net(5):Data Map(了解)
- ModernPHP读书笔记(三)——PHP的良好实践
- PHP开发过程的那些坑(一) ——对象拷贝
- PHP开发过程的那些坑(二) ——PHP empty函数
- Thinking in SQL系列之数据挖掘Apriori关联分析再现啤酒尿布神话
- PHP开发过程的那些坑(三) ——PHParray_shift函数
- CSS3弹性盒布局
- iBatis.Net(4):DataMapper API
- PHP开发过程的那些坑(四) ——PDO bindParam函数
- iBatis.Net(3):创建SqlMapper实例
- PHP开发过程的那些坑(五) ——PHP的empty()
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP使用JpGraph绘制折线图操作示例【附源码下载】
- Laravel Eloquent分表方法并使用模型关联的实现
- 关于laravel模板中生成URL的几种模式总结
- Laravel基础-关于引入公共文件的两种方式
- Laravel框架Blade模板简介及模板继承用法分析
- 基于Laravel 多个中间件的执行顺序详解
- 关于laravel 日志写入失败问题汇总
- 确保Laravel网站不会被嵌入到其他站点中的方法
- PHP PDO和消息队列的个人理解与应用实例分析
- tp5 sum某个字段相加得到总数的例子
- laravel框架创建授权策略实例分析
- tp5递归 无限级分类详解
- PHP 进程池与轮询调度算法实现多任务的示例代码
- 如何在Laravel5.8中正确地应用Repository设计模式
- laravel框架中路由设置,路由参数和路由命名实例分析