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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 585|回复: 0

看某企业案例 DevOps 转型路线图

[复制链接]
发表于 2018-10-26 15:38:55 | 显示全部楼层 |阅读模式
本帖最后由 adminlily 于 2018-10-26 15:42 编辑 9 X1 J0 c' o$ e
  F  G4 g3 h' \
本文整理自 DevOpsDays2017上海站演讲实录《海外传统企业 DevOps 转型的若干案例》
# ?6 [/ t: u7 N: [7 Z. r

, _/ D' s: v4 |, J6 T$ |
从瀑布式的模型逐步转到 DevOps,各家企业有各自转型的做法。那么有没有一个通用的可以直接拿来用的转型路线图呢? 今天我们将通过分析几个海外金融行业的相关案例并引入一个模型(Cynefin)来带大家探寻企业 DevOps 的转型确实可行的路线图。
% X5 ~. ~& ~/ y) U( K  ]
1 \% \, I# B8 [) n
, e- g4 A* P- R$ D! }1 B! q0 E+ L3 Q: v
前言
在给客户培训DevOps的时候会尽量把整个DevOps体系,包括流程、文化、 技术实践,和业务IT的关系等等传递给客户。但是企业要想从头开始实施 DevOps ,有没有一个转型的路线图,从现在的状态一步一步地转到 DevOps 的状态?这是客户经常会问到的一个问题。从我的直觉上来判断,由于每个企业所处的情况不同,是没有一个通用的转型路线图的。但是一般还是有人会追问,所以我今天做一个系统的分析,来看看到底有没有企业 DevOps 转型的路线图。

