本帖最后由 adminlily 于 2018-10-17 16:56 编辑
2 h6 s8 O9 H2 X- R {9 M4 f5 A
- ^3 v4 v& z$ Y$ h+ W, f/ b* R0 |作为一名全栈工程师,不仅是一个研发多面手,而且必须要关注产品的最终交付,以及线上服务的稳定运行。工具化使开发、交付、运维紧密地联系在一起,于是ITILxf.com" target="_blank" class="relatedlink">DevOps 逐渐成为了全栈们手中的利器,但由于DevOps的复杂性,如果没有科学的人员、流程与工具相配合,DevOps根本无从谈起,因此,DevOps 更是一柄双刃剑。 7 K$ ^ T6 u) W& m
2 R' ]# g+ ]* f5 M# u+ T" n0 v, N" i
1什么是DevOps呢? * h- n6 }8 Y( e8 @1 T, V3 K
4 B i# B+ b, X) [
先看一下wiki百科给出的定义: $ b" N5 P; ?4 Z4 z4 u& ?5 X! j- |" P3 Z# M
0 _" ?9 ~/ M V, W' n
DevOps (a clipped compound of development and operations) is a culture, movement or practice that emphasizes the collaboration and communication of both software developers and other information-technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment where building, testing, and releasing software can happen rapidly, frequently, and more reliably.
简单地说,DevOps是一种开发、测试、运营、维护部门之间沟通、协作与整合的软件过程、方法与系统。
' [8 Z9 |4 U( z! E7 \/ h; _( `
DevOps是一种高度强调人与人间互动的工作方式,不能先入为主地认为参与者了解某方面技能,在完成高频率部署的同时,提高生产环境的可靠稳定和安全行。 - E$ P4 d/ r! v6 t2 l
# C' u$ j+ c; A( R2 f
DevOps能够为团队提供一种极具凝聚力的文化氛围,DevOps不光是一个方法理念,而且是一个有力的技术手段,人员、文化、流程与工具这几大要素在DevOps中同样重要。
; U& D$ z/ l* i) O; s+ A7 F
5 _; E. x! @% I$ x
& g0 d3 [' f R; [! L( L) {' j, h) H
2、为什么DevOps姗姗来迟?
( p6 Y9 G# X! t! z6 s: W+ @9 J! h
% L/ a4 d$ U3 ~# c1 {' v O5 T
DevOps 的概念在2009年就诞生了,但没有相关的技术支持,只是出现在教科书和论文里。然而,近年来所谓DevOps的最佳实践逐渐越来越多,原因何在?
5 g) S0 d6 y k8 @4 }* i
X* j! i- k& B/ W9 f) X3 M* A
! ]% q% I0 R" _1 j9 _& P4 o6 `- {3 J' a) D# X# j6 v
' Z1 ^- t; v$ ?6 m2 R& y( O
微服务架构技术的广泛使用。 # u5 O9 o& X8 F+ n$ p* x8 J
- _0 E( N. m- F% [ |6 l- C
R/ k# l& a" I* E) @
" L6 t v6 w$ T" W6 R6 J/ O微服务,是支撑DevOps方法的手段,传统开发是在一个服务器里面,把各种元素装在一起组合成一个程序,但微服务是每一个服务是一个单独的单元,可以部署在不同的服务器上,通过SOA的方法,把它连接起来,再提供整个功能。
. C6 L( Y/ p2 l6 V3 F
% U6 d; u$ R, `) ?0 u d' ]" @9 C+ G+ x. L9 f3 U
微服务是由一个个团队组成,每团队有自己的服务,做好后,可以独立的进行测试、开发、部署,然后整个应用组合到一起。张侠表示,开发运维一体化、微服务和Container是同等的,把它们组合起来,加上云的手段才成为可能。
0 X8 `5 m' C7 t8 K8 K5 m" {, F% D; c! Z! Z. m: B+ i
& {- @& `/ l; x+ y敏捷开发流程的深入人心。
5 Q9 o) |: `# u2 k! j$ n! [ Z0 A& Q7 D/ S9 M/ u O
5 R( B: e# z* C6 L诸如Scrum, Agile, Kanban等敏捷方式被团队广泛使用,TDD、BDD、DDD这些测试驱动设计、行为驱动设计、域驱动设计等设计方式的采纳,CI和CD这些持续集成和持续部署等方式的实施,这些都是对DevOps的强烈需求。
2 W- N( a9 `4 U c, i1 _
* D( r' P5 C, u
3、DevOps中的技术栈与工具链
|/ l. H. Q' g- ^$ r+ F
! b; N+ h. U5 b( H% E* L& a
在全栈眼中,Everything is Code,所以DevOps 是通过技术工具链完成持续集成、持续交付、用户反馈和系统优化的整合,实现跨团队的无缝协作。 / ?4 e3 q$ M7 ]1 I* }
, s, H4 v- G. Q m: d
DevOps 中涉及的技术栈与工具链如下: . |2 x( t. L/ @; i* ~: \5 {
/ ]4 m" X/ }& s& A) V k5 U
9 d+ z) s7 O1 Z; h5 r' M0 A* u
2 j W) N; p" F2 N
& V, }) _( ?2 s
* |. u6 T; C5 H- L
7 p: h5 y& p! v5 y
7 p( f# L6 I6 D6 d, ^, s% H
% Z( `5 J9 f5 w9 F- }! N; n1 T5 W. I- b, m: `0 D8 j4 j1 w- V
6 t- Z$ r1 d1 K' ]3 Y9 K9 A8 K
8 ^/ H1 n1 F2 W- }. r+ J
( }8 D! Y9 G* }' b: U# L4 q0 K运营管理:这就是传说中的OAM 中心,这是广义的运营,其中还包括运维的部分。OAM 不但提供了业务系统的运营操作,还提供了面向运维的统一Monitor,alarm,fault handling等能力,以及产品的资源使用和运行状况等,涉及的技术很多,尽量采用云监控+脚本的方式,规模较小时可以尝zzabbix 实现部分功能。 * G; L# Q, m2 j& \* G
) ~& D! k* \: c; r, Z) k9 n, @% A$ o& ~) m. l
4、DevOps 的双刃剑 5 j: r: v& M6 a0 j% b( s( _
& t" {' d% E/ Q' Z$ |& k# ?4 d
DevOps 的成功与技术、流程和组织的全面支撑是密不可分的。技术栈和工具链只是DevOps的一个前提和基础,技术方面的实践相对容易,流程较难,组织变革最为艰难。DevOps还是以工程实践为主,管理实践这块,像Scrum成体系的还比较少。DevOps玩得好,可以提高团队的生产力。若是玩不好,可能还不如传统的生产模式有效率。 5 m2 S8 [! ~- B- o
~- W1 y0 V5 M3 E4 R
狭义上看,DevOps主要困难点在于开发和运维是两种完全不同性质的技术工作。很多开发的同事,看着运维人员整天就是玩几个工具,写几个脚本,觉得蛮简单,实际上,很多东西要在生产环境下快速稳定应用,并没有看上去那么容易。生产系统少出问题(软件本身bug除外)是运维的绩效,多实现业务需求是开发的绩效,这一少一多,体现了两种技术角色的根本性区别。
7 U6 v3 O: f! q# n4 W
* U1 X. E3 e6 |# L
业务部门压力往往导致技术部门的任务主要是求“快”,在这种情况下,DevOps必然失衡,因为只追求快,就不需要ops了,只需要dev加班加点即可,不重视ops,结果必然是可悲的,往往业务上线后鸡飞狗跳,各种问题不断。在激烈竞争环境中,出几次事故就可能对产品形象的伤害很大。
- P; L* `9 g7 g8 N, `% a3 Q0 I
/ n$ G2 s2 \; ?7 c6 p% M
对全栈来说,业务初期到底要不要考虑高可用?从Dev角度看,简洁明快的实现就行了,从Ops的角度看,高可用、监控、报表这些东西在业务正式上线前就是必须要考虑的。
& `1 y% D; _3 j4 e/ m3 N
, _) B' ~$ }, y
因此,DevOps实施成功的关键,涉及到团队管理,项目管理,技术管理等诸多方面。DevOps并非治病良药,如果团队正能量大,实施起来就相对容易,否则引入DevOps可能也无法改变什么。对于一个全栈而言,DevOps是一柄必备的双刃剑。
1 M" q9 Q4 n: M5 b! y2 }
: H8 u, M0 q4 e4 _% O
原创:abel_cao
- q& A+ h3 M: W/ A, |, K9 M) ]/ H; _3 h- c$ F
|