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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

查看: 749|回复: 0

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

[复制链接]
发表于 2020-8-14 17:03:40 | 显示全部楼层 |阅读模式
本帖最后由 陈小宝 于 2020-8-14 17:06 编辑 ! E% V7 S7 E) m' T
5 V, w/ ?1 X# J( [8 r" A
粘贴上传202008141700593846..png
9 x1 g" @( o8 ~

, Z& Y  R0 q7 ?0 a! |' h6 F( DDevOps 和 SRE 似乎是同一枚硬币的两个面。他们都旨在弥合开发团队和运维团队之间的鸿沟,都想要提高软件部署的效率和软件运行的可靠性。
2 o& [' P0 A) a, l8 H+ ~2 p( z
5 I# O% x! B1 ~6 y6 L

9 T0 B* {9 F% W在大多数公司中,我们可以看到开发团队和运维团队的职责和能力会有重叠。那么 DevOps 和 SRE 有什么不同,每个意味着什么?让我们来看看。
& V3 V" W" K" p8 |8 X% j# Y" B) s& N" x8 L; E

" N' ]: K+ ~  P3 T* a开发,运维和可靠性6 @( \& E5 l; T8 Z& K  L# ?
& A  z: x* f1 |  o
在实施 DevOps 之前,开发和运维团队是两个独立的团队,每个团队都有自己的目标。这些团队之间的差异和沟通缺乏,通常会影响产品,从而最终影响用户体验和公司效益。! d2 ?( o/ S- C
/ Z& O! K9 ~2 F/ @) |6 X4 [; N/ J$ l
4 |* v9 K5 ?9 O3 F0 J+ A
为了更好地沟通和构建更好的产品,DevOps 已成为每个公司中最关键的职位之一。
: b1 |. V$ g6 c  G$ T
9 |1 i7 z; G' u' X/ Y$ Z: `: k

/ c) A# Q) {/ ]9 DDevOps 的定义是“一种软件工程文化和实践,旨在统一开发和运维” 。这个术语最初是由 Andrew Shafer 和 Patrick Debois 于2008年创造的,虽然花了几年时间才成为一个通用概念,但如今,几乎每个企业都在使用 DevOps。
/ r& M9 _+ ~4 A, P2 @& |
; q# \# o2 B; `5 S

9 S0 b- D" o/ n! G9 ZSite Reliability Engineer(SRE) 的概念自2003年以来一直存在,比 DevOps 还要古老。它是由创建 Google 的本·特雷诺(Ben Treynor)创造的。根据 Treynor 所说,SRE 是“软件开发工程师开始承担运维人员的任务”$ M3 p1 m: b6 E9 _  L  N; U& v
' H0 T: u+ j+ J
) H- p; P( k3 T( F
像 DevOps 一样,SRE 也会整合开发团队和运维团队,帮助他们熟悉另一个团队的工作和任务,同时使得整个应用程序生命周期具有可见性。: }+ _" o3 N" y
DevOps 和 SRE 都倡导自动化和监视,其目标都是减少从开发到部署生产中的时间,同时又不影响代码或产品的质量。
' ?8 G# d+ ?0 X) Y) g
8 o4 k/ b# c  d, D  c' U0 ^! s; n
0 V$ \  x+ D- g- V( w
Google 指出,SRE 和 DevOps 彼此之间并没有太大区别:“在软件开发和运维方面,他们不是竞争关系,而是旨在打破组织障碍,使得更快地交付更好的软件的亲密朋友。”1 Q2 P/ M1 w. s  }5 Q! o% j

4 @' n. e  o+ d

" C" {6 A- h4 jDevOps 和 SRE 之间的差异
9 O0 M: D5 K5 `* L8 o6 }
: S  M) o0 v) H. ~4 T! R如前所述,DevOps 的概念就是将开发与运维结合起来,定义系统的行为,并了解需要做些什么来弥合开发团队和运维团队之间的“鸿沟”。DevOps 的理论是关于使开发团队和运维团队合而为一需要做些什么。
# ?# p. i9 j+ k1 w. l5 Y1 @' Q3 w
- J5 Q8 @' D3 @. x* ]; F. M

) c2 Z4 d4 [, h% E; s3 X* U; n) C5 n根据 Google 的说法,这就是 DevOps 和 SRE 之间的主要区别所在。DevOps 只是关心需要做什么,但 SRE 却谈到了如何可以做到。SRE 是通过使用正确的方法,工具等将理论部分扩展为有效的工作流程。这还涉及在每个人之间分担责任,并使每个人都具有相同的目标和愿景。
/ B0 v0 U7 S( O6 [' A9 j/ I8 Q
( f3 f. D5 e2 v% L/ k/ I* ^
+ j- }4 C+ c/ D5 X
为了进一步说明两者之间的区别,Google 发布了一系列视频和帖子,介绍了DevOps和SRE的不同之处。其中两位 Google 员工(Seth Vargo和Liz Fong-Jones)撰写的一篇文章中,他们解释了 SRE
“体现了 DevOps 的理念,更加注重通过软件工程师和运维人员的工作来衡量和实现可靠性。”
. }+ ?# E5 x' n
Seth Vargo 和 Liz Fong-Jones 通过以下5个方面解释了 DevOps 和 SRE 之间的异同:# }- |+ \& ~2 s# Q* p

: a. d2 t8 m) g8 c
$ A/ _: M: n% C" q1 }
1.减少组织项目独立
+ b8 v+ T8 o7 U) o" J  S( R
通常组织结构复杂的的大型企业,有许多团队是独立工作。每个团队都将产品推向不同的方向,没有与公司的其他成员进行交流,因此,他们无法从整体上了解产品全局。这可能会在部署中的引发问题。

9 d& }% R2 E; t0 I+ j) H% c6 }  \3 y
DevOps 的工作是减少孤岛,并确保不同团队最终目标一致。通过共同的愿景将团队组织起来。
; k6 D1 j# J% ?; }; W: i" k) O5 K  A  k. G$ z
; w! E  i/ L- D' t0 u% x3 s! S- H2 m$ Y
SRE 不再谈论公司中有多少独立项目,而是在谈论如何让所有人参与。这是通过使用整个公司相同的工具和技术来完成的,作为回报,这有助于在每个人之间共享所有权。
/ Z( [+ K6 [: N9 Z5 c9 T7 W
* R7 q; D; p' o7 k# p9 v

8 T; O) u2 t* G. ^0 p
2.接受故障

  h& |9 x( ]5 v4 \1 h7 H2 b尽管 DevOps 的概念是在故障出现之前进行预防,但是不幸的是,我们无法避免故障。DevOps 通过将故障视为必然发生的事情。
! U1 W, ~) z! A" f. z' i6 @7 `
在SRE中,通过制定一个公式来统计故障。换句话说,SRE希望没有太多错误或失败。

: ^2 p3 h8 P+ w& P
该公式,用两个关键标识符来衡量:服务水平指标( Service Level Indicators ,即SLIs)和服务水平目标( Service Level Objectives ,即SLOs)。
! W1 ~: O( C- f" l1 q4 w4 i
SLIs 通过计算请求延迟,每秒请求的吞吐量、失败次数来衡量每个请求的失败。SLOs 源表示SLI在一定时间内的成功。
5 I8 c) s( ?: B
3.实施渐进式变革
  r7 f. E/ N: F& r) L+ g
越来越多的公司希望能够频繁发布,不断更新迭代自己的产品,并使团队成员时刻关注新技术和相关技术。

' u1 {8 }1 P: B; [4 p1 D$ \
DevOps 的目标也是如此,但要以渐进和可处理的方式进行。DevOps 和 SRE 都希望快速发展,SRE 强调在这样做的同时降低故障成本。

# _5 p4 `' q8 H7 D0 |6 T
4.工具化和自动化

" T. a" N8 p3 P% ]7 L7 @% D) {0 h如前所述,自动化是 DevOps 和 SRE 的主要重点之一。DevOps和SRE都鼓励尽可能增加工具和实现自动化,通过消除人为操作为开发人员和运维降低出错率。

( C' L6 t* z4 f4 _# {
5.衡量一切
: t/ k  s, O* u$ n7 y
自动化工作流程需要不断监控。DevOps 和 SRE 团队都需要确保他们朝着正确的方向发展,并通过衡量一切来做到这一点。
0 o/ R% }) b  m2 G8 A9 M1 y5 q3 l
这里的主要区别在于,SRE围绕”运维是软件问题( operations are a software problem)“的概念展开,从而使他们定义了一些可用性度量方法。
+ L3 w$ U4 x- t. E; p# u' e" N
SRE 还确保公司中的每个人知道如何衡量可靠性,以及在出现故障时该怎么做。
0 e$ ?, L& v# x3 P2 t4 u# Y) l
可靠意味着什么?
& t7 E- W* r$ E* q0 A3 a6 M* ?  r9 z2 v# b1 Y
上面,我们讨论了责任划分,接受失败以及衡量一切。现在,我们需要一种方法来确保一切都确实能够正常运行并且可靠。换句话说,应该有一个统一的方法来测量每个级别的可靠性。

+ I: K7 c! t; d# }/ Y+ k
SRE通过 SLIs 和 SLOs 来衡量,DevOps团队会衡量失败率以及一段时间内的成功率,并且两者通常都是使用不同的工具和方法来进行的。可靠性不仅与基础架构有关,而且也与应用程序质量,性能、安全性息息相关。
( p$ i! R. b9 J: A+ X
问题可能在应用程序的不同方面发生,并且当发生故障时,我们需要拥有可靠的数据,来了解问题发生的原因。如果我们将数据细分,包括:
7 z# G' N7 P2 q# Q
  • 堆栈信息
  • 变量状态
  • JVM状态:线程,环境变量
  • 相关日志语句(包括生产中的DEBUG和TRACE)
  • 事件分析(频率,失败率,部署,应用程序)
    + Z5 {# y( G1 n; X
" A& K% o5 @: a  `: d; V% u
. A% V1 S4 [* [, _& Y8 l
由于这些数据是至关重要的信息,因此我们必须确保它是可靠且可操作的
  q! [' p1 e! M7 G2 I  G! R. d. x9 f8 w( D8 g; v4 ^

1 c: g6 ~9 C: N总结
- \3 q* {6 k" Q/ C/ m' |
, J% V' W9 G3 q3 `: E9 P
1 T% l7 F" }3 v+ x
SRE,有明确的定义,并提出了一系列直接的期望。然而,DevOps 更像是一种“自由精神”,其定义和观点因组织而异。' e7 r$ C  P+ ~9 N: m" ]
9 B7 l/ w9 r% K3 _

3 d3 i7 I+ Z0 a$ c& O但是,DevOps 和 SRE 团队并没有太大区别。
1 r9 S1 o% p/ H0 ]$ x: u
& [1 J; m$ N+ b! i6 P/ y
2 @4 I1 Q/ _4 u# u- Y  R$ y
两者都有助于整合开发人员和运维团队,同时承担相似的责任,并专注于实现自动化和可靠性。最重要的是,一切都与数据有关。你需要数据信息来衡量成功和失败,以及如何在整个应用程序中获得持续的可靠性。(DevOps SD)* F9 y) }; e! C; N, Z  x, q

) d4 y2 u0 F% S$ o: n% e/ B3 w




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

本版积分规则

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

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

Baidu

GMT+8, 2021-3-7 10:34 , Processed in 0.157505 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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