% k+ {+ w* t8 K# e7 F! a, f. |" ~

+ O" P7 v# ]6 {6 l: E6 T" i
先来看一个案例。

) _5 W& n1 }. X& g1 M- ~& H/ e5 x# k
6 t) B6 T1 l+ J+ ]; a6 U
Nationwide(互惠保险)的案例
1.png
9 |7 m) j0 A7 }( T

9 V! w+ l( ?9 z2 H4 n+ D$ S
Nationwide(互惠保险),是财富500强里排名第69的一家公司,全球有3.3万名员工,客户遍及美国的各个州。

; Q' w) B5 C& Q( B4 ?
- n: r& X& o! N+ k$ `$ {, t4 J
他的 DevOps 转型是怎样开始的呢?开始还没有 DevOps 运动这个事情。互惠保险是从敏捷转型开始,主要是先从一个瀑布的模型逐渐地转型到CI/TDD,随后在几个团队里面实现了全栈式的敏捷开发,成为公司的标杆团队。

/ x9 ?' j6 V: b& O' r" @
' B0 y1 u: q* p1 J
第一阶段:从3个敏捷团队发展到200个敏捷团队
1.png
* [" T$ C- w0 @# ?$ g  B
- k- `+ |0 ~6 S* U% b
之后一年敏捷团队成熟了,然后开始规模化敏捷。从三个团队开始,一直发展到整个公司绝大多数开发团队都能做到成熟的敏捷实施。这一过程花了五、六年的时间 。因为公司规模大,所以看他们的成绩也是很不错的,从质量、开发速率、系统稳定性等多方面取得了很好的成绩,这是第一阶段的成功。
( |- K- I: h+ S, j

0 h) \  F, }, r2 ^9 p4 U3 ^
第二阶段:新的痛点
1.png

" y: a% o$ ]7 v. d* s5 b3 k2 h1 `. F
  t" m* [2 W, Z0 ^/ S
但是互惠保险又遇到新的问题,公司发现整个交付是上图这样一个曲线。通过这个曲线可以看到中间的设计、开发、测试都做得不错了,速度跑的很快了。但是敏捷之前有一个瓶颈,就是从一个商业的想法开始、到包括需求分析、年度项目预算等对 IT 的整体发布速率来讲是一个巨大的瓶颈,这个瓶颈占到整个开发流程总时间的60%。

: Z( N- ~/ S+ C3 b( [9 k

/ X  H* q# M8 d( e: |) l
而另外一个比较严重的瓶颈就是开发之后一直到产品上线又花了大量的时间,公司现在发现只做敏捷是不够的。所以就开始按照解决这两个瓶颈的思路去解决问题。

5 F. Z5 z) f7 r* Z4 @% ?
' h' e! ]' M9 ?7 M
解决新痛点的方法
1.png

: i6 j! O* [% M  H/ m

  ^: H- T* c& y( q: Z% R
公司领导用了一个典型的价值流图去展示整个流程,并分析这个价值流图。首先解决的是产品代码开发以后到上线的环节,就是持续交付阶段,重点要解决的问题,代码写好怎样上线,整个环节都是在优化这个部分。
0 C) M: ^9 T8 w6 q& u
* S- E) @9 r' ]- n1 b
同时以公司还引入了很多新的工具,包括github、new relic,splunk, 同时也进行了一些架构方面的优化 。

) a4 R9 b% c/ }: P% K0 R+ K6 a
3 {7 W3 s, A! ^; C' ^* m
Nationwide(互惠保险)转型
1.png
! L5 d+ `, w* @6 Q
2 h- O; z$ @1 E9 p0 [
上面是Nationawide的转型全景图。横轴是时间维度,通过时间的推移怎样转型的,纵轴是能力,或者说是企业员工对变革的感受。把相关实践放到这个曲线的各个阶段上,就形成了Lewis—Parker转型曲线,任何一个组织都会经历这样的曲线。你会从早期的成功中获得兴奋,但是遇到新的问题你的期待值和感受会再次低落,然后通过解决问题取得新的更大的成功。

6 {! A" u: _2 G- G- w: S

0 X2 |( T; A3 D! L: e7 e
另外我把企业在DevOps转型过程中会应用到的实践总结为 DevOps 思想屋(图中间部分),大家如果学 Lean 的话,可以看到与它相似的精益思想屋。这个DevOps思想屋也是我自己被训课程的基本架构。
* ^. B( Y4 _: e: s5 r

9 ^& s% L; S! ^" L# Y
上图左边的柱子是与持续交付相关的技术实践,该部分是自下而上的,很多的实践是技术团队发起再演进的。而右边的柱子是组织文化相关的,需要领导层推动的,所以他的箭头是自上而下的。

7 J( d7 n$ ?% _8 ?
" u: q$ Z, M1 D. ]
思想屋的地基部分围绕企业级交付流水线,就是一个idea产生到上线整个的流程,这里面涉及到规范敏捷,轻量级的ITSM等实践,而精益是流程实践的根本。

) D, K3 o8 O! G; W9 v: u' t

+ m, ]+ p$ f# o* h% |  z+ i
企业转型的期望模式
( ]" v5 S9 H) V/ m( v6 F% k+ l

6 G) \* p2 `8 \$ e  u" b
成功转型的企业会延续这样的曲线。但是这里有一个问题,我们看到思想屋和转型曲线,能否得出一个企业的转型定律?比如通过Nationwide这个例子得出来你应该先做敏捷,然后大规模敏捷,然后是精益,再然后是DevOps呢? 我觉得不能。
% Y' _7 e" y" s" p

% j9 {  a7 _* `7 q
那能否从相似的企业当中总结出来共同点,我套一下相关的案例,两三年做转型。看了蛮多的案例我个人的判断是“我觉得应该不是这样做的”。
1.png

! F% X( o8 k- i  }! a- Z

/ E% \0 x; F4 z- R& S
案例一
- [) w# q' [1 A1 |$ }# S1 i+ h

& ]/ e5 ?$ Y) G' C$ ]$ b这是一个Keybank的例子,它选了三个级重点,Containers,自动化测试,持续集成,然后他先关注这三个的实践,成功再引入另外一个实践。
9 Z* Y( ^* H. E( [+ ^" f
: ^/ t4 k* Y5 b% m" M( |& `
案例二
3 ?3 \# P/ r) w( H8 ]
! L7 r! ?7 G2 T* P" j
CapitalOne 又是另外的一个例子,先从一个团队做CICD,做好以后就做企业级的CICD。相当于先做了一个实践,然后在整个组织推广这一实践。之后引入新的实践,比如从2016年开始做 Measurement,Improvement。
: y8 g& T" P! ^. t% f6 W

- @; d: B% U# ]4 d
案例三
! w7 ^+ ^! r* T2 f  j8 Q; j
) }, R# Q7 a& r4 f' G& b8 }. j
第三个是巴克莱银行的例子,这是非常成功的例子,跟刚才讲的 Nationwide类似的,先做敏捷,敏捷以后就做 DevOps 。但不同的是他的 DevOps 和精益是结合一起做的 。

