如何在六个月内成为一名合格的 DevOps 工程师

post thumb
翻译
by 王英伟/ on 26 Sep 2019

如何在六个月内成为一名合格的 DevOps 工程师

社区译者:王英伟

审校:韦世滴

原文地址(原作者:Igor Kantor):https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737

注意: 这只是第一部分,另一部分在这里

目标读者

你是一个想转型成为 DevOps 工程师的开发人员吗?

你是一个受过正规培训的运维人员并且你想了解整个 DevOps 体系都包含什么内容吗?

或者你都不是,你只是一名技术人员,你正在尝试职业转型,但是却不知道从哪里开始?

如果是这样,请继续往下阅读,因为我们尝试将在六个月内指导你如何成为一名中级 DevOps 工程师!

最后,如果你已经从事 DevOps 工作多年了,你可能仍然会发现这篇文章很有价值,因为它可以帮助你确定目前的现状和未来的发展方向。

目前现状

首先,明确 DevOps 是什么?

你可以在谷歌上搜索这些定义,浏览所有这些流行的词汇。但你会看到,大多数都是令人费解的冗长的描述语句。(看看我在这里会怎么做?)

因此,我会帮你做以下总结:

DevOps 是一种团队共同承担痛苦和责任的软件交付方法。

仅此而已。好吧,那具体含义是什么呢?

按照传统思维模式,开发人员(开发软件的人)和运维人员(维护软件运行的人)的工作目标完全不同。

例如,作为开发人员,我希望尽快、尽可能多的开发新功能。毕竟,这是我的工作,也是客户的要求!

但是,作为运维人员,那么我想要尽可能少的交付新特性,因为每个新特性的交付都会伴伴随着风险。

正式因为这种不一致的目标,导致 DevOps 诞生了。

DevOps 试图融合开发和运维到一个团队。其理念是,一个团队现在将承担面向客户的软件开发过程中每个环节,并共同承担痛苦和责任(以及由此产生的回报)。

现在,纯粹主义者会告诉你,没有所谓的 “DevOps 工程师”。“DevOps 是一种文化,而不是一个角色。” 这种说法在理论上是正确的(最糟糕的一种正确!)但是,正如它经常发生的那样,这个词已经超出了它原来的含义。

现在,成为一名 DevOps 工程师就像是“系统工程师2.0”那样。换言之,了解软件开发生命周期并使用软件工程工具和过程,来解决经典问题的人。

DevOps 最终意味着构建自动化流水线,从开发人员的笔记本电脑上获取代码从而产生最终收益!

同样要注意的是,作为一个职业选择,DevOps 有很完善的职业发展路径,几乎所有的公司要么“做 DevOps”,要么声称这样做。无论公司在哪里,DevOps 的整体就业机会都是丰富的,为未来几年提供了非常多的就业岗位。

注意:对于为“DevOps 团队”或“DevOps 部门”招聘员工的公司需要小心。严格来说,这类事情不应该存在。因为最终,DevOps 都是提供关于软件工程的文化和方式,而不是新的团队或部门。

放弃

现在,让我们把一杯苦艾酒放在一边,考虑一下下面的内容。你听过一句古老的格言吗:“没有初级的 DevOps 工程师?”

如果没有听过这个格言,请知道它是 Reddit 和 StackOverflow 上的一个流行比喻。但这意味着什么?

简而言之,这意味着需要多年的经验,再加上对工具的扎实理解,才能最终成为真正有效的高级 DevOps 实践者。可悲的是,没有捷径可寻。所以,这不是可以尝试欺骗的岗位——我认为这实际上不可能模拟成一个有几个月经验的高级开发人员工程师。对快速变化的工具和方法的深入了解需要数年的时间才能掌握,这一点是无法回避的。

然而!对于大多数公司使用的工具和概念,有一个大致一致的流行的体系结构,这就是文章的全部内容。

同样,工具不同于技能,所以当你学习这些工具时,要确保你不会忽视你的技能(面试、网络、书面交流、故障排除等)。

最重要的是,不要忘记我们正在追求的目标——建立一个完全自动化的流水线,将想法转化为创收代码。这是这篇文章中最重要的一部分。

我们从哪里开始?

下面是你的知识学习路线图。

掌握以下知识,你就可以称自己为 DevOps 工程师!如果你讨厌 “DevOps” 这个头衔,你可以自称为“云工程师”。

下面的地图代表了我(以及在这个团队工作的大多数人)对一个称职的 DevOps 工程师应该掌握的知识体系的看法。也就是说,这只是一种参考,肯定会有反对的声音。没关系!我们在这里并不追求完美,我们正在尝试建立一个共享的基础知识技能图谱。

