本帖最后由 adminlily 于 2020-3-18 15:54 编辑 7 F% c5 I9 e* k" _! K( z
' H. J( T h; S1 }/ Q" e) H. o$ q8 U2 R3 U
据 StackOverflow 2019 开发者调研结果公布:DevOps 专家的薪水仅次于研发管理者以及 SRE,位居第三:
: k7 @( |! H( o( u
' {1 R3 D& I, } c/ m( p5 r数据来源:[color=rgba(41, 46, 53, 0.6)]https://insights.stackoverflow.com/survey/2019 5 C, B) @: Z4 t5 x' V
# U# M; r' y7 |% A0 Y- C: g
从 DevOps 专家的热门度来看,越来越多的企业意识到需要将 DevOps 从口头落地到日常研发流程中,实实在在给企业带来研发效能上的收益。在这场无声变革当中,专业的 DevOps 工程师必不可少。CODING 针对想要从事 DevOps 相关岗位的开发者精心策划了 DevOps 工程师成长日记系列,希望这系列文章能够给相关同学带来学习路径上的启发。接下来让我们进入到翻译内容的正文: 目标读者
9 Y, f3 S* m- Z* l" W6 j m
2 b9 Z, g, C' O) P2 }. v8 A9 g# I" _. ~
你是否正在寻找一条 DevOps 转型的快速之道?
Z! s( H: n' ?; S' d/ W" p
5 w( P% H. V1 c8 {4 M, I- M3 K. ?你是否是一个受过传统训练的运维人员并且想要体验 DevOps 领域的相关内容?
3 d7 R- N$ n ^/ V& O , s) a4 ?( a O. ^8 d7 N0 m( x
或者你已经学习了一段时间相关技术,现在只是想要寻找职业上的转变但不知从何下手。 6 x; Y J8 V* I0 g
6 q% i/ p% T) ]4 }
! Y- z! U* {9 P
如果属于上述情况的话,就继续往下阅读吧,接下来让我们一起看看如何在六个月内成为一名中级 DevOps 工程师。如果你已经从事多年 DevOps 相关工作,也仍然在寻找关于 DevOps 工程师的有效认可方式,那么你也是该系列文章的目标读者。 DevOps 工程师新定义什么是 DevOps
3 I3 Y5 V: U; Y9 D& w7 H5 x+ t; L. l* [
关于它的定义与由来你可以 Google 到各种前沿理论,但是大部分的解释都是长篇大论,让人喘不过气来。看看我会怎么做——我会帮你节省鼠标的点击次数并且把关键信息摘出来:
+ `, o/ h+ N- j7 z% _: ~6 ~: w
% z$ l3 O! c; x+ z* ^0 yDevOps 是一种研发团队同甘共苦、患难与共交付软件的方式。
( F+ L d+ Z' F& o5 e: H9 Q
/ F+ x: \$ U4 S* n# c/ {
定义就是这么简单,但它意味着什么?
. V! d0 Q! t5 t% Q7 K
7 j( i4 r- n0 q9 z5 f* g8 x0 ?4 l这意味着,传统意义上的开发人员(编写软件的人)的目标与运维人员(运行软件的人)的目标大不相同。例如,作为一名开发人员,我希望尽可能快速地开发更多的新特性。毕竟,这是我的工作并且是客户需要的。然而,如果我是一名运维人员,我就会希望新特性越少越好。因为每一个新特性都意味着新的变更,而变更就意味着风险。
# J6 E3 J, Z1 J: @3 h* b9 ~ G
& b; [% t3 x3 K( y0 X
由于这种目标错位,DevOps 诞生了。 , I% D9 j1 i' S% E. [: @" t
# `3 \1 x k8 L) |- U2 c
“系统工程师 2.0”
: U+ M6 z; X3 W4 t9 [7 e
# [: s( E! g3 ^3 a6 N2 l3 K3 j: }) {9 O, B( V" Q# Y* Z- i
8 `/ {( l& F5 G5 y& @# Y! s6 S& N/ JDevOps 尝试将开发和运维融进一个研发小团队里,由这个小团队共同承担开发、部署、努力创造软件收入的痛苦、责任(相反也可能是奖励)。 - j( R, V; W# p" ^
- o! C: I- H7 v现在,纯粹主义者会告诉你没有 DevOps 工程师这样的职位,“DevOps 是一种文化,不是一种角色”, 他们会这么说。好吧,在技术上他们说的是正确的(最糟糕的那种“正确”)。但是正如经常发生的那样,这个术语已经超越其原始含义。
0 ?3 v3 i) B( b6 A# r' n3 x5 A
5 |/ t" M B1 f3 x/ y3 s
* 现在,成为 DevOps 工程师就像“系统工程师 2.0”。
& u5 A3 T& r* y- k2 O
6 m( `9 J1 E q+ v7 ?6 t* 换句话说,DevOps 工程师了解软件开发生命周期,并通过软件工程工具和流程解决传统运维挑战。
( Q5 ]6 A6 l& g3 k* n$ n& C( }
1 ~' v, }6 J: u: u' E$ \" @& b2 d$ w
* DevOps 最终意味着建立一个数字流水线:从开发者的笔记本中获取代码直至产生收益的全过程。 + G+ @* D) E' n1 }' L
( |: L! e. O! A) E
( t8 \5 {( w3 A1 x0 w# X# ]
: m) j7 Y/ Y) ?, a. J5 z( g2 H) i
作为一个职业选择,公司给 DevOps 相关岗位的薪资待遇都相当不错,几乎每家公司推行 DevOps 时都这样做或声称这样做。无论哪里的公司,DevOps 相关的工作机会都很丰富,它依然会是未来几年内有趣且有意义的工作岗位。
! Y0 @! X/ q' b4 z7 u3 W+ }: l8 ~& b
1 N d7 R ]$ A& e0 z
温馨提示:要警惕那些声称招聘DevOps 团队”或“DevOps 部门”的公司。严格来说 DevOps 终究是关于文化和交付软件的方式,而不是配备新的团队或部门。 免责声明
1 J& g, l4 p% f4 U; Q0 c Y
8 t7 J8 d Y9 B8 {. z+ E9 D8 o7 b" v1 o1 j' V2 g1 K" p( g
/ }$ F' p) s+ {4 d0 N现在,让我们把肥宅快乐水放在一边,考虑以下几点: ' f+ v2 N3 e4 G- z: _( U* n
" E2 a+ S: U6 j1 f" {: g
你听过这句古老的格言吗 —— “世上没有初级的 DevOps 工程师。” 它其实是 Reddit 和 StackOverflow 上的流行比喻。 这意味着需要多年的经验,结合对工具的扎实理解,才能最终成为真正有效的高级 DevOps 从业者。遗憾的是,没有捷径可行。 ! y8 Q" b$ @# f0 C( ]
$ s6 }3 E- ~) U因此,这篇文章不是 DevOps 伪装指南。我不认为存在能够假装成一位具有几个月经验的高级 DevOps 工程师的方法;或者在几个月中掌握原本需要数年才能精通的快速变化的工具,和对方法的深刻理解,并且这些问题目前还没有完全解决。 然而,大多数公司都使用大同小异的(或者主流的)工具和概念菜单,这些就是文章的主要内容。
8 B# k" S3 \0 Q
: U& h- K( P0 Q9 h* S& u工具与技能不同,因此在学习工具时,请确保不要忽视自己的技能(面试,网络,书面沟通,故障排除等)。
+ T9 E5 n8 g* V. v& G) ^$ E
* x% C8 y6 a) i# r Z0 j
最重要的是,不要忘记我们追求的目标——建立一个全自动的数字化流水线,将创意转化为创收。 DevOps 学习路线图广度优先逐层遍历* I) u; d$ M) X. |& B. l
, l; }! _2 E) |- W) Y- z
掌握以下内容你就可以诚实地称自己为 DevOps 工程师。如果你对“DevOps”相关的 title 反感的话可以叫自己“云工程师”。下面的路径图代表我(可能是在这个领域工作的大多数人)认为的一个称职的 DevOps 工程师应该掌握的技能。这只是一种意见,肯定会有不同的看法,没关系,我们并不追求完美,先把基础打好。
2 }) a( Z Y% T( H* W' Y
" {* z; X* n8 n2 I1 y注意,你的目标是广度优先、逐层遍历。先从基础开始,学习蓝色标记的技术(Linux | Python | 腾讯云/阿里云),然后如果时间允许或者就业市场有相应需求,追踪紫色的技术(Golang | AWS/谷歌云)。
5 N' ]$ @; p# a. @5 S G3 R: W+ ~2 K- X
# W5 m3 M, w1 y; R
(译者注:原文的工具介绍是针对国外开发者,此处为了方便国内开发者实践译者进行了部分调整)
7 P5 K) U3 m. [) F) \9 ~' z% W5 \
0 o4 i: G6 h$ }: v! |/ r! r1 T
老实说,上述的基础层是你要持续学习的东西。Linux 很复杂,需要数年才能掌握;Python 需要持续练习才能保持最新状态;公有云发展如此迅速,以至于你今天所知道的事情可能只是它的冰山一角。但是,一旦你有一个合理的知识基础,就拥有了进入现实世界的技能组合。下面总共有 6 个蓝色列,建议每月学习一列。
2 Q# O5 |' Z4 b, ~: V j
! |9 s" P7 w9 a' X8 R1 X
8 I$ R* z, [2 d
为什么没有测试
; p- L' n0 r3 J' N& _7 ~
' F& W0 u0 O2 q9 m& d4 ]- F+ _& J上面的学习路线中明显缺少 Test,这是有意为之的。编写单元测试、集成和验收测试并不是一件简单的事情,传统上是开发人员的责任。“测试”阶段的遗漏是有意的,因为本路线图的目标是快速获取新的技能和工具。笔者认为缺乏测试专业知识是 DevOps 就业一个微不足道的障碍。 7 K% [& ]9 N$ @3 m1 V
0 Z5 k8 N3 @, {4 x+ S另外,请记住,我们不是在这里学习以及喋喋不休一大堆无关的技术。我们需要对完整的工具有比较充分的理解。将这些工具结合在一起,就可以讲述一个连贯的故事 —— 端到端的流程自动化。
' c. j8 S, {- ?# }3 l8 D9 y
/ ^" P0 L& ?2 f6 k" s7 z你肯定不希望学习一堆工具后就停下来。工具变化很快,概念变化得相对缓慢,因此你要做的是使用工具作为进阶概念的学习辅助。接下来,让我们再深入探讨下 DevOps 学习路线图。 DevOps 必备基础知识
l# x+ |" D+ t
7 q: A. @9 C" y+ ]! j. M1 Y+ v在图一的“Foundation”下,你看到的是每个 DevOps 工程师必须掌握的技能。**你会看到三个行业主导的支柱:操作系统,编程语言,公有云。**这些东西不会是一蹴而就的技能,你必须掌握以及持续学习,以保持相关性并及时了解最新情况。接下来我们逐一介绍它们: 3 b' Z! C1 @8 O' S
- Linux
6 \, I9 a6 ?# m2 ~8 V
* K: W) L3 R8 X& _7 D6 `! [' ~& H! x# W, b# F
' h7 z( S$ J3 @" X$ |1 X
它是几乎所有软件运行的地方。有人会问:能完全处在微软生态系统中成为一名出色的 DevOps 从业者吗?当然可以,没有任何法律要求用 Linux 来实现一切。
2 S# f! T. B: \5 B l* v
( i) ~8 b% U1 i5 ?" ]% A a+ v
然而请注意,尽管所有 DevOps 相关事情都可以通过 Windows 完成,但这个过程更加痛苦,而且工作机会要少得多。现在,你可以放心地预设在不了解 Linux 的情况下无法成为真正的 DevOps 专业人员。因此,Linux 是你必须学习和不断学习的东西。 % _' Z( G! V' [5 o+ U8 ^" n: E
. C( c. k6 ^+ D8 E6 Z5 S最好的方法是在家里安装 Linux( Fedora 或 Ubuntu)并尽可能多地使用它。你会破坏操作系统上的东西,会被问题困住,然后你不得不解决所有问题,在这个过程中,你将学习到 Linux 相关的知识与技能。作为参考,在北美红帽系统更为普遍,因此从 Fedora 或 CentOS 开始也是 OK 的。如果你在犹豫是否该用 KDE 或 Gnome 版本,就用 KDE 吧,Linus Torvalds 用的就是它 : )
# N. n9 |& E/ E2 F. o
( \* i; m1 [# ^; A" A9 }
9 P1 k b0 u% G9 R% |: O7 A# O$ {" }0 z" N9 n2 {& T+ [" Z
- E& a q# i# @' y& MLinux 主流发行版本 Google Trend 对比(近 5 年数据)
0 ] H) g8 b8 ?3 J7 q
- Python% M: ~3 a2 l; K& @# F
+ z( g1 A2 y7 I/ A5 j {
& q6 H, H0 b: U
! ^ \7 _+ c% ^1 o
Python 是如今占主导地位的后端语言,易于上手,被广泛使用。Python 在 AI 以及机器学习领域使用非常普遍,所以如果你想要转换到另一个热门领域,那么你也会更加得心应手。
B' I$ ]6 `+ J$ V+ d( X5 h0 P
1 ] R% r+ H c# T- }2 n
- 公有云3 l& \$ X3 m6 z3 Z& u- B! k2 S
) s+ k1 b1 J( z, Q/ t
/ O: x. }3 |+ n" ?
9 @7 p8 [3 X9 G3 e3 K6 G
如果没有充分了解公有云的运作方式,就不可能成为一名经验丰富的 DevOps 专业人士。国内外云计算领域的主导者们提供了非常丰富的工具集。
0 m: L( M6 a2 R% M/ |
* t: \: B" N+ U
我建议你每天留出 20-30 分钟来学习 Python,Linux 和公有云。图二是你必须学习的补充内容。总的来说,我估计每天要花费一个小时,每周五次就足以让你在 6 个月或更短的时间内充分了解 DevOps 相关的内容。总共有 6 个主要知识支柱,每个支柱对应一个月的学习时间。 ( X$ M: {/ d" J! B
7 a7 Z6 R$ i) h& W C( M* E8 p
以上就是基础知识的介绍,在随后的系列文章中,我们将探讨更加复杂的问题:如何以完全自动化的方式配置、发布、打包、部署、运行和监控软件。 $ \. S7 o0 V: q+ l4 D: G
- e* T @; [" P3 U; g& ?. `2 r! z# @5 ~$ x" M; g2 r
. R3 l5 ^+ k$ G$ H
|