【译文】原文地址
目标读者
你是一个希望将职业生涯转向更多DevOps模式的开发人员吗?
你是一个受过传统Ops训练的人吗?你想知道DevOps是怎么回事吗?
或者你两者都不是,你已经花了一段时间与技术打交道,现在只是在寻求职业改变,却不知道从哪里开始?
如果是这样,请继续往下读,因为我们将看到如何在6个月内成为一名中级DevOps工程师!
最后,如果您已经从事DevOps工作多年,您仍然会发现其中一些有用的东西,可以证明我们目前的位置和发展方向。
什么是DevOps?
你可以google它们的定义,然后费力地读完所有那些夸张时髦的词,但你要知道,大多数都是把冗长的单词塞进冗长的句子里,令人尴尬。(看到我做什么了吗?)
所以,我将为你节省点时间,并将其提炼为:
DevOps是一种软件交付方式,伴随痛苦和责任。
就这些。
具体是什么意思呢?
这意味着,传统上,开发人员(开发软件的人)的目标与运维人员目标(运行软件的人)有很大的不同。
例如,作为一名开发人员,我想尽快开发尽可能多的新特性。毕竟,这是我的工作,也是客户的要求!
然而,如果我是一个运维人员,那么我希望尽可能少的新特性,因为每个新特性都是一个变更,而变更是有风险的。
由于这种动机的错位,DevOps诞生了。
DevOps试图将开发和运维(DevOps,明白吗?)融合在一起。他们的想法是,现在一个团队要一起创建、部署和发布面向客户的软件,并一起承担收益的痛苦和责任(可能还有回报)。
现在,纯粹主义者会告诉你,没有“DevOps工程师”这样的东西。他们会告诉你:“DevOps是一种文化,而不是一种角色。”
是的。从技术上讲,他们是正确的(这是最糟糕的一种正确!)
现在,DevOps工程师就像是“系统工程师2.0”。
换句话说,就是那些理解软件开发生命周期并带来软件工程工具的人,他们解决过去运维的挑战。
DevOps最终意味着构建数子管道,从开发者的笔记本电脑中产生代码,到一路创造收益。
这就是devOps的全部。
同样需要注意的是,作为一种职业选择,整个DevOps领域都在发展,几乎每家公司都在“做DevOps”或声称要这么做。
不管这些公司在哪里,DevOps的整体工作机会都是丰富的,为未来几年提供了有趣又有意义的就业机会。
注意:要小心那些雇佣“DevOps团队”或“DevOps部门”的公司。严格地说,这样的事情不应该存在,因为DevOps归根结底是关于文化和交付软件的方式,而不是一个需要增加人手的新团队或部门。
申明
现在,让我们把这其他事放一放,考虑下面的问题。你听过那句老话吗,“没有初级DevOps工程师”?
如果不是,请知道这是在Reddit和StackOverflow上的一个流行比喻。但这意味着什么呢?
简单地说,这意味着需要多年的经验,结合对工具的扎实理解,最终成为真正的高级DevOps从业者。可悲的是,经验是没有捷径的。
所以,这并不是试图欺骗系统——我认为只有几个月经验的高级DevOps工程师实际上是不可能的。对快速变化的工具和方法的深入理解需要数年的时间才能掌握,而且这是无法回避的。
然而!大多数公司使用的工具和概念大致都相似,这也是本文要介绍的。
再次强调,工具不同于技能,所以当你学习这些工具时,确保你没有忽视自己的技能(面试、社交、书面沟通、故障排除等)。
最重要的是,不要忘记我们想要的是什么——建立一个完全自动化的数字管道,将想法转化为产生收入的代码片段。
这是本文中最重要的一点!
说得够多了,我该从哪里开始?
下面是你的路线图。
掌握以下技巧,你就可以妥妥地称自己为DevOps工程师了!如果你不喜欢“DevOps”这个头衔,你也可以选择“云计算工程师”。
下面的路标代表了我(可能是在这个领域工作的大多数人)对于一个称职的DevOps工程师应该知道的东西的想法。也就是说,这只是一种意见,肯定会有不同的见解。这是好的!我们在这里追求的不是完美,我们追求的是一个可以建立的坚实基础。
注意:您应该通过广度优先遍历下图,一层一层地下去。从基础开始(然后继续!)先学习蓝色的技术(Linux|Python|AWS),然后如果时间允许或就业需要,去追求紫色的东西(Golang|谷歌云)。
然后往下深入。然后,如果时间允许,从第二层开始,让你的专业技能更有深度。
老实说,最基本的第一层是你必须永远坚持学习的。Linux是复杂的,需要数年才能掌握。Python需要不断的练习来保持与时俱进。AWS的发展如此之快,以至于你今天所知道的东西一年后可能就只算一部分了。
但是,一旦你把基础打好了,就可以转向实际的技能。注意总共有6列蓝色的,每个技能1个月时间。
注意:上面的流程中明显缺少的是测试。这是有意为之的——编写单元、集成和验收测试并不容易,传统上都是由开发人员来完成。 “测试”阶段的遗漏是有意的,因为这个路线图的目标是快速吸收新技能和工具。作者认为,缺乏测试专业知识是DevOps恰当就业的一个无关紧要的障碍。
另外,请记住,我们并不是在学习了一大堆不相关的技术废话之后才来这里的。我们追求的是对工具的坚实理解,这些工具结合在一起,讲述一个单一的、连贯的故事。
这个故事就是端到端流程自动化——一种以流水线般的方式移动数字化信息。
此外,你肯定不会学了一堆工具然后停止。工具变化迅速,概念变化不大。因此,您要做的是使用这些工具作为学习高级概念的途径。
让我们再挖入一点!
基础知识
在顶部一行标记为“基础”的下面,你会看到每个DevOps工程师必须掌握的技能。
在这里,您将看到行业的三大支柱:操作系统、编程语言和公有云。这些都不是你能很快学会的东西,把它们从清单上划掉,然后继续前进。这些都将是你必须掌握的技能,并不断保持更新,以保持知识与时俱进。
让我们一个一个来分析
Linux:一切程序运行的地方。现在,你能成为一名出色的DevOps从业者,并且完全留在微软的生态系统中吗?当然可以!没有任何法律要求一定要使用Linux做任何事情。
然而!请你知道,虽然所有DevOps的事情都可以在Windows上完成,但这要痛苦得多,工作机会也少得多。现在,您可以放心地假设,如果不了解Linux,就不可能成为真正的DevOps专业人员。因此,Linux是您必须学习并不断学习的。
老实说,最好的方法是在家里安装Linux (Fedora或Ubuntu),并尽可能多地使用它。你会弄坏东西,你会卡住,然后你将不得不修复它,在这个过程中,你将学习Linux!
作为参考,在北美,红帽系列使用的更普遍。因此,从Fedora或CentOS开始是有意义的。如果您想知道应该选择KDE版本还是Gnome版本,那么就选择KDE。这也是莱纳斯·托瓦兹使用的。:)
Pthon:主流后端语言。容易上手,广泛使用。附赠:Python在AI/机器学习领域非常流行,所以如果你想过渡到另一个热门领域,你将万事俱备!
Amazon Web Services:同样,如果对公有云如何工作不深刻理解,就不可能成为一个经验丰富的DevOps专业人员。如果您追求的是云计算知识,那么Amazon Web Services就是这个领域的主导者,它提供了最丰富的工具集。
有可能从谷歌Cloud或Azure开始吗?绝对的!但我们在这里追求的是最大的回报,因此AWS是最安全的选择,至少目前是这样。
当你在AWS注册一个账户时,你可以免费使用一段时间,所以这是一个很好的起点。
现在,当您登录到AWS控制台时,会看到一个简单、易于理解的选项菜单。好消息是,你不需要了解亚马逊的每一个技术。
从VPC、EC2、IAM、S3、CloudWatch、ELB (EC2下)和安全组开始。这些东西足以让你入门,每个现代的、支持云计算的企业都会大量使用这些工具。
AWS自己的培训网站website也是一个很好的起点。
我建议您每天留出20-30分钟来练习Python、Linux和AWS。
注意:这包括你不得不学习的其他东西。总的来说,我估计每天花一个小时,每周花五次就足以让您在6个月或更短的时间内对DevOps领域的进展有一个坚实的理解。
同样,总共有6个主要技术,每个技术对应一个月的学习时间。
以上是基础层面。
在后续文章中,我们将探索下一层次的复杂性:如何以完全自动化的方式完成 配置, 版本, 打包、部署、运行和监控软件!