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工程师所必须掌握的技能。
评论
查看更多