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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 226|回复: 0

DevOps 工程师成长日记系列一:必备知识与技能组合

[复制链接]
发表于 2020-3-18 15:41:00 | 显示全部楼层 |阅读模式
本帖最后由 adminlily 于 2020-3-18 15:54 编辑 # x7 n/ N0 D) r! d( V
$ w( [7 {; _2 W4 X" z( A$ T8 `

; O7 l/ O/ z; D

据 StackOverflow 2019 开发者调研结果公布:DevOps 专家的薪水仅次于研发管理者以及 SRE,位居第三:


8 W7 n6 [, _/ a) d, ^# V1 P

1.jpeg


( t& d9 @7 }4 q. L数据来源:[color=rgba(41, 46, 53, 0.6)]https://insights.stackoverflow.com/survey/2019


1 r( U+ C8 x6 ^7 q
  O) e4 ~& x4 N8 j

从 DevOps 专家的热门度来看,越来越多的企业意识到需要将 DevOps 从口头落地到日常研发流程中,实实在在给企业带来研发效能上的收益。在这场无声变革当中,专业的 DevOps 工程师必不可少。CODING 针对想要从事 DevOps 相关岗位的开发者精心策划了 DevOps 工程师成长日记系列,希望这系列文章能够给相关同学带来学习路径上的启发。接下来让我们进入到翻译内容的正文:

目标读者5 v9 o& Y3 J& `5 T

+ E" U* y- d8 F; Y0 n! p
  \, w; t: S8 T8 \9 H  `* R
你是否正在寻找一条 DevOps 转型的快速之道?
( v! R( u) A5 n3 ]$ m0 o) h+ X

* K$ b( Y- K  G+ I% I* f, j
你是否是一个受过传统训练的运维人员并且想要体验 DevOps 领域的相关内容?
! ?1 _8 L1 y  x$ [4 u: D, u

! n- j+ O, w! ]+ _+ M' N
或者你已经学习了一段时间相关技术,现在只是想要寻找职业上的转变但不知从何下手。

4 g0 j" k# v' M2 k1 }9 b

4 z& ?" v7 P$ P8 u- K/ z1 B
# j/ V$ P5 Y9 R# ~9 r  L

如果属于上述情况的话,就继续往下阅读吧,接下来让我们一起看看如何在六个月内成为一名中级 DevOps 工程师。如果你已经从事多年 DevOps 相关工作,也仍然在寻找关于 DevOps 工程师的有效认可方式,那么你也是该系列文章的目标读者。

DevOps 工程师新定义什么是 DevOps
) `1 F. x. m5 `
+ Z( _. P5 B- i+ q# I

关于它的定义与由来你可以 Google 到各种前沿理论,但是大部分的解释都是长篇大论,让人喘不过气来。看看我会怎么做——我会帮你节省鼠标的点击次数并且把关键信息摘出来:


* m- ?* t3 h7 P. z+ e$ [

$ j" y% i: s1 ?4 U. [
DevOps 是一种研发团队同甘共苦、患难与共交付软件的方式。

( t; @! x9 m) ]* c7 E3 p2 A' b


6 g9 j( s6 B; r. K7 ^4 D

定义就是这么简单,但它意味着什么?

2 N8 j# x& x/ t5 l2 v* x9 v7 c' ?


0 o1 T5 o8 l4 h  A- j这意味着,传统意义上的开发人员(编写软件的人)的目标与运维人员(运行软件的人)的目标大不相同。例如,作为一名开发人员,我希望尽可能快速地开发更多的新特性。毕竟,这是我的工作并且是客户需要的。然而,如果我是一名运维人员,我就会希望新特性越少越好。因为每一个新特性都意味着新的变更,而变更就意味着风险。


- ~6 c9 u+ h/ }7 G0 {6 Z


# w, i% c; r  Y+ P# J% h由于这种目标错位,DevOps 诞生了。

" t" @3 D& [. [3 W* x3 I$ I& e

- p; D8 V0 o: o5 Y

“系统工程师 2.0”" u. o8 {( a+ P
9 s  u( W6 A8 e0 C: l( x
. G  v( u" ~9 G. T  |8 m6 P" i
3 z5 W8 |( X3 ~1 H' x

DevOps 尝试将开发和运维融进一个研发小团队里,由这个小团队共同承担开发、部署、努力创造软件收入的痛苦、责任(相反也可能是奖励)。

$ G7 Y0 U/ l  r$ K: ~0 o# I


( K, c, V' k2 _1 Z现在,纯粹主义者会告诉你没有 DevOps 工程师这样的职位,“DevOps 是一种文化,不是一种角色”, 他们会这么说。好吧,在技术上他们说的是正确的(最糟糕的那种“正确”)。但是正如经常发生的那样,这个术语已经超越其原始含义。

7 o9 u  C! O+ W; x+ J( B


6 B. G' f3 H/ z/ l& z/ O* 现在,成为 DevOps 工程师就像“系统工程师 2.0”。


3 T4 `3 i, E: S8 {0 w


# e9 Q- x. b5 s6 V7 A* 换句话说,DevOps 工程师了解软件开发生命周期,并通过软件工程工具和流程解决传统运维挑战。

  u3 e( l, [7 G


4 ?9 V6 f0 d% _* DevOps 最终意味着建立一个数字流水线:从开发者的笔记本中获取代码直至产生收益的全过程。

) C2 k! Z4 g. o4 [

2 e+ N# t+ V$ M4 F. V4 a& p

1.jpeg

3 u6 Y! J+ D/ G3 z! @  W9 D# j


5 q% ~8 l% r1 R0 s# _' m- E

作为一个职业选择,公司给 DevOps 相关岗位的薪资待遇都相当不错,几乎每家公司推行 DevOps 时都这样做或声称这样做。无论哪里的公司,DevOps 相关的工作机会都很丰富,它依然会是未来几年内有趣且有意义的工作岗位。


9 t( i. W1 l; p" Y


5 j0 M5 q9 Y7 E! W7 R温馨提示:要警惕那些声称招聘DevOps 团队”或“DevOps 部门”的公司。严格来说 DevOps 终究是关于文化和交付软件的方式,而不是配备新的团队或部门。

免责声明: D( ^4 z6 g, J8 w! E, ~" L% r

; i/ y% A* z! v3 _

6 i0 K% E7 y- _& \0 A* t7 R4 o6 x! d7 q2 s

现在,让我们把肥宅快乐水放在一边,考虑以下几点:

# w& L- b# u1 |" P, [; U


  l$ [& p7 p2 H8 f2 v" S你听过这句古老的格言吗 —— “世上没有初级的 DevOps 工程师。” 它其实是 Reddit 和 StackOverflow 上的流行比喻。 这意味着需要多年的经验,结合对工具的扎实理解,才能最终成为真正有效的高级 DevOps 从业者。遗憾的是,没有捷径可行。


4 _- ?( n" ?- q' Z3 t; F7 H: Z4 I

8 p! d, k; h/ H$ T" y
因此,这篇文章不是 DevOps 伪装指南。我不认为存在能够假装成一位具有几个月经验的高级 DevOps 工程师的方法;或者在几个月中掌握原本需要数年才能精通的快速变化的工具,和对方法的深刻理解,并且这些问题目前还没有完全解决。 然而,大多数公司都使用大同小异的(或者主流的)工具和概念菜单,这些就是文章的主要内容。


9 F/ ?- [" R2 l1 v# |


: K! P7 o( X9 T4 D# j! t工具与技能不同,因此在学习工具时,请确保不要忽视自己的技能(面试,网络,书面沟通,故障排除等)。


; N* m" V( n  h, d* ~* [


/ s5 u  `) M4 w& g+ S. i$ u最重要的是,不要忘记我们追求的目标——建立一个全自动的数字化流水线,将创意转化为创收。

DevOps 学习路线图广度优先逐层遍历
& g- O* G2 z% C  G9 \' G
0 j! r- Z+ M+ _( i/ B

掌握以下内容你就可以诚实地称自己为 DevOps 工程师。如果你对“DevOps”相关的 title 反感的话可以叫自己“云工程师”。下面的路径图代表我(可能是在这个领域工作的大多数人)认为的一个称职的 DevOps 工程师应该掌握的技能。这只是一种意见,肯定会有不同的看法,没关系,我们并不追求完美,先把基础打好。

. D. a5 K  ^: `3 t) c

5 @. Z2 y( B8 v( X  @* C$ I
注意,你的目标是广度优先、逐层遍历。先从基础开始,学习蓝色标记的技术(Linux | Python | 腾讯云/阿里云),然后如果时间允许或者就业市场有相应需求,追踪紫色的技术(Golang | AWS/谷歌云)。

% p* I# x" L& o0 h


5 ]6 f" G% i, o$ r

(译者注:原文的工具介绍是针对国外开发者,此处为了方便国内开发者实践译者进行了部分调整)

( S; k9 c; z# D$ d: s0 \; G/ B

1.jpeg


, w: Z2 n# M4 [" E) Q- L

老实说,上述的基础层是你要持续学习的东西。Linux 很复杂,需要数年才能掌握;Python 需要持续练习才能保持最新状态;公有云发展如此迅速,以至于你今天所知道的事情可能只是它的冰山一角。但是,一旦你有一个合理的知识基础,就拥有了进入现实世界的技能组合。下面总共有 6 个蓝色列,建议每月学习一列。

* _' d: j0 s9 D" L


8 ?/ T2 r' m- a6 Z' ~) Q# I4 r7 z, X/ @

1.jpeg


# f! F9 i4 y% ~7 W# ?, U

为什么没有测试0 R# W) c- B/ s- a% o* |

: b6 h: ]% B! A- Y, p  z- x( d

上面的学习路线中明显缺少 Test,这是有意为之的。编写单元测试、集成和验收测试并不是一件简单的事情,传统上是开发人员的责任。“测试”阶段的遗漏是有意的,因为本路线图的目标是快速获取新的技能和工具。笔者认为缺乏测试专业知识是 DevOps 就业一个微不足道的障碍。

# f2 t+ n( X) ~8 Q$ b- {

" s8 |; U3 |3 r% d6 l; J  M: M
另外,请记住,我们不是在这里学习以及喋喋不休一大堆无关的技术。我们需要对完整的工具有比较充分的理解。将这些工具结合在一起,就可以讲述一个连贯的故事 —— 端到端的流程自动化。

  A9 O5 i7 F( f& A! U! s" |9 e

% W+ I/ L  }+ _) a0 j( _0 x, M, G
你肯定不希望学习一堆工具后就停下来。工具变化很快,概念变化得相对缓慢,因此你要做的是使用工具作为进阶概念的学习辅助。接下来,让我们再深入探讨下 DevOps 学习路线图。

DevOps 必备基础知识
+ r" ]' P9 j" T5 O- H" W' S9 N4 y$ P) ?* i8 |

在图一的“Foundation”下,你看到的是每个 DevOps 工程师必须掌握的技能。**你会看到三个行业主导的支柱:操作系统,编程语言,公有云。**这些东西不会是一蹴而就的技能,你必须掌握以及持续学习,以保持相关性并及时了解最新情况。接下来我们逐一介绍它们:

. @7 N0 S1 y) u9 A- O: e  X

  • Linux
    7 w. e8 A- y, N9 b& z5 e) K  s: \" J0 h
! o: L* c+ `; S# X* F
6 e1 A; K, X7 g% H
% S/ S2 W: Z* a2 k1 w2 t2 G

它是几乎所有软件运行的地方。有人会问:能完全处在微软生态系统中成为一名出色的 DevOps 从业者吗?当然可以,没有任何法律要求用 Linux 来实现一切。


7 A% t' K2 g* a: G- E6 h' S+ Y/ p

& t, q+ U- c5 A  o* i! }+ g% t) |
然而请注意,尽管所有 DevOps 相关事情都可以通过 Windows 完成,但这个过程更加痛苦,而且工作机会要少得多。现在,你可以放心地预设在不了解 Linux 的情况下无法成为真正的 DevOps 专业人员。因此,Linux 是你必须学习和不断学习的东西。

2 _8 }: D1 Y+ c+ y# z. r- c


  a% X/ O6 W( w' L- d0 j最好的方法是在家里安装 Linux( Fedora 或 Ubuntu)并尽可能多地使用它。你会破坏操作系统上的东西,会被问题困住,然后你不得不解决所有问题,在这个过程中,你将学习到 Linux 相关的知识与技能。作为参考,在北美红帽系统更为普遍,因此从 Fedora 或 CentOS 开始也是 OK 的。如果你在犹豫是否该用 KDE 或 Gnome 版本,就用 KDE 吧,Linus Torvalds 用的就是它 : )

( W9 A  }# P- J# t" k' _- d


3 J- \" }/ f1 E4 o
1.jpeg
: f& l  F0 r" n

" A' r$ K. D& ~' b, K7 @" C
$ p0 ^" C8 G2 M, I+ |! P( A) I/ L

Linux 主流发行版本 Google Trend 对比(近 5 年数据)

! E; z, s, I& E1 t# ~- @

  • Python
    ; ~! A7 s. A0 ]/ [+ m$ H

    7 m& D3 g( h3 y- L7 i

2 U2 j/ M4 Y' l8 u. n


' t6 a' l7 {. ~. x9 W

Python 是如今占主导地位的后端语言,易于上手,被广泛使用。Python 在 AI 以及机器学习领域使用非常普遍,所以如果你想要转换到另一个热门领域,那么你也会更加得心应手。

+ h5 M5 g9 n+ I9 V" ]6 S


& v( _) g8 `) ~& b1 j

  • 公有云
    * B3 c  |) ]; B: h
    $ ^2 c( _5 [" O+ a9 D


* p) D, [4 q4 ?* b


  g4 Y. D" V" i, S+ v' C

如果没有充分了解公有云的运作方式,就不可能成为一名经验丰富的 DevOps 专业人士。国内外云计算领域的主导者们提供了非常丰富的工具集。


8 T- Q1 S9 v; i3 m& A$ ?$ ^; |

- c: n  |$ ^8 n& r2 ~. x2 h7 F# A

我建议你每天留出 20-30 分钟来学习 Python,Linux 和公有云。图二是你必须学习的补充内容。总的来说,我估计每天要花费一个小时,每周五次就足以让你在 6 个月或更短的时间内充分了解 DevOps 相关的内容。总共有 6 个主要知识支柱,每个支柱对应一个月的学习时间。

  |9 j0 L  p! I2 ]* `' v

$ i( P# E/ W7 `4 y0 I) k! G: r
以上就是基础知识的介绍,在随后的系列文章中,我们将探讨更加复杂的问题:如何以完全自动化的方式配置、发布、打包、部署、运行和监控软件。

- P) d$ r6 W6 G5 d
& l! K) r- h' g* b8 I9 V$ t" X
7 s6 [; C) h3 A6 k9 C. F
( f4 n: J: }" I( e( `" t/ M6 U

本版积分规则

参加 ITIL 4 Foundation和中级过渡MPT认证、DevOps专家认证、ITSS服务经理认证报名

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

Baidu

GMT+8, 2020-3-30 06:08 , Processed in 0.152977 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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