如何在六个月或更短的时间内成为DevOps工程师(一)


【编者的话】本系列文章适用于想向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从业者。遗憾的是经验这条路是没有捷径可寻的。深刻理解快速变化的工具和方法这些技能需要数年才能掌握。

然而大多数公司都使用大致商定的工具和概念菜单,这就是本文所讲述的。

再次声明,工具与技能不同,因此当你学习工具时,请确保不要忽视自己的技能(包括面试,网络,书面沟通,故障排除等)。

最重要的是,不要忘记我们追求的目标,那就是构建一个全自动的数字化流程,将ideas转化成能创收的代码。

这是本篇文章中唯一最重要的内容。

光说不练,那么我该从何开始?

你可以参考以下作为路线图。

掌握以下内容,你大可以自称自己为DevOps工程师,如果你不喜欢“DevOps”称谓的话也可以称自己为云工程师。

以下的路线代表我(以及可能是在这个领域工作的大多数人)的关于一个有竞争力的DevOps工程师该了解什么的看法。也就是说,这只是一种意见,肯定会有不同的看法。

注意:你应该循序渐进,先从基础开始。首先开始学习蓝色的部分,包括Linux、Python、AWS,如果时间允许或是市场的就业需求,你应该再学习下Golang以及Google Cloud。
1.png

一旦你掌握了基础部分,那么我们开始讲讲现实中所需要的技能:
2.png

注意:上图缺少了测试阶段,这是有意为之的,编写单元测试,集成测试与验收测试并不容易,传统上讲这些都是落在开发者的头上的。我这里故意遗漏了测试阶段,因为上面路线图的目标是快速获取新技能与工具。我认为缺少测试专业知识是从业DevOps工作上一个微不足道的障碍。

同样请记住,我们不是在这里学习一大堆无关的技术。这些工具结合在一起来组成一个连贯的故事,我们才能对这些工具有更深刻的理解。

上面讲的是端到端的流程自动化,一个一环扣一环的数字化管道流程。

而且,你不想学习了一大堆工具就停下来。工具的变化很快,概念则是越来少。因此实践才能出真知。

接下来我们讲得深入一些。

基础知识

在“基础知识”往下一行就是所有DevOps工程师所必须掌握的技能。

行业优势的核心有三点,那就是操作系统,编程语言以及公共云。这些不是你可以很快能学习并掌握的东西。这些技能将是你必须持续获取并保持敏锐的技能,请持续关注并及时了解相关最新情况。

我们一个一个来看看吧。

Linux是能运行几乎所有东西的一个平台。当然一名出色的DevOps从业者也可以完全仅使用微软的生态系统。没有任何法律要求Linux实现一切。

然而请注意,虽然所有DevOps工作可以通过Windows完成,但在Windows上会比较痛苦,且相关的工作机会要少得多。所以你可以放心地假设在不了解Linux的情况下无法成为真正的DevOps专业人员。因此,Linux是你必须不断学习的技能。

老实说,最好的方法就是尽量多使用Linux,例如在个人电脑上安装Fedora或Ubuntu。在使用过程中,肯定会有某些东西被破坏,那么你会陷入困境,但你将不得不学习解决所有问题。这些都是获取经验的途径。

作为参考,红帽的分支版本在北美更为流行。因此,从Fedora或CentOS开始学起稍微有意义些。如果你还想知道是要选择KDE还是Gnome版本,我会告诉你Linus Torvalds也用的KDE。

Python:当今占主导地位的后端语言。易于上手,广泛使用。且Python在AI/机器学习领域非常流行,所以如果你想要转行到另一个热门领域,那么你将能轻易上手!

AWS:再一次申明,如果没有充分理解公共云如何工作,就不可能成为一名经验丰富的DevOps专业人士。如果你有了解过云的知识,那你该知道AWS是这一领域的主导者,它提供了最丰富的工具集。

是否可以从Google Cloud或Azure开始?当然可以,但是我们追求最大收获,至少在2018年,AWS是最稳当的。

当你注册AWS帐户时,你将获得免费套餐,所以这是一个能让你上手的好地方。

现在,当你登录到AWS控制台时,你将看到一个简单易懂的选项菜单。AWS会有非常多的功能,但值得高兴的是你并不需要了解每一个技术细节。

从VPC,EC2,IAM,S3,CloudWatch,ELB(在EC2保护伞下)和安全组开始,这些东西可以帮助你入门,每个现代化的支持云的企业都会大量使用这些工具。

AWS自己的培训站点同样是一个很好的入门平台。

我建议你每天留出20-30分钟来练习Python,Linux和AWS。

注意:这将是你必须学习的其他内容的补充。总而言之,我估计每天花费一个小时,每周五次就足以让你在6个月或更短的时间内充分了解DevOps领域的情况。

以上就是基础层,在随后的文章中,我们将探讨下一级复杂性:如何以完全自动化的方式配置,版本,打包,部署,运行和监控软件!

原文链接:How To Become a DevOps Engineer In Six Months or Less(翻译:fengxsong)

0 个评论

要回复文章请先登录注册