DevOps和SRE有什么不同?
DevOps和SRE似乎是同一枚硬币的两个面。他们都旨在弥合开发团队和运维团队之间的鸿沟,都想要提高软件部署的效率和软件运行的可靠性。
在大多数公司中,我们可以看到开发团队和运维团队的职责和能力会有重叠。那么DevOps和SRE有什么不同,每个意味着什么?让我们来看看。
开发,运维和可靠性
在实施DevOps之前,开发和运维团队是两个独立的团队,每个团队都有自己的目标。这些团队之间的差异和沟通缺乏,通常会影响产品,从而最终影响用户体验和公司效益。
为了更好地沟通和构建更好的产品,DevOps已成为每个公司中最关键的职位之一。
DevOps的定义是“一种软件工程文化和实践,旨在统一开发和运维” 。这个术语最初是由Andrew Shafer和Patrick Debois于2008年创造的,虽然花了几年时间才成为一个通用概念,但如今,几乎每个企业都在使用DevOps。
Site Reliability Engineer(SRE)的概念自2003年以来一直存在,比DevOps还要古老。它是由创建Google的本·特雷诺(Ben Treynor)创造的。根据Treynor所说,SRE是“软件开发工程师开始承担运维人员的任务”
像DevOps一样,SRE也会整合开发团队和运维团队,帮助他们熟悉另一个团队的工作和任务,同时使得整个应用程序生命周期具有可见性。
DevOps和SRE都倡导自动化和监视,其目标都是减少从开发到部署生产中的时间,同时又不影响代码或产品的质量。
Google指出,SRE和DevOps彼此之间并没有太大区别:“在软件开发和运维方面,他们不是竞争关系,而是旨在打破组织障碍,使得更快地交付更好的软件的亲密朋友。”
DevOps和SRE之间的差异
如前所述,DevOps的概念就是将开发与运维结合起来,定义系统的行为,并了解需要做些什么来弥合开发团队和运维团队之间的“鸿沟”。DevOps的理论是关于使开发团队和运维团队合而为一需要做些什么。
根据Google的说法,这就是DevOps和SRE之间的主要区别所在。DevOps只是关心需要做什么,但SRE却谈到了如何可以做到。SRE是通过使用正确的方法,工具等将理论部分扩展为有效的工作流程。这还涉及在每个人之间分担责任,并使每个人都具有相同的目标和愿景。
为了进一步说明两者之间的区别,Google发布了一系列视频和帖子,介绍了DevOps和SRE的不同之处。其中两位Google员工(Seth Vargo和Liz Fong-Jones)撰写的一篇文章中,他们解释了SRE
“体现了DevOps的理念,更加注重通过软件工程师和运维人员的工作来衡量和实现可靠性。”
Seth Vargo和Liz Fong-Jones通过以下5个方面解释了DevOps和SRE之间的异同:
1. 减少组织项目独立
通常组织结构复杂的的大型企业,有许多团队是独立工作。每个团队都将产品推向不同的方向,没有与公司的其他成员进行交流,因此,他们无法从整体上了解产品全局。这可能会在部署中的引发问题。
DevOps的工作是减少孤岛,并确保不同团队最终目标一致。通过共同的愿景将团队组织起来。
SRE不再谈论公司中有多少独立项目,而是在谈论如何让所有人参与。这是通过使用整个公司相同的工具和技术来完成的,作为回报,这有助于在每个人之间共享所有权。
2. 接受故障
尽管DevOps的概念是在故障出现之前进行预防,但是不幸的是,我们无法避免故障。DevOps通过将故障视为必然发生的事情。
在SRE中,通过制定一个公式来统计故障。换句话说,SRE希望没有太多错误或失败。
该公式,用两个关键标识符来衡量:服务水平指标( Service Level Indicators ,即SLIs)和服务水平目标( Service Level Objectives ,即SLOs)。
SLIs 通过计算请求延迟,每秒请求的吞吐量、失败次数来衡量每个请求的失败。SLOs 源表示SLI在一定时间内的成功。
3. 实施渐进式变革
越来越多的公司希望能够频繁发布,不断更新迭代自己的产品,并使团队成员时刻关注新技术和相关技术。
DevOps的目标也是如此,但要以渐进和可处理的方式进行。DevOps和SRE都希望快速发展,SRE强调在这样做的同时降低故障成本。
4. 工具化和自动化
如前所述,自动化是DevOps和SRE的主要重点之一。DevOps和SRE都鼓励尽可能增加工具和实现自动化,通过消除人为操作为开发人员和运维降低出错率。
5. 衡量一切
自动化工作流程需要不断监控。DevOps和SRE团队都需要确保他们朝着正确的方向发展,并通过衡量一切来做到这一点。
这里的主要区别在于,SRE围绕”运维是软件问题( operations are a software problem)“的概念展开,从而使他们定义了一些可用性度量方法。
SRE还确保公司中的每个人知道如何衡量可靠性,以及在出现故障时该怎么做。
可靠意味着什么?
上面,我们讨论了责任划分,接受失败以及衡量一切。现在,我们需要一种方法来确保一切都确实能够正常运行并且可靠。换句话说,应该有一个统一的方法来测量每个级别的可靠性。
SRE通过 SLIs 和 SLOs 来衡量,DevOps团队会衡量失败率以及一段时间内的成功率,并且两者通常都是使用不同的工具和方法来进行的。可靠性不仅与基础架构有关,而且也与应用程序质量,性能、安全性息息相关。
问题可能在应用程序的不同方面发生,并且当发生故障时,我们需要拥有可靠的数据,来了解问题发生的原因。如果我们将数据细分,包括:
堆栈信息
变量状态
JVM状态:线程,环境变量
相关日志语句(包括生产中的DEBUG和TRACE)
事件分析(频率,失败率,部署,应用程序)
由于这些数据是至关重要的信息,因此我们必须确保它是可靠且可操作的
总结
SRE,有明确的定义,并提出了一系列直接的期望。然而,DevOps更像是一种“自由精神”,其定义和观点因组织而异。
但是,DevOps和SRE团队并没有太大区别。两者都有助于整合开发人员和运维团队,同时承担相似的责任,并专注于实现自动化和可靠性。
最重要的是,一切都与数据有关。你需要数据信息来衡量成功和失败,以及如何在整个应用程序中获得持续的可靠性。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
大规模业务技术架构设计与战术
技术架构,是将产品需求转变为技术实现的过程。技术架构解决的问题包括了如何进行纯技术层面的分层、开发框架选择、语言选择(这里以 JAVA 语言为主)、涉及到各自非功能性需求的技术点(安全、性能、大数据)。技术架构是确定组成应用系统实际运行的技术组件、技术组件之间的关系,以及部署到硬件的策略。 技术架构面临最大的挑战是“不确定性”。在技术架构上,很多时候就会面临这种选择。是要选择业界最新的技术?还是选择团队最熟悉的技术?如果选择最新的技术,遇到新技术出了问题怎么解决?如果选择目前熟悉的技术,后续技术演进怎么办?这些都是架构师在做技术架构过程中需要考虑的。 业务在千变万化、技术在层出不穷,没有一套通用的技术架构模式来适用所有的系统。那么,我们如何保证在做技术架构时,能够实现一个稳定、出色的系统。面对这些“不确定性”时的架构设计问题,这里从战略和战术两个层面来提供一些设计原则。战略层提供的是技术架构的方法和思路,属于顶层设计;战术层提供的是技术架构的技术实践方式,更偏向详细设计。 战略层设计原则 战略层的设计原则就是:合适原则、简单原则、演化原则。 合适原则 技术人员有一种很强的技术情怀,就是...
- 下一篇
微服务在 kubernetes 中如何运行?
kubernetes 已经成为容器编排领域的王者,它是基于容器的集群编排引擎,具备扩展集群、滚动升级回滚、弹性伸缩、自动治愈、服务发现等多种特性能力。 本文将带着大家快速了解 kubernetes ,了解我们谈论 kubernetes 都是在谈论什么。 kubernetes 架构 从宏观上来看 kubernetes 的整体架构,包括 Master、Node 以及 Etcd。 Master 即主节点,负责控制整个 kubernetes 集群。它包括 Api Server、Scheduler、Controller 等组成部分。它们都需要和 Etcd 进行交互以存储数据。 Api Server:主要提供资源操作的统一入口,这样就屏蔽了与 Etcd 的直接交互。功能包括安全、注册与发现等。 Scheduler:负责按照一定的调度规则将 Pod 调度到 Node 上。 Controller:资源控制中心,确保资源处于预期的工作状态。 Node 即工作节点,为整个集群提供计算力,是容器真正运行的地方,包括运行容器、kubelet、kube-proxy。 kubelet:主要工作包括管理容器的生命周...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Thymeleaf,官方推荐html解决方案