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

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

 找回密码
 立即注册

扫描二维码登录本站

QQ登录

只需一步,快速开始

查看: 3241|回复: 0

深度剖析DevOps系列(4)-- Devops in Cloud

[复制链接]
发表于 2020-3-18 16:13:48 | 显示全部楼层 |阅读模式
本帖最后由 adminlily 于 2020-3-18 16:43 编辑
3 }# ?1 R0 K1 o4 b" N% @
' G) q/ Q1 T) Y$ `& O

6 d. e  U1 }, j# E: U
5 _9 o( \( ~3 O, q
1.理论基础, ]$ N3 A5 w8 J$ {. m
# W* \* x) Q% [) N" j& `
本篇是基于公司内部的一次DevOps分享,PPT是自己准备的一些内容。
( w. E* y/ e+ Z) Q) r$ _9 a! d$ i% U4 Y3 U
9 t2 H! b6 h  }6 s2 x
3 |* B8 Y- H+ }4 q! H. @  N% x
目前主流的开发模型相信大家都清楚,这边简单介绍一下:) F0 h% ?, q5 _% [9 h" C" G% r1 L

6 J5 K- ^3 P* E& }% i& J( O  `$ i8 H
- }3 x/ _% }8 O* M% z
• 瀑布开发模型:生命周期很长,一般会完整的走如下流程:需求调研->详细设计->编码->测试->部署->运维,且下一环节需要等上一环节完成后才可以继续进行,往往需求阶段和测试阶段会占据很长时间,且需求调研结束后很少再做修改,因此,在一个长周期的开发完成之后反馈给客户,往往会进行一次较大的修改和调整,后期修改成本及其大。/ ^. j( W2 Q, d% g8 d* i/ T1 g
, C& M" B7 U$ G; @, J

; A) h: g: F0 Q• 敏捷开发模型:这种开发模式以一种不断迭代的方式缩短开发周期,把一个整体大的需求分成若干小的需求,进行迭代开发,并将产品反馈给客户的时间缩短,不断从客户得到反馈,并且不断修改直至客户满意,这种方式大大缩短了客户和开发测试之间的距离,把修改的成本缩短到一个小需求的生命周期,节省了修改成本。但是并没有解决开发和运维之间的协同合作,因此,DevOps应运而生。
6 r2 {: ]; v, Y) m: h( }5 f/ x( e7 _2 d3 r, w$ p7 A
9 X/ p$ U3 q9 C  a' c& d) J6 f
• DevOps模式:该模式强调一个运维和开发不断沟通的能力环,在开发阶段我们沿袭敏捷的开发模式,在运维阶段,我们强调自动化的运维,并不断讲已经上线的产品中的问题反馈给开发,以进行问题修复。
) ~' s$ h4 _" a+ k2 O, ^
# z' e8 @7 L" A2 g% R' c6 N! \2 h" W
4 `8 N) v' i% N3 `, N$ s
我们可以看到,对于一个软件的生命周期,基本流程都类似,只是在各个阶段我们做了不同的优化,而且这种优化也是经历过考验的可以实施的最佳实践。
/ h* z$ ]; H& A
9 f- H2 T9 s9 a1 `0 N9 J- X" [0 ~6 o
1.webp.jpg

" m. ]' s& v2 [
; F5 w* o6 U2 V; S* q: V1 p

8 x7 e) P# j; w- x! d
8 G9 Q' }# s( k6 K& o, \3 ]( B

" x* ?1 p( {0 J# N9 p  b- U! }& R1.1 软件工程模型演变
1 _% H2 t$ k# D. C7 I- S. ^5 K8 p
, d( G/ p! p' z
2 b" x/ N' m  e7 a

: \$ m2 q1 S- L) j0 Z, p) A% |

! g0 q4 ]9 l8 \6 x4 H7 g: n, x' X- t5 @, t. r
2.什么是DevOps- Y% K( F4 ]. h" w% ]8 l/ e+ g  O9 J( h
" e9 a7 Y2 W# \% ~- }+ z

8 L9 [( F7 {2 b" n5 u. |9 [- F! H, B

! X1 U5 L' j8 `+ P6 S* i那么什么是DevOps呢?有人认为DevOps是运维+开发,有人认为是自动化,也有人认为是Ias,当然,这些认识都是有其道理,也是DevOps中不可或缺的一部分,但大多都是盲人摸象,没有对DevOps有个整体的认识,对于DevOps的认识,  V: R% p1 e% o* b, w
( v) `! N# G% X1 V1 k

* s! R  c  |9 |; T) U9 K请转至第一章:深入剖析DevOps系列(1): \% K7 k/ B+ t6 v; Q% u. F

% `$ M: W/ ?9 P8 T5 V/ G