注意:您应该首先一层一层地遍历学习这个知识体系。开始先打基础。首先学习蓝色的技术(Linux|Python|AWS),然后如果时间允许或就业市场需要,再学习紫色的技术(Golang|Google Cloud)。

再次,在时间允许的情况下,在第二层(紫色部分知识技能)之后增加您的专业知识的深度。

老实说,上面的基础层是你永远无法停止学习的。Linux 很复杂,需要多年才能掌握。 Python 需要不断的练习来保持最新状态。AWS 的发展如此之快,以至于你今天所知道的知识,在一年后仅仅是整个知识体系的一小部分。但是一旦你合理地掌握了基础层,就进入实际应用的技能集合。请注意,总共有6个蓝色列,每个月一个。

注意:上面的流水线明显缺少的是测试环节。这是故意的——编写单元、集成和验收测试并不容易,而且传统上都是由开发人员承担的。这里是有意遗漏“测试”阶段的,因为该路线图的目标是快速吸收新的技能和工具。作者认为缺乏测试专业知识,对合适的 DevOps 职业发展路线来说是一个很小的障碍。

另外,请记住,我们不是在学习一大堆不相关的技术。我们需要对工具有一个扎实的理解,然后工具结合在一起,完成一个单一、连贯的流水线任务。这个任务是端到端的自动化过程——一个以流水线的方式运行的数字化流程。而且,你不能学一堆工具就停下来。工具的变化很快,概念的变化要小得多。因此,您要做的是掌握这些工具背后的概念。

基础知识

在标记为“基础”的顶部,您将看到每个 DevOps 工程师必须掌握的技能。

在这里,您将看到三个主要的方面:操作系统、编程语言、公共云。这些东西不会是你能很快学会的东西,把它们从列表中勾选出来,然后持续学习。这些技能将是你必须不断学习和保持敏锐的技能,并随时关注最新进展。

  • Linux

运行在各处的操作系统。现在,你能成为一个优秀的 DevOps 实践者,并完全留在微软生态系统中吗?当然可以!没有法律规定 Linux 必须为唯一的操作系统。但是请您了解,虽然所有的 DevOps 工作都可以通过 Windows 来完成,但这会更加痛苦,工作机会也会更少。所以,您完全可以假设,不了解 Linux 就不能成为真正的 DevOps 专业人员。因此,Linux 是您必须学习和不断学习的东西。

老实说,最好的方法就是在家里安装 Linux(Fedora 或 Ubuntu),并尽可能多地使用它。你将破环操作系统,你将被卡住,然后你又不得不修复它,在这个过程中,你将学习 Linux!作为参考,在北美,红帽变种更为普遍。因此,从 Fedora 或 Centos 开始是有意义的。如果你想知道是应该使用 KDE 还是 Gnome 版本,那么就从 KDE 版本开始。这就是莱纳斯·托瓦尔兹所用的。

  • Python

现在主要的后端语言。容易入门,使用广泛。另外:python 在人工智能/机器学习领域非常流行,所以如果你想转换到另一个热门领域,你就可以做好准备了!

  • 亚马逊云服务

如果你要成为一个经验丰富的 DevOps 专业人士,必须对公共云的工作方式有扎实的了解。如果你想学习云相关的知识,那么亚马逊云服务就是这个领域的主导者,它提供了最丰富的工具。

是否可以从 Google Cloud 或 Azure 开始?当然可以!但我们尽量学习市场占有率最高的产品,所以至少在2018年,AWS 是占有市场占有率最高的公有云产品。当你在 AWS 注册一个帐户时,你会得到一个免费使用空间,所以这是一个很好的开端。现在,当您登录到 AWS 控制台时,会看到一个简单易懂的选项菜单。

这是个讽刺。好消息是你不需要了解亚马逊的每一项技术。从以下内容开始:VPC、EC2、IAM、S3、CloudWatch、ELB(在 EC2 的套件中)和安全组。这些东西足以让您开始工作,而且每一个现代支持公有云的企业,都将大量使用这些工具。

AWS 自己的培训网站是一个很好的学习起点。我建议您每天留出20-30分钟来练习 Python、Linux 和 AWS。

注意:这将是除了其他你必须学习的东西。总的来说,我估计每天花一个小时,一周五次,足以让你在6个月或更短的时间内对 DevOps 的知识体系有一个全面的了解。同样,共有6个主要支柱,每个支柱对应一个月的学习。这就是基础层!

在后续的文章中,我们将探讨下一个题目:如何以完全自动化的方式配置、版本、打包、部署、运行和监控软件!