( k$ k) Q' @; O; L
9 h1 S3 L. @$ F: K/ Z0 B# N9 k
从这些案例以后你会觉得是无法得出一个唯一正确的路线。每个企业的情况不同。
2 T6 _/ r; {1 y" Q

3 n4 R! C5 _/ ~5 N& Y' G7 n7 G
下面介绍一个我认为很适用的框架。

# S0 w  M! ]  V5 s3 f6 s/ {

7 M  }* ^5 w0 f5 W
转型框架(Cynefin)
1.png

# w2 ?. a. T# j: D' n5 S& {

6 k- B" q! |$ I  |2 x3 x$ [+ f  \6 ?
那我提一个自己的想法,你要做转型,有没有一个路线图?这里有一个框架,叫Cynefin Framework。Cynefin是一个威尔士语,指的是人隶属于的地方可能是多元的 。你首先要知道你在哪个象限,然后再解决问题。
3 b; F1 }$ o; U$ l
' J( N$ N" C) v
第一个是显然象限(Obvious)。一个问题因果关系是线性的,只要找到这个原因就能得懂解决方案。什么叫显然的,比如说去麦当劳吃汉堡,汉堡的整个制作流程都是一套严格规定的,不管你是哪一家店,是谁做的汉堡,麦当劳早就固定好了,你的汉堡没到程序是什么,需要几分几秒,所以全世界的麦当劳都一个味道。这里面有一个解决问题的最佳实践,他已经固化下来跟着这个做可以了。
+ V  V1 c- r5 z- N# {0 r2 }

9 _7 y3 n" e' K7 F8 ^  g* g( b- c
第二个是复杂象限( Complicated)。问题的原因和结果直接有一定的关系,但并非线性一一对应的。这个原因需要根据当时的情况做判断。举个例子什么叫 Complicated,比如做一顿中餐。比如中餐菜谱里告诉你的是少盐少油,大火。那么这里面没有给一个明确的定量。这需要厨师根据当时用的锅具,材料本身的温度水分、客人的喜好等的情况作一个判断,所以 Complicated 的象限要求专家判断,要分析了以后才可以有适用的问题解决方案。

" ]# N: F8 R/ {* @) p

* E* f9 @8 }% n5 X) t
第三个是复合象限(Complex),这里面因和果没有绝对的关系,比如说日本有一个老人被封为苹果之神。他种苹果不喷农药 。为什么可以呢?他发现原来你要做的是建立一个生态环境,他的果园里面有很多的杂草,有很多的兔子、狐狸,有害虫也有害虫的天敌。这样他建立了一个稳定的生态系统。所以这里面其实就是没有一个明确的因和果,你要建立一个环境系统。

9 f) w/ e! h3 _

' Y: W+ J2 h# y
第四个是混乱象限(Chaotic),就是说一个灾难发生的时候,比如地震发生时,刚开始所有的运动都是混乱的,大家在四处跑,没有一个确定的秩序性的东西,这个时候你要做快速处理,在 DevOps 当中,我们要集中在前三个象限,显然的,复杂和复合的。

$ n+ \0 V" f" F8 W

2 N; x0 G' l! h( ?. Z9 l8 B& Y/ _8 b
在技术实践的领域,大多数是在复杂的象限,需要根据现状相应的应用某些实践。
, H% ~& n* X0 J, G
# Q2 ]% D+ \/ t, [. r" b
另外,一些复杂的问题可以转化成简单象限的问题。怎样转化的呢?就是通过自动化,如果你能把一个问题自动化掉,就是把复杂的变成了简单的。

2 W8 B3 z; i  B6 c" e
+ ~: z: B1 P' f$ s( E5 e
流程分析也属于复杂问题领域。先解决这个流程的哪个问题需要专家的判断,每个企业的流程和流程中体现的问题都不一样。因为人不一样,工具不一样,企业架构和规章不一样,有没有严格的监管也不一样。所以你只能分析问题得到答案。如果流程能自动化,那么也相当于把一定的复杂问题变成简单化的问题。