7 c( [- u6 e) j
1.webp.jpg
6 Q4 m$ R1 P( F4 g% \3 i8 ?
# D) w: I# v( y8 c8 M  X  a
3 }; G2 l% I* o. j7 x& B# A/ p- H+ `
1.2 谁应该关心DevOps?( F& d+ g. Y' Z+ H6 l

$ k9 e( {' O4 Z, ?

5 H- R) l% a7 k5 j5 w3 q
* J/ k, j1 f2 O* c% |" L4 Q3.Develop和Operation的历史问题& A" Q% _( A) G" n7 d1 j' @

1 U7 Q- G1 y3 c) A/ Z

1 Q+ t/ `, }- F8 S% O4 c开发和运维人员素来就被一种叫做部门墙的隐形之墙所隔离,这种问题由来已久,/ t9 D8 g5 i7 q+ h! l; T0 P5 x- \
1 ?" O9 [' t" G7 H' J: c* \

! x) O: _# ^& P原因1:开发和运维的目标不一致,开发的目的是不断的增加新功能,不断完善需求,不断发布新版本,总之对于开发来说,唯一不变的就是变化,但是,对于运维来说,首要的问题是要求稳,因为一切问题的来源都是变化。
. m2 g$ P( r: }* z% Q
, P0 j" m2 ?0 V( V2 C' r  P* P
: ~. r: ^' Q) L' @+ ^* e
原因2:两个角色所在的部门考核标准不一样,对于开发来说,新开发一个需求考核就递增一点,是个累加的过程;而对于运维来说,即使将发布工作做的极致,起点也只是0,因为,这本来就是运维应该做的,一旦出了问题,便会从0开始递减,是个递减的过程。
2 i! a  n! q" \8 |  v: E7 h7 E; @+ U* n8 k

8 u& ?/ g  Z# i: {2 l7 n+ e4 @: E, @8 C
2.webp.jpg
7 R; |2 N5 e6 v, Y, l; t
8 b. P/ E, `( e5 I! f( g9 R3 R

- ?. K4 p( `# [5 q# M) k: d- i: {

- o9 ^" Z* k2 A9 ?1.2.1DevOps 是一角色
, h0 D! q6 ^" }4 S; Y+ j# @, ?- W4 e; V( `& c- L* \2 J! s
) _8 e  ?3 N0 H. v8 v! d

. K6 V# R; A! Q  K, V( c, `9 P4.DevOps要解决的问题
+ ]- L6 e, I& |: f5 q4 w" {+ X5 ]

- n$ o& U& k  ~# _4 @+ z& K  U" e; c/ R$ ]: s

  v7 ]' }1 B+ J% u0 q+ xDevOps首要解决的问题就是Develop和Operation间的这堵部门墙,一种模式就是借鉴敏捷开发的模型,将运维人员纳入到整个团队,之于团队的定义,就是有着共同目标的一群人
8 U# J( i  o! _  _5 y5 E+ i9 m7 \, g1 _1 j$ ?( D, U

4 A& x( [; L0 H+ h3 ^# E( M亚马逊有一种模式,叫做2 pizza team,用2个pizza就能搞定的Team定义为DevOps Team,当然,这个是一种抽象,目前最佳实践的DevOps team比例为1:4:1:1,即一个需求,4个开发,一个测试,一个运维,当然,可以根据不同公司的不同需求做一些调整。% G% {  C" u' r6 U
" T6 \/ w, G4 n, a, I* }
8 u! v4 {3 a  U1 C2 U
  _6 d6 h& x8 y1 c2 `* g' s( R+ [
3.webp.jpg
: s4 v2 l* T9 m

! @/ z' |4 Z% f3 q+ o

2 F# c/ v) L: \" r. ~& N
/ |) n: f/ W; n1 X# B! m3 {1 n
7 `. C4 V2 a: d; x# N/ W. ]# \
1.2.2 DevOps 是一种工作方式6 }; \0 [3 c. o' X$ Q

2 c+ a) ]0 r8 u3 Q# V

7 d% T0 t. c0 B8 O' _4 {6 W4 ^5 z
" J. k9 M0 q) j) O0 Z, L1 P( O7 f
1 W( N  P7 T- L# p: G; D5 U& a
5.DevOps遇到的强力阻碍
6 u6 T+ a8 B$ l7 j7 v! N

" \0 k& ~& L" c! {2 ~- P6 i

1 m* ~% T5 B, X* n5 ^9 P9 ?
3 I  B% \5 |1 m4 k- C0 U

  l, D: v1 e( k0 {% Z5 h. v: @对于现在很多公司来说,存在很明显的责任推脱问题,相互推诿,相互指责,屡见不鲜,对于DevOps乃至整个公司来说来说,这不是一种好的工作状态,所以DevOps强调信任,沟通,相互学习和责任共担。开发,测试和运维之间的各种活动都需要把其他人作为关键干系人,做到测试和运维了解需求,开发和运维了解测试,测试和运维了解开发等等,当然,了解并不是让开发去做测试的事情,或者运维去做开发的事情,我们强调的,是沟通和相互了解~( ^" s1 V0 U4 x4 N
1 w/ Z5 x: A5 m9 y
7.webp.jpg

- Y- Y9 x8 [- X1 ~+ U7 \
' e7 U; E: Q( A

6 i0 B# A+ ]. _0 a/ y2 w! m& f
" p& B. N( B( P
1.2.3 Devops是一种组织文化/ g+ G# t# J" c/ o

3 g" G$ A+ t; c7 N5 z0 t
& u8 @* ?4 W: M
1.webp.jpg
) U3 Y" x& B& k
+ n. Z) q. n5 Q: S: A: i

( W- p1 B) \, {  O$ i  y, c$ X6 n4 v" z' n+ p* Y, ]

, f; t% U" N8 z* C/ q: Q$ i1.2.4 DevOps 是一组技术/实践3 t" N/ D' D6 V4 j1 a7 a  \- a

6 p2 }( Y' v7 ^% G. `6 B& k
. _! R6 r0 m8 f% n/ D5 r- [8 z
2.webp.jpg
! B: t1 t0 n4 Z! q3 q! {
! k6 Z* p+ d# C/ d6 j% S4 p* U4 w

& W6 i0 p0 w/ {6 V* a' X; ]1 x) i9 f( D. O0 M. W
8 e- q' D' f8 j$ g: I3 n
1.2.4 DevOps 是一组技术/实践(1)" i' j2 A7 H6 b. h7 d2 B! c& M$ k
9 W; e9 a2 L) ]' j, h  k1 }* H& x
( o  b  H7 w. Y: T" j

& B2 {4 N/ ^: G* J' R7 }
3.webp.jpg
$ ]6 O! N0 \( a7 N" L( h% I

( p* n& K  H5 q  k6 y
8 h4 ]* \- ?: P/ o, ]/ J

* v" F; }9 f5 q1.2.4 DevOps 是一组技术/实践(2): k9 ]  g( B5 x' |' J: z$ [

- {; k* ?* Y8 t$ Y
% o# h' E0 Q( M/ J
4.webp.jpg
9 z7 v+ T1 n9 B# ^9 q  U
5 z# C2 C6 K7 R; A9 n

8 G% @9 x& o9 R# y5 q# p7 {1 W3 P2 D

+ ?6 s/ g& l& ]! @/ o( Y9 p+ [' U2 l1.2.4 DevOps 是一组技术/实践(3)
6 ]) W7 U+ v  k  b) T  @+ n+ q% y: Z" V& D$ \6 M: X

" ~. ^6 t8 {6 @0 N# r  ]" d. R- G0 U! O9 X
5.webp.jpg

) k2 w5 M  X1 j8 D4 ~' Z
  ~( ?/ |; n; ^% L/ x9 s4 W6 d% T
7 q7 _7 }) \8 Y, z9 a/ [

' B/ j2 |5 A( K: h8 O  y1.2.4 DevOps 是一组技术/实践(小结)' _* C, k7 o7 ^2 ^; U8 D6 h
6 @( f4 x6 q" Z4 B

  k, d! Q( E* t3 |7 ~3 q9 t( v
6.webp.jpg
/ J( T( w  y1 `( X! B

) L0 k( ^' l9 y/ ?' T# u  l6 r( g1 V" x$ B! T. u+ q2 z- L
& r$ Q8 g5 ^/ ~2 r  y

- G  n" T" K  X6 h* C; w1.2.5 小结: 什么是 Devops
; J5 M, I1 A9 Y; q9 b5 ^/ W5 ^! I% i, s+ _" y
7 p% J) q; Z' [4 z& s9 Z

8 Q3 f: _4 Y7 O1 u. f4 H  j9 U
1 y" I/ s6 J* k! w* e  v" |
8.webp.jpg
& d: z9 J* l6 w5 W. O4 |

! H* G, Z4 d. v+ s
4 E. D$ ]. e; N0 T4 _
. N. w0 m6 Y% o9 z
+ ~& q8 @( c* t. S3 L' v% h

/ W0 z+ I9 [, H2 p& Z4 r6 F, i2.1DevOps in Cloud(AWS)
5 Y6 J& b) w' {: t5 G8 N7 E
0 \  e( {% [0 A

/ d! ^+ J! V6 T. p! d/ R' x, a- P
; ~# `, l" t; @7 b7 g. R" G* @4 s2 H
7.webp.jpg
3 v4 g3 M  y' f3 J6 H; h* U
& H. \$ K* ?# _$ Q9 f
; e5 b" {; M' v, S% W  D  i! g
( A- V  J; r+ l5 ]" |. ?0 y
2.1.1DevOps in Cloud in AWS
8 Z& w% {5 j0 H$ w* A# e5 \1 P( h; e9 S0 e
% D: B. T0 I/ d* J2 l( Q: B

$ J3 N/ f7 B4 P/ [* W8 x
9.webp.jpg
3 y3 G, ~( e3 I- v
5 Q, y6 d/ B1 X. i
- f, M- ^* ]4 @$ M7 q$ H. _; q
/ N. [9 L! [- j  t. [$ Y
2.1.1DevOps in Cloud in AWS' s! s# t8 g# E6 K' R: F

. T% O$ i9 Z' M& h( R  B0 q/ V

  O* x: C& L" `1 d, c& z  U
1.webp.jpg
" `3 ]+ G7 A- E& a1 I+ N

* r0 X4 r8 Z' P- q& p% ?( J) i
3 P4 x0 j% }: I% W* T  _7 b% H+ _" t2 Q+ V
3 C) a5 p5 W; |& x: C3 ^) C* x
2.2AWS 持续集成(CI)模型
! H3 ~% ^/ L7 i+ K$ ]4 D6 C: W, T: r+ K6 I" @

# Y, Y9 O5 v: v, j7 b4 `! h1 B  P
2.webp.jpg
4 I4 x2 c3 O. u" G4 J, e
8 n% B5 ?) I0 O  m" o
) B7 W5 u+ ~4 \) X5 }6 q, q

1 N$ K. `! E- k. N! G2.2.1CI – Code Commit
4 J! q6 J6 M4 J9 D' D* x1 N- D# R0 R

& I) g4 r! I& l1 ?/ H* H' O) Q
3.webp.jpg

# E# w! [5 K7 u

% M" c% q0 v+ S
9 Y. X# ^% [- R7 k: J( j" N6 D+ n1 G$ z
" r( ?6 {" G! V7 N
2.2.2CI – Code Build
" M3 `4 _* [. \& L( |5 O; i0 ~1 Q8 D2 }$ n7 i& P
4.webp.jpg
0 K7 ~1 U' u, C# s' ?1 u# ^
& M% ~1 D  X% n- A4 x1 P8 Y9 U
5 y( a' m0 _" |4 J5 l

  P  G& |- W# M. s; @- D# t& M/ |$ K) J, @
- R1 X4 `; ^( w7 b% \  U7 E0 a
2.2.3CI – Code Pipeline
$ p' r/ e$ `$ H, T4 s+ T; l9 ^
  p" |6 v: ?7 ?' J" l6 [
4 K, O# y: i; s* p- H6 p! o3 D8 [3 s
5.webp.jpg
% c5 ?5 K) w2 \0 z+ B
5 H; `& y- R# o$ v/ G
" @) C# t3 {3 E, b. i
; Z' l' m: w7 O. l8 o  C, W! l9 ?
% |: f$ V. T) s, u
2.3AWS持续集成(CD)模型8 U/ V8 q8 ^4 ?; X4 N/ ?
4 ^( f3 G3 [9 d, Y
1 X$ E9 I5 J3 E) l& |
  g$ J' B% b, U
6.webp.jpg

8 N' V3 K' c9 N6 [$ V3 \
  K+ i6 |$ ?! x, v7 w: }. D% v8 Q: |' w) q; F" ^
3 [( T: K; |* J$ |
2.3.1CD – Elastic Beanstalk( M' S  G; ?1 s1 e! ?
4 k( x2 `/ S4 {# ~, ~6 S4 w

* u! r  A; X2 _, j4 E
7.webp.jpg
1 b7 h- ~/ S( l! W4 I

) E- R0 N( K! K3 T9 i
/ U9 L( F* q5 @! v$ ]: k) s% ]" E* z6 K, F: m$ ~; M" J

# `  L2 N- B* U' }2 \, I; u2.3.2CD – OpsWorks1 T1 v6 ^4 A7 G

" ?) H& |7 S9 C1 y7 H7 E

" ]+ ?3 @5 l5 u; ~6 _5 T
9 Y& ^: v" R+ L5 G
8.webp.jpg
: Y' t& T1 @. ?/ u

1 U& m4 z+ Y$ U2 F. P( l' z, A  d& s

) [% j  H" o1 p0 `7 T8 B$ Z2.3.3CD – Cloud Formation
* I' C- v1 g- |& l; B* f. k2 @" N2 c! K1 v/ D

: p5 X: I+ u: z
1.webp.jpg

2 z% S8 z  @; I( y9 Y4 s/ ]8 V6 i
2 |: x6 ?9 b9 C4 `" b
9 ]$ N7 g- M' M: S: B
& b7 S; d$ D( _2 A% q* _2 ^3 S- G

2 e, G. E+ Q- I- T; o2 r2.3.4CD - CodeDeploy( a" ], z- o  Y' L  E2 S

7 g: x; f5 b8 a
2.webp.jpg
8 Z' F$ b% C/ R. }( m

: ~" |+ B- o) ]% J/ s4 O
* O: K1 H& O- N/ v* J

+ j) l: K# n" ^" M+ G% b
3 @+ U3 E# ?8 N1 e2 N) l6 g+ A

7 [8 ~/ |; r' C; j) l( L3 E# h2.3.5CD – 小结& _: u% i( Z. U! y
* ^% ?3 {/ ~, [5 z9 ]+ \
) v0 _3 c( a/ \. p. |
3.webp.jpg

9 r/ y4 A2 M! f6 e/ O2 z! r5 ~; o
" W( q& E4 b" Y2 K; ^. A5 Q8 r
  `4 a6 [* G/ U7 q1 x5 O0 c  }$ q

9 C9 Q7 P% f  U: L/ P! P1 C

7 l3 C1 ^$ J! z3 h8 z0 M! X4 N2.5Sample Pipeline in DevOps
! _/ T1 V$ F% u% p) {, I- h9 W  ^: z% T  D' m% ]: H

9 x/ I5 @1 [  ]" f
0 L: v8 F4 E, H# W, ^# t5 L4 F
9 K. N( v9 u- G5 _  C3 }4 Y4 o  \

/ T1 H" G  B+ l2 ]/ z" L* L3 f7 z" Q

, l, F2 n; f( {) f7 K
1.jpeg
1.webp.jpg




上一篇:DevOps 工程师成长日记系列一:必备知识与技能组合
下一篇:11
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

参加 ITIL 4 基础和专家认证、长河ITIL实战沙盘、DevOps基础级认证、ITSS服务经理认证报名
ITIL(R) is a registered trademark of AXELOS Limited, used under permission of AXELOS Limited. The Swirl logo is a trademark of AXELOS Limited, used under permission of AXELOS Limited. All rights reserved.

QQ|ITIL ( 粤ICP备11099876号 )|appname

GMT+8, 2023-1-28 01:36 , Processed in 0.109668 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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