请选择 进入手机版 | 继续访问电脑版

ITIL,DevOps,ITSS,ITSM,IT运维管理-ITIL先锋论坛

 找回密码
 微信、QQ、手机号一键注册

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 623|回复: 0

DevOps 和 SRE 有什么不同,每个意味着什么?

[复制链接]
发表于 2020-8-14 17:03:40 | 显示全部楼层 |阅读模式
本帖最后由 陈小宝 于 2020-8-14 17:06 编辑
1 n6 X) P# \+ f1 H# Y4 J
6 G: T# y+ i" r3 x& x/ q8 W
粘贴上传202008141700593846..png

, w6 G6 e+ \4 L  Q
. O6 ?+ u; o% E* G' v% z* }% m2 HDevOps 和 SRE 似乎是同一枚硬币的两个面。他们都旨在弥合开发团队和运维团队之间的鸿沟,都想要提高软件部署的效率和软件运行的可靠性。. o, l* N: Z  A/ t+ O$ x
& @7 q9 A8 I; p- {2 U
( g- A9 A- j( N9 s/ x- N3 A+ l
在大多数公司中,我们可以看到开发团队和运维团队的职责和能力会有重叠。那么 DevOps 和 SRE 有什么不同,每个意味着什么?让我们来看看。
6 O" d6 a- `  E* y  D) w
' F9 E. g; a3 ~! u* h& |

# I- m( j5 w, p6 O开发,运维和可靠性
7 [6 ^+ ?! A- Y: D
, _2 s2 o9 x+ R$ h/ `在实施 DevOps 之前,开发和运维团队是两个独立的团队,每个团队都有自己的目标。这些团队之间的差异和沟通缺乏,通常会影响产品,从而最终影响用户体验和公司效益。
5 p+ W# F. s. `# e8 H1 q3 y  H, z; v1 H/ z) M5 b8 M- u1 K

) h/ ^! r: k3 Y# d/ _' q' }, T3 y为了更好地沟通和构建更好的产品,DevOps 已成为每个公司中最关键的职位之一。# t& y# V# }# [' O( Q6 k, ?5 J1 c4 r/ G

: ]/ ~  D' M3 v. \6 l

7 ?6 ~7 N- Y# |8 @* K0 sDevOps 的定义是“一种软件工程文化和实践,旨在统一开发和运维” 。这个术语最初是由 Andrew Shafer 和 Patrick Debois 于2008年创造的,虽然花了几年时间才成为一个通用概念,但如今,几乎每个企业都在使用 DevOps。
# I4 \8 a5 |8 }0 j0 W) G# s% B) R8 f8 b
! _6 r4 R! w4 g/ {
Site Reliability Engineer(SRE) 的概念自2003年以来一直存在,比 DevOps 还要古老。它是由创建 Google 的本·特雷诺(Ben Treynor)创造的。根据 Treynor 所说,SRE 是“软件开发工程师开始承担运维人员的任务”
3 n) `' q) V2 M2 K( t0 D" _: b9 D; j9 E

9 O2 m: ^: u- ?* T: v像 DevOps 一样,SRE 也会整合开发团队和运维团队,帮助他们熟悉另一个团队的工作和任务,同时使得整个应用程序生命周期具有可见性。- D- V2 k; u* a
DevOps 和 SRE 都倡导自动化和监视,其目标都是减少从开发到部署生产中的时间,同时又不影响代码或产品的质量。1 N0 L) c# A2 I+ {' p
& Z  n+ r$ Q& B

/ |: o- G* i6 S" b4 V" S7 Q' _# uGoogle 指出,SRE 和 DevOps 彼此之间并没有太大区别:“在软件开发和运维方面,他们不是竞争关系,而是旨在打破组织障碍,使得更快地交付更好的软件的亲密朋友。”
, n- O- N  [6 f2 ^
3 _' U: n: Q6 R, p5 b+ N

8 A8 ^5 @0 d8 d+ q7 c% }/ uDevOps 和 SRE 之间的差异
! Z9 J; y! b. |+ Q0 f# m9 C6 K* `: ~% h9 }0 \: j6 W# N
如前所述,DevOps 的概念就是将开发与运维结合起来,定义系统的行为,并了解需要做些什么来弥合开发团队和运维团队之间的“鸿沟”。DevOps 的理论是关于使开发团队和运维团队合而为一需要做些什么。3 w  B6 r! D8 Z$ N. _* c

' Y$ |1 ^+ ]3 }; f# M. M9 V9 P- X
' D8 ]- c* W0 R! U% `9 _
根据 Google 的说法,这就是 DevOps 和 SRE 之间的主要区别所在。DevOps 只是关心需要做什么,但 SRE 却谈到了如何可以做到。SRE 是通过使用正确的方法,工具等将理论部分扩展为有效的工作流程。这还涉及在每个人之间分担责任,并使每个人都具有相同的目标和愿景。
/ |# S8 v: {. i% t0 m. W& f7 n5 B" u! f- w+ j+ T. g
; v" r7 x/ R/ {
为了进一步说明两者之间的区别,Google 发布了一系列视频和帖子,介绍了DevOps和SRE的不同之处。其中两位 Google 员工(Seth Vargo和Liz Fong-Jones)撰写的一篇文章中,他们解释了 SRE
“体现了 DevOps 的理念,更加注重通过软件工程师和运维人员的工作来衡量和实现可靠性。”
# Q7 A, s, z1 h) M( |4 Z
Seth Vargo 和 Liz Fong-Jones 通过以下5个方面解释了 DevOps 和 SRE 之间的异同:
6 X" `2 X" P8 J% ]* V% S+ T6 F7 {" Q1 j

; D: f/ a" h( m: _# Z4 U% n
1.减少组织项目独立
4 w" I9 Z$ y- D/ ^
通常组织结构复杂的的大型企业,有许多团队是独立工作。每个团队都将产品推向不同的方向,没有与公司的其他成员进行交流,因此,他们无法从整体上了解产品全局。这可能会在部署中的引发问题。
$ O3 Q+ y. |* |" p* S
DevOps 的工作是减少孤岛,并确保不同团队最终目标一致。通过共同的愿景将团队组织起来。
7 d. h* \4 D1 m7 w% h; N" H. C8 t; L% Y9 C
  c. p7 [9 u' ?5 O3 t
SRE 不再谈论公司中有多少独立项目,而是在谈论如何让所有人参与。这是通过使用整个公司相同的工具和技术来完成的,作为回报,这有助于在每个人之间共享所有权。% H1 S$ F7 K( S/ a/ d0 b# C

5 q2 x$ Q6 Q+ V
. q3 J( A. u) \/ e+ s8 a
2.接受故障
5 Z2 e$ ^7 L, y; E+ m4 ]8 Z# Z$ O
尽管 DevOps 的概念是在故障出现之前进行预防,但是不幸的是,我们无法避免故障。DevOps 通过将故障视为必然发生的事情。

+ v# m9 m1 P5 L# Y  l) D3 p
在SRE中,通过制定一个公式来统计故障。换句话说,SRE希望没有太多错误或失败。
/ u1 {% a  \% e8 c% B
该公式,用两个关键标识符来衡量:服务水平指标( Service Level Indicators ,即SLIs)和服务水平目标( Service Level Objectives ,即SLOs)。
4 k- C- V! D8 r) _
SLIs 通过计算请求延迟,每秒请求的吞吐量、失败次数来衡量每个请求的失败。SLOs 源表示SLI在一定时间内的成功。
$ L( S) Z9 i' s* h- Z% X* X& m1 [
3.实施渐进式变革

' a0 s8 [+ L7 k  J6 {越来越多的公司希望能够频繁发布,不断更新迭代自己的产品,并使团队成员时刻关注新技术和相关技术。

9 r' W' B/ u0 \& a" i9 d
DevOps 的目标也是如此,但要以渐进和可处理的方式进行。DevOps 和 SRE 都希望快速发展,SRE 强调在这样做的同时降低故障成本。

% d( K% S9 t/ @  H( G: u  I  |4 i
4.工具化和自动化
5 H  l' G6 Q* q: D# Y6 }& K' ^- c
如前所述,自动化是 DevOps 和 SRE 的主要重点之一。DevOps和SRE都鼓励尽可能增加工具和实现自动化,通过消除人为操作为开发人员和运维降低出错率。
# g0 Y+ y7 |8 b0 w1 [
5.衡量一切

% G  x" |0 o7 |. O自动化工作流程需要不断监控。DevOps 和 SRE 团队都需要确保他们朝着正确的方向发展,并通过衡量一切来做到这一点。
( m0 c) Q, m; E3 u4 }* o) [/ x: l- U2 l5 M
这里的主要区别在于,SRE围绕”运维是软件问题( operations are a software problem)“的概念展开,从而使他们定义了一些可用性度量方法。
( m1 b- ?; A% H' ^& L
SRE 还确保公司中的每个人知道如何衡量可靠性,以及在出现故障时该怎么做。
4 P- x% S4 M0 M' n& c: U
可靠意味着什么?
4 r/ r/ I& f, T$ J( _
3 I3 t, h( k6 ]" [
上面,我们讨论了责任划分,接受失败以及衡量一切。现在,我们需要一种方法来确保一切都确实能够正常运行并且可靠。换句话说,应该有一个统一的方法来测量每个级别的可靠性。
1 m( f& `# ?4 u3 \8 t7 M
SRE通过 SLIs 和 SLOs 来衡量,DevOps团队会衡量失败率以及一段时间内的成功率,并且两者通常都是使用不同的工具和方法来进行的。可靠性不仅与基础架构有关,而且也与应用程序质量,性能、安全性息息相关。
7 Q8 `. J2 U" C- p
问题可能在应用程序的不同方面发生,并且当发生故障时,我们需要拥有可靠的数据,来了解问题发生的原因。如果我们将数据细分,包括:
) U/ X2 K$ J: P! c# s1 l8 q
  • 堆栈信息
  • 变量状态
  • JVM状态:线程,环境变量
  • 相关日志语句(包括生产中的DEBUG和TRACE)
  • 事件分析(频率,失败率,部署,应用程序)$ y: W* {1 Y2 f. ~$ p7 H7 l/ e! d% U
6 R5 a1 e2 q6 c- \6 e; q  q; r
# F0 v) P! D1 z9 J' G' Q# q  u
由于这些数据是至关重要的信息,因此我们必须确保它是可靠且可操作的* }' \/ {, v  E, Y0 ]
/ _/ W% o, f5 D  u, }4 Q( S

5 s4 @' [# N7 d: i总结1 q( k( ?: M: V$ k/ L5 X& ^
: @% i5 q/ }' R5 z5 Y4 @. ]4 T

6 a; P6 z1 O: b; Z, c. L5 T' RSRE,有明确的定义,并提出了一系列直接的期望。然而,DevOps 更像是一种“自由精神”,其定义和观点因组织而异。
% m1 I. x+ ~2 |. \5 e; h. s+ b1 x
* z& h1 I7 k! j" B4 ~% {1 a

$ U+ K! w/ M3 M8 }但是,DevOps 和 SRE 团队并没有太大区别。
9 m6 l7 A6 l2 g! C0 m6 V% X
! i# d8 Z, t5 T  D" n. {' N

7 _" S0 R& B. B. l两者都有助于整合开发人员和运维团队,同时承担相似的责任,并专注于实现自动化和可靠性。最重要的是,一切都与数据有关。你需要数据信息来衡量成功和失败,以及如何在整个应用程序中获得持续的可靠性。(DevOps SD)% Q9 l9 k5 u8 I8 z8 M

' O# J# J8 r5 q9 y: k7 W




上一篇:DEVOPS和SRE工程师必需知道的检查清单
下一篇:SRE的职业发展与定位

本版积分规则

本站关键字: ITIL| ITSM| ISO20000| ITIL培训| ITIL认证| ITIL考试| ITSS| ITSS培训| ITSS认证| IT运维管理| DevOps| DevOps培训| DevOps认证| itop| itil4| 开源ITSM软件

QQ|小黑屋|手机版|Archiver|艾拓先锋网 ( 粤ICP备11099876号-1 )|网站地图

Baidu

GMT+8, 2020-11-28 04:07 , Processed in 0.158684 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表