0 f# ]# \% N; r' K7 k
! [  E* Q, p; i& q6 W- p
组织文化,因为涉及到人就是复合问题,所谓的复合就是你需要理解这样的环境,就是你要建立这样一个好的环境让大家往一个方向去做。当你有了好的环境以后,就会自然成长到下一个阶段。所以我认为在跟组织文化相关里面,它其实是一个复合或者是复杂的这样一些问题的解决。

4 h0 x' e' a) F+ p( Z
. W# z/ G" r- L: |$ N& z
复合(Complex)象限:Build-Measure-Learn探索式模型

4 h( u  c( d3 j7 ]( c4 Q: q
+ M* T+ u( e4 V; Q0 f7 _/ U" w4 Z9 w
如果涉及到一个整体,那它就是一个复合的问题,这就是 DevOps 在业务层面上要解决的问题,为什么你要快速地把产品交付到市场上。是因为希望你的客户使用你的产品给你反馈,然后不断地调整产品,
1.png
. a) v! J: N6 F# W5 ~7 K6 n

# C' T7 A) ^  Y' s! l
我们没有一个混乱象限的问题,但是如果出现黑天鹅、金融危机,911 的事件,或者是股票市场雪崩,那就变成一个混乱的,那个时候是一个危机处理的方式,这不是我们做 DevOps 转型所要研究的东西。

/ K( F) ~7 Z. [& z( G7 t5 M

% B  L1 o* T; B; ^3 W1 G
刚才讲到业务的话,我们说是探索式模型,我们讲是 Build—Measure—Learn ,先去建立这样一个版本出来,然后看市场反应,从你的 Measure 结果出来调整产品。

8 Y$ A& l( w1 O. o

1 N; s% R; J8 e* [+ z' q
复杂(Complicated)象限:需要更具情景(Context)做出专家决策。没有Best Practice,但有Good Practice。
1.png
! h+ a  n' Z) t% _$ H! \
7 ?' E2 F% F" T3 [: O- Y( z
刚才说的复杂的象限,它是需要根据企业的情况分析,把一些 best practice 变成 good practices 。这里每个领域引用了一些不同的模型,在所有的象限里面其实都有不同的模型,大家理解在这些模型里面其实它是复杂象限的问题,不是简单象限的问题 。
DevOps 的实施应该是自下而上,还是自上而下?
1.png

# Z2 _6 m! \, f2 E/ t4 I& ]1 q# }
) i# P9 u; W- e) q. i8 W0 [8 P: v
另外一个问题是大家问的 DevOps 是自下而上,还是自上而下的。到底是从底层开始还是上层开始。我认为要转型成功的话一定是自上而下和自下而上结合。但是你在一开始是可以从一些团队开始,你不一定是要等到高层的肯定才会开始你的旅程,但是在随后的某个时间点上是要自上而下结合的。

3 D8 ~  b; D, p# o/ \& K$ u4 w+ D/ Y

- E/ c8 u3 Y8 N2 [4 _3 o
DevOps 的实施框架推荐(复杂象限问题解决)
# [0 a9 Z7 F$ ~

: b5 w; t* @0 W# A4 `
刚才讲了一个框架、一个思想屋模型,到底能不能将它整合成一个路线图?下面给出建议。
1.png

4 D1 z4 L- F3 K

0 z) s# m  U% q' e9 ~
一个团队会看到这样的一系列活动,首先要做准备,建设你团队的能力,准备知识,然后分步实施做迭代,然后选择你的 Best Practices 然后固化它。迭代的转型包括持续提高。组织也同样需要培训,尤其是中高经理的转型, DevOps 是一个持续的优化,如果领导都不愿意花时间培训自己,说明组织还没有做 DevOps 转型的坚决的意愿。
) v2 T& f3 h: @* C- e: X! A5 L: l

( o; f( U8 Z# w1 x
依据模型制定组织级别和团队级别的转型计划

$ `. I: j/ O/ m4 P  R8 f
/ R* m( f9 a: {2 F7 h! q7 A
如果上面这些环节清楚的话,每个企业可以形成自己的一个路线图。路线图的上面是组织层面的,从第一个星期、第二个星期到前几个月的一些活动。同时它也包括了你需要学习的东西,包括你跟团队沟通、如何看观察队工作,也包括领导需要做什么事情啦支持转型。

$ D- u5 L7 t8 R  K6 A+ k
  D0 M# E3 b: C9 ^
下面是一个团队计划,团队怎样学习哪些知识,第一、第二阶段实现什么实践,包括选取什么样的项目。
1.png
! ^5 _% e9 ~( E
8 i- M( X4 X* W1 ~: b" u! Y/ D
所以每个企业需要绘制自己公司内部的转型路线图,但是这个路线图一定是要结合刚才的框架,然后设计出符合本企业转型的路线图。而不是别人怎么做的我去就把它Copy过来。
- n  p! c/ C$ F* K, q. G% o

/ y' L3 S9 z2 W9 u: J7 e
总结
1.png
原创:许峰

7 `" {  S9 t5 D' d' I

本版积分规则

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

Baidu

GMT+8, 2019-9-23 06:59 , Processed in 0.153039 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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