内容简介:系列第一篇,本系列文章适用于想向DevOps模型转型的开发人员,或者是受过传统培训,想要了解整个关于DevOps的内容的运营人员,如果不属于以上两者,只是想在职业上寻找变化却不知从何开始的话,也请继续阅读。如果你已从事多年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。
一旦你掌握了基础部分,那么我们开始讲讲现实中所需要的技能:
注意:上图缺少了测试阶段,这是有意为之的,编写单元测试,集成测试与验收测试并不容易,传统上讲这些都是落在开发者的头上的。我这里故意遗漏了测试阶段,因为上面路线图的目标是快速获取新技能与工具。我认为缺少测试专业知识是从业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领域的情况。
以上就是基础层,在随后的文章中,我们将探讨下一级复杂性:如何以完全自动化的方式配置,版本,打包,部署,运行和监控软件!
(翻译:fengxsong)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 如何成为优秀JAVA工程师
- 前端工程师如何成为全栈工程师?
- 如何成为一名优秀的工程师(语义篇)
- [译] 如何成为一名优秀的初级工程师
- 如何成为一名优秀的全栈工程师
- 成为一名安全资深工程师应该具备怎样的素养!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。