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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 563|回复: 0

15个标准衡量DevOps是否成功

[复制链接]
发表于 2018-11-14 10:08:28 | 显示全部楼层 |阅读模式
本帖最后由 adminlily 于 2018-11-14 10:14 编辑
5 m* I! H* l& Z, T* w4 ?4 @# [0 d
) v1 M4 o) v% _. C3 c9 }; }

1 \( B$ f7 y8 |; o& T
1 C" |, T; U# `% h7 x
DevOps在你的组织中运行的如何?如果你需要帮忙衡量它运行的如何,我们准备了一些DevOps的关键指标来进行追踪。这些指标可以帮助理解你的团队过去做的如何。

" z1 U, a' i" f6 {& R: Z

# l) W7 D: z. y9 t- H
定义DevOps对你的组织意味着什么. b) [6 T0 p! z& w( F- ^

2 s  c. C3 J0 ^$ B

/ E/ Z1 u. r( x& P- E1 Z
DevOps这个词,不同的人不同理解。有些人说他是一种文化并且行业中的每个供应商声称,他们的工具有助于DevOps。取决于你如何定义DevOps,这些指标会对你和你的团队多多少少有些帮助。

/ L( g3 n& i" ~. K

' [7 H+ v" ~! z/ P, X, W! ~
我把DevOps定义为与部署和监视应用相关的所有内容。从许多方面来说,这都是现场可靠性工程的问题。在Stackify,我们都没有一个操作团队来合作。我们的开发人员直接部署到云上,我们的操作方式更多的是“NoOps”风格。可以看我的博客,了解我对DevOps的更多看法。

/ X! e. h; G$ _

$ Q, T8 h1 s; ^
确定你的DevOps挑战
5 P7 r& C; ^0 g% a

6 i- |& H$ g, }; `0 f+ N, k
在弄清楚DevOps衡量标准是什么之前,需要确定组织所面临的挑战以及你要解决的问题。在Stackify,我们最大的问题不是频繁部署,和降低的bug逃逸率。我们的执行团队正把重点放在2018年的具体指标上。
3 m- k0 J& N: \! d; e* g
! S4 ]' E, U: ]5 z- I3 s: B0 v0 y
DevOps衡量标准的类型
4 R5 v8 G# ^$ K! x, `5 v4 \( G0 F! T
$ u4 J; ~* c' t4 K6 r4 y+ J
DevOps是关于持续交付和尽可能快的发布代码。你想要的是行动迅速而不是打破常规。通过跟踪这些DevOps指标,可以评估在事情开始变坏之前,你可以移动多快。
% T' a8 x- a6 M7 V$ Q
" F8 _* s/ e+ {7 W. a. T
1.部署频率* ?: j8 Z. }2 M0 ?+ J6 q
& }& B* b( q6 q; d9 S: K0 [7 `! [7 W( I
2 m+ W' v- a2 m: l$ M; ?) o, z
2.体积变化

3 V4 @1 s! t/ x  N9 u% W3 j; m+ y" T
# z( K  D/ p8 j( l. _% j* I
3.部署时间
+ |$ S0 Q, v& O" `7 Y9 N, {5 x* C3 i
( I/ z( p# t4 q/ {3 Q
# D& H% D" G( |# }' h
4.交付时间
; _4 H* X/ r$ P3 l3 O  c
( n9 _& f4 B% a% p7 R$ Y/ K8 X
8 R1 B5 k# }+ z4 w
5.客户反馈
( W! N  o# k3 a

7 _$ T' h3 ?' U: L! G
; p4 Q# H% R. ]5 i3 P8 b" |
6.自动化测试通过百分比

' y- q* s- H! [/ U# D, Z
* ?' B& X* c6 O% [

! G1 R! A2 r3 w: Q# \7.bug逃逸率
% p$ ^* ~& P/ {! Z4 Z

+ k" H/ X6 H$ a: H( M

6 d6 V/ X/ F+ l2 n2 C& g9 c/ g& t8.可用性

! W' T( F3 J4 m- t& }
! Q9 F0 \8 n+ d. _( x3 J

9 M1 |: R8 L7 [% B5 i9.服务水平协议

' Y/ o7 v. a) A; ]  H! @, P8 x8 |' u5 A% F0 S
; t' l& h; q* |) P8 P% ?
10.失败部署

. t+ C- O+ l! V- W" X( J7 Q
$ V" k9 x! w$ g/ z
  n2 C# w7 G* q; P: k2 R
11.错误率

  g9 A) Q2 j( ]$ M9 m/ [& b
) C  k) f% j* A
( j  M: {# Y  w. f
12.应用的使用和流量

% |- N8 e  B/ Y9 d7 j+ e3 k; U) m0 O  _% d2 g8 a3 Q5 P, R6 x6 ]
: B: [* P! G4 ?1 Y! I( s( Z
13.应用性能

5 O# ]! I- {6 u- k6 {0 N& O. J
  Y) {$ Y& x) }2 m3 Y/ p2 l

. e  G% Z/ m9 V& H3 z3 y* d14.平均检测时间(MTTD)
" G* I/ B6 f: e' @2 q- N' e
$ ]1 }) P4 j/ ^9 z9 }

6 U4 g. f( h; G8 V15.平均恢复时间(MTTR)7 n5 |& c( s, a$ X4 j
& B4 k, s2 T) t- N! c1 W

! [1 ^- ], w; I) K! x  `- E# j
DevOps的目标:速度、质量、性能
) ?9 H; ^- f+ P' Q

# j6 ^8 l) _8 U" r! r, B* I% y
DevOps的主要目标是速度、质量和应用性能。
  @* z  G8 G7 t! m9 d& `
( N- n7 U% y( Q6 P4 b* @* u; S
你希望尽快地发布代码。根据你的产品类型、团队和风险承受能力,可以有多快地实现这一目标。

' f: ?# r  W% A1 U- M

, u0 {& N: d9 Q$ s
即使没有在速度上跟踪任何DevOps指标,至少应该在质量上评估下工作方式。也许在可能的情况下试着发布,而且并不在意有多快,但是质量你总是关心的。你最不想要的就是总是在追着生产的灾难。
$ g* E2 ?# i4 z3 C, e1 L0 `9 S  }- S

  ^8 G1 `2 `. h9 u) u" x
方程式的第三个部分是性能。你可以说,这也与你的高速度和高质量的目标不一致。性能也与质量有关,但可能略有不同。
部署大小
0 s4 _' c3 y. \' f' l

5 m& E" d! `4 \( t; {+ M& n" d
跟踪多少stories、特性请求和错误修复正在被部署,这是DevOps一个很好的衡量标准。根据你的项目有多大,它们的数量可能会有很大差异。还可以跟踪部署了多少个story points或这几天开发工作的价值。

  R6 z3 A; i3 p6 u

- O' k! K0 ]$ w
部署频率
, m2 Z# Z) v% r1 [% `2 W' K2 h3 g
& s( u  i$ G% \
跟踪部署频率是DevOps一个良好的衡量标准。最终,目标是尽可能多地做更多小型部署。减少部署的大小让测试和发布变得更加容易。

5 ~8 u' Q$ X! E2 n

, M5 X: S1 Z+ K1 j
我建议单独计算生产和非生产部署。部署到QA或预生产环境的频率也很重要。需要在QA中尽早部署,以确保测试的时间。在QA中发现bug很重要,可以降低bug的转化率。

( @3 k/ Q+ r1 O/ ~/ g

" ^" |; R2 [9 G) C* b% T% M
部署时间

/ m% c' c0 v; ~8 h  A
4 C/ C! o' J/ M# X. a& K
这看起来可能很奇怪,但是跟踪实际部署需要多长时间是很好的指标。我们在Stackify的一个应用中部署了Azure工作者角色,部署大约需要一个小时。这是一个噩梦。跟踪这些事情可以帮助识别潜在的问题。当实际执行比较快时,更容易频繁部署。

9 m5 q) O6 A1 p7 W
; }* I+ N0 ?- Q* E  f8 d
交付时间
2 l* \( `: M" b! V  x3 j9 Z' v7 K
- @  M. P3 k' K  n
如果目标是快速发布代码,这是一个非常关键的指标。我把交付时间定义为从工作项开始到它被部署之间的时间。这可以帮助你知道,如果你今天开始一项新的工作,它平均需要多长时间,直到它开始生产。这也是有助于BizDevOps的一个好方法。

& ], Q# Q0 M9 x4 [0 m8 p' T. s& U4 W
2 `( {. F1 \; N" a/ o
客户反馈
7 u7 T6 [5 @( w4 N! U$ ]% c

3 c/ o. K+ e5 B5 s6 p  V, X) S
应用问题的最好与最差的指标是客户的支持和反馈。你最不想要的就是让的用户发现bug或者发现你软件有问题。因此,它们也能很好地反映应用的质量和性能问题。
$ ^/ Y+ H5 E/ L7 g% ~2 ^! f

* m4 H! }1 _1 ]' F0 _
自动化测试通过百分比
( g+ X& d5 n& P% S/ D
  ~+ L, Z( n1 b) q
为了提高速度,建议团队广泛使用单元测试和功能测试。由于DevOps严重依赖于自动化,所以跟踪自动化测试工作的好坏是一个DevOps指标。了解代码更改导致测试中断的频率是很好的。

5 s% I/ v& y% d- I
0 l$ ~# z$ K( d. k' `
bug逃逸率

" H7 p) B) T6 Z+ I# ~6 F# U
1 N. n3 S4 H# x
你知道在生产和QA中发现了多少软件bug吗?如果想要快速地发布代码,需要有信心,可以在他们开始生产之前发现软件bug。bug逃逸率是DevOps一个很大的指标,用来跟踪这些bug在生产过程中经常发生的情况。
: l3 E, E3 F; ^" T$ q9 ^. [! t
* i% T" l, |* P0 w- O, `# O# o
可用性

# w. v9 f6 n4 r, O1 u; }$ K

6 _- M1 z) M3 J0 x6 r
最不想发生的就是应用停机。根据应用类型以及如何部署它,可能会有一些停机时间作为计划维护的一部分。建议跟踪这一点,以及所有计划外的停机。
% `2 r! ]5 I; h
0 A* |1 Y  K/ `$ R( a
服务水平协议
# i8 ^; r: Z  s! y" Z
2 y& k. r8 w  j# r, M# c3 w5 y: g, T
大多数公司都有一些服务水平协议(SLA)。同样重要的是你要追踪是否遵守SLA。即使没有正式的SLA,也可能需要实现应用需求或预期。
  R7 }5 J" g/ K% B9 r. @
+ E. l  |/ d. k3 x
失败部署

' g8 Y5 l) M' d5 {( I

6 {- r! K6 S0 T) R) d' ~
我们都希望这种情况永远不会发生,但是部署经常会给用户造成中断或重大问题吗?反转失败的部署是我们永远都不想做的事情,但这是应该一直计划的事情。如果遇到了部署失败的问题,请务必跟踪这个指标。这也可以看作是对失败的跟踪平均时间(MTTF)。
' `3 x2 O9 b7 G
  r& _1 X$ ]% N1 [& e. x
错误率
1 d7 c3 C: Y% v& E
( @5 G/ r' y/ t, F+ c- V
在应用中跟踪错误率非常重要。它们不仅是质量问题的指示器,而且是与持续性能和正常运行时间相关的问题。好的异常处理最佳实践对于良好的软件是至关重要的。

' W' O: G  e5 ]. x) v6 W
, c1 i% m' b7 `* d% a$ z7 J
  • bug——在部署后识别在代码中抛出的新异常。
    & f/ ]# C# P9 l% M

- F4 s' d) ]4 i- p3 E
  • 生产问题——通过数据库连接捕获问题,查询超时和其他相关问题。
    ) ?: Z: O5 T! f; c
8 ]9 F) b" H! P0 [
对于大多数应用程序来说,错误是无法更改事实。在Stackify,我们在几百个服务器和上千个SQL数据库中处理数百万条消息。这里有一些错误,只是一个繁忙系统的部分噪音。重要的是,你要对你的错误率保持一个脉冲,并寻找峰值。
# ^4 y) D+ I3 n& g! }

4 U. J7 {! F( [, g/ C
4 D2 a, P- K( H# v
?wx_fmt=png.jpg
9 {  z# _6 v6 @9 `1 x. a

1 ~# F2 Y2 ~, s( A. _* T4 [/ T

% ^8 c1 O' S& M6 h1 s
应用使用和流量
) }- Z8 Z3 P: _( A

- g& J5 D' d4 r
在部署之后,想查看访问系统的事务或用户数量是否正常。如果突然之间没有流量或者流量有大幅上升,那么有些东西可能是错误的。

8 V' V- A0 @" D$ I' P3 n) R& ~* n
: W* ]/ o: H, t3 Z
最不想看到的就是根本没有流量。如果使用的是微服务可以看到流量激增,而你某个应用突然导致了大量的流量。

/ s) X" I& H$ a" X8 L: b; r
4 O5 `$ E7 Q$ T0 j
应用性能
2 w  L! Y2 u) o
7 n5 H" d9 W( a# k+ a; a
在进行部署之前,应该使用像Retrace这样的工具来查找性能问题、隐藏的bug和其他问题。在部署期间和部署之后,还应该寻找总体应用程序性能的任何变化。
9 L- I7 m2 q4 w  h4 G. d8 L) L

" H  H0 ~3 y( F# r& b) f* q
在部署之后,可以看到特定SQL查询、web服务调用和其他应用依赖项的使用的主要变化。Retrace这样的工具可以提供有价值的可视化效果,比如下面这个,可以帮助轻松地发现问题。
- ?2 \0 b* l# U$ D7 G' b( e( r
4 |: l; s6 {, M0 N: r! @# w
?wx_fmt=png.jpg
1 v7 X% J4 d4 r

" Q' `3 ^5 S0 u& y* {
& W$ Q7 c3 Q, M/ o. \0 E9 a" `
平均监测时间(MTTD)

$ H1 o0 f4 H. U# l
& }' a4 v3 Q2 W
当问题发生时,重要的是你要快速地识别它们。最不希望的是出现重大的部分或广泛的系统中断,而却不知道为什么。拥有强大的应用监控和良好的覆盖将有助于快速发现问题。一旦发现它们,也必须快速修复问题。
. d2 S4 _# r( R7 I3 `- ^/ [
# K& i  X4 ^' x7 w' z; Z
平均恢复时间(MTTR)

- w, U! a# s/ r9 y: {

3 W6 H1 I6 ^8 }+ K( @
这个指标可以帮助跟踪从失败中恢复需要多长时间。对企业来说,一个关键的衡量标准就是将失败降到最低,并且能够迅速地从失败中恢复过来。它通常是按小时计算的,可能是指工作时间,而不是时钟时间。

9 [' y$ K! y  U" U& c- U9 V3 ~

! M- M/ V8 i- n2 r- s
拥有良好的应用程序监视工具可以快速识别问题并快速部署修复程序,这对减少MTTR非常重要。
" V( h% W4 [: ~

4 j1 g" C" ]  |, h+ J8 u
应用指标

& W. T6 Q! Z6 ]; o

9 J4 w( X8 }' I) q# l! T" u
除了上面列出的DevOps指标之外,还可以跟踪许多其他的指标,这些指标都是特定于你的应用程序的。它们中的大多数与DevOps在部署应用方面不一定相关。但是,它们对于监视应用程序在生产中的使用和性能非常关键。
4 [1 S( a  a, A9 F$ u* k
' s# N! ]9 s) |* ~" K: T2 k3 m& Z
例如,在Stackify中,我们使用自定义指标来跟踪每分钟通过API接收的日志消息数量。这是一个重要的衡量指标,帮助我们理解流经系统的数据量。根据你应用程序的不同,可能有类似的自定义指标,对你的应用程序至关重要。

7 l1 g1 _0 k. r/ `  Z8 Z1 L

- o4 Q- s3 X, U8 U
在部署之后,你将希望监视所有关键的应用程序指标,以确保一切仍然正常。
  u) O2 f7 [8 l5 }/ ]( u3 C
3 v9 g) J) i4 P
总结

+ _9 @* F7 C" r; Y" U

+ {- J, z6 ]! B7 f0 Q0 @4 s! Y) o& `
如果你想要让DevOps进行到下一个级别,我相信我们的DevOps指标列表将帮助你了解如何跟踪和改进。DevOps的目标是协作,让开发人员更多地参与部署过程和应用程序监控。
2 i9 C: Y- X8 w% Y& F7 u

  n' V) c0 Q) L0 `7 G  B  K7 h" p
原创:Matt Watson
. O9 y1 T! A9 g+ V. K
- N$ k; g5 j/ y% X; L! b9 T

本版积分规则

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

Baidu

GMT+8, 2019-10-20 01:33 , Processed in 0.146475 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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