DevOps 工程师成长日记系列一:必备知识与技能组合
原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737
原文作者:Igor Kantor
翻译君:CODING 戴维奥普斯
写在前面
据 StackOverflow 2019 开发者调研结果公布:DevOps 专家的薪水仅次于研发管理者以及 SRE,位居第三:
数据来源:https://insights.stackoverflow.com/survey/2019
从 DevOps 专家的热门度来看,越来越多的企业意识到需要将 DevOps 从口头落地到日常研发流程中,实实在在给企业带来研发效能上的收益。在这场无声变革当中,专业的 DevOps 工程师必不可少。CODING 针对想要从事 DevOps 相关岗位的开发者精心策划了 DevOps 工程师成长日记系列,希望这系列文章能够给相关同学带来学习路径上的启发。接下来让我们进入到翻译内容的正文:
目标读者
- 你是否正在寻找一条 DevOps 转型的快速之道?
- 你是否是一个受过传统训练的运维人员并且想要体验 DevOps 领域的相关内容?
- 或者你已经学习了一段时间相关技术,现在只是想要寻找职业上的转变但不知从何下手。
如果属于上述情况的话,就继续往下阅读吧,接下来让我们一起看看如何在六个月内成为一名中级 DevOps 工程师。如果你已经从事多年 DevOps 相关工作,也仍然在寻找关于 DevOps 工程师的有效认可方式,那么你也是该系列文章的目标读者。
DevOps 工程师新定义
什么是 DevOps
关于它的定义与由来你可以 Google 到各种前沿理论,但是大部分的解释都是长篇大论,让人喘不过气来。看看我会怎么做——我会帮你节省鼠标的点击次数并且把关键信息摘出来:
DevOps 是一种研发团队同甘共苦、患难与共交付软件的方式。
定义就是这么简单,但它意味着什么?
这意味着,传统意义上的开发人员(编写软件的人)的目标与运维人员(运行软件的人)的目标大不相同。例如,作为一名开发人员,我希望尽可能快速地开发更多的新特性。毕竟,这是我的工作并且是客户需要的。然而,如果我是一名运维人员,我就会希望新特性越少越好。因为每一个新特性都意味着新的变更,而变更就意味着风险。
由于这种目标错位,DevOps 诞生了。
“系统工程师 2.0”
DevOps 尝试将开发和运维融进一个研发小团队里,由这个小团队共同承担开发、部署、努力创造软件收入的痛苦、责任(相反也可能是奖励)。
现在,纯粹主义者会告诉你没有 DevOps 工程师这样的职位,“DevOps 是一种文化,不是一种角色”, 他们会这么说。好吧,在技术上他们说的是正确的(最糟糕的那种“正确”)。但是正如经常发生的那样,这个术语已经超越其原始含义。
- 现在,成为 DevOps 工程师就像“系统工程师 2.0”。
- 换句话说,DevOps 工程师了解软件开发生命周期,并通过软件工程工具和流程解决传统运维挑战。
- DevOps 最终意味着建立一个数字流水线:从开发者的笔记本中获取代码直至产生收益的全过程。
作为一个职业选择,公司给 DevOps 相关岗位的薪资待遇都相当不错,几乎每家公司推行 DevOps 时都这样做或声称这样做。无论哪里的公司,DevOps 相关的工作机会都很丰富,它依然会是未来几年内有趣且有意义的工作岗位。
温馨提示:要警惕那些声称招聘DevOps 团队”或“DevOps 部门”的公司。严格来说 DevOps 终究是关于文化和交付软件的方式,而不是配备新的团队或部门。
免责声明
现在,让我们把肥宅快乐水放在一边,考虑以下几点:
你听过这句古老的格言吗 ——“世上没有初级的 DevOps 工程师。” 它其实是 Reddit 和 StackOverflow 上的流行比喻。这意味着需要多年的经验,结合对工具的扎实理解,才能最终成为真正有效的高级 DevOps 从业者。遗憾的是,没有捷径可行。
因此,这篇文章不是 DevOps 伪装指南。我不认为存在能够假装成一位具有几个月经验的高级 DevOps 工程师的方法;或者在几个月中掌握原本需要数年才能精通的快速变化的工具,和对方法的深刻理解,并且这些问题目前还没有完全解决。然而,大多数公司都使用大同小异的(或者主流的)工具和概念菜单,这些就是文章的主要内容。
工具与技能不同,因此在学习工具时,请确保不要忽视自己的技能(面试,网络,书面沟通,故障排除等)。
最重要的是,不要忘记我们追求的目标——建立一个全自动的数字化流水线,将创意转化为创收。
DevOps 学习路线图
广度优先逐层遍历
掌握以下内容你就可以诚实地称自己为 DevOps 工程师。如果你对“DevOps”相关的 title 反感的话可以叫自己“云工程师”。下面的路径图代表我(可能是在这个领域工作的大多数人)认为的一个称职的 DevOps 工程师应该掌握的技能。这只是一种意见,肯定会有不同的看法,没关系,我们并不追求完美,先把基础打好。
注意,你的目标是广度优先、逐层遍历。先从基础开始,学习蓝色标记的技术(Linux | Python | 腾讯云/阿里云),然后如果时间允许或者就业市场有相应需求,追踪紫色的技术(Golang | AWS/谷歌云)。
(译者注:原文的工具介绍是针对国外开发者,此处为了方便国内开发者实践译者进行了部分调整)
老实说,上述的基础层是你要持续学习的东西。Linux 很复杂,需要数年才能掌握;Python 需要持续练习才能保持最新状态;公有云发展如此迅速,以至于你今天所知道的事情可能只是它的冰山一角。但是,一旦你有一个合理的知识基础,就拥有了进入现实世界的技能组合。下面总共有 6 个蓝色列,建议每月学习一列。
为什么没有测试
上面的学习路线中明显缺少 Test,这是有意为之的。编写单元测试、集成和验收测试并不是一件简单的事情,传统上是开发人员的责任。“测试”阶段的遗漏是有意的,因为本路线图的目标是快速获取新的技能和工具。笔者认为缺乏测试专业知识是 DevOps 就业一个微不足道的障碍。
另外,请记住,我们不是在这里学习以及喋喋不休一大堆无关的技术。我们需要对完整的工具有比较充分的理解。将这些工具结合在一起,就可以讲述一个连贯的故事 —— 端到端的流程自动化。
你肯定不希望学习一堆工具后就停下来。工具变化很快,概念变化得相对缓慢,因此你要做的是使用工具作为进阶概念的学习辅助。接下来,让我们再深入探讨下 DevOps 学习路线图。
DevOps 必备基础知识
在图一的“Foundation”下,你看到的是每个 DevOps 工程师必须掌握的技能。你会看到三个行业主导的支柱:操作系统,编程语言,公有云。这些东西不会是一蹴而就的技能,你必须掌握以及持续学习,以保持相关性并及时了解最新情况。接下来我们逐一介绍它们:
- Linux
它是几乎所有软件运行的地方。有人会问:能完全处在微软生态系统中成为一名出色的 DevOps 从业者吗?当然可以,没有任何法律要求用 Linux 来实现一切。
然而请注意,尽管所有 DevOps 相关事情都可以通过 Windows 完成,但这个过程更加痛苦,而且工作机会要少得多。现在,你可以放心地预设在不了解 Linux 的情况下无法成为真正的 DevOps 专业人员。因此,Linux 是你必须学习和不断学习的东西。
最好的方法是在家里安装 Linux( Fedora 或 Ubuntu)并尽可能多地使用它。你会破坏操作系统上的东西,会被问题困住,然后你不得不解决所有问题,在这个过程中,你将学习到 Linux 相关的知识与技能。作为参考,在北美红帽系统更为普遍,因此从 Fedora 或 CentOS 开始也是 OK 的。如果你在犹豫是否该用 KDE 或 Gnome 版本,就用 KDE 吧,Linus Torvalds 用的就是它 : )
Linux 主流发行版本 Google Trend 对比(近 5 年数据)
- Python
Python 是如今占主导地位的后端语言,易于上手,被广泛使用。Python 在 AI 以及机器学习领域使用非常普遍,所以如果你想要转换到另一个热门领域,那么你也会更加得心应手。
- 公有云
如果没有充分了解公有云的运作方式,就不可能成为一名经验丰富的 DevOps 专业人士。国内外云计算领域的主导者们提供了非常丰富的工具集。
我建议你每天留出 20-30 分钟来学习 Python,Linux 和公有云。图二是你必须学习的补充内容。总的来说,我估计每天要花费一个小时,每周五次就足以让你在 6 个月或更短的时间内充分了解 DevOps 相关的内容。总共有 6 个主要知识支柱,每个支柱对应一个月的学习时间。
以上就是基础知识的介绍,在随后的系列文章中,我们将探讨更加复杂的问题:如何以完全自动化的方式配置、发布、打包、部署、运行和监控软件。
译后记
我们相信,在企业数字化转型落地过程中 ,DevOps 是企业软件开发模式革新的重要支柱。
CODING 作为国内领先的 DevOps 解决方案提供商,支持从需求到部署的研发全流程管理,涵盖了项目管理、代码管理、持续集成、制品库管理、测试管理、部署管理、缺陷管理、知识管理,帮助企业轻松将创意转化为创收。CODING 也会持续关注并分享软件研发领域最新理念与技术,与 DevOps 工程师一起成长。
DevOps 工程师成长日记系列一:必备知识与技能组合的更多相关文章
- DevOps 工程师成长日记系列二:配置
原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-2-config ...
- DevOps 工程师成长日记系列三:版本
原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-3-versio ...
- DevOps 工程师成长日记系列四:打包
原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-4-packag ...
- DevOps 工程师成长日记系列五:部署
原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-5-deploy ...
- sql server 备份与恢复系列一 必备知识
一.备份概述 数据安全是数据库的生命,数据库在使用过程中难免会遇到如:使用者的误操作或是被恶意修改,硬件故障导致数据文件无法被访问,自然灾害导致机房在物理上的损毁.本章从备份与恢复的功能作为解决问题的 ...
- DevOps工程师的成长路线图
DevOps工程师的成长路线图 我们推崇的是 Reducing the gap between Devs and Operation teams. 来自kamranahmedse you built ...
- 年薪30W测试工程师成长之路,你在哪个阶段?
对任何职业而言,薪资始终都会是众多追求的重要部分.前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和.当然,我说的是最基础 ...
- Linux运维工程师成长必经之路
本路线图是从0基础开始,全方位由浅入深,按照多年Linux培训经验和优秀教学方法制定的学习思路和学习方法,路线图包括初级入门.中级进阶.高级提升和资深冲刺四个阶段,每阶段对应着不同优秀的课程和学习方法 ...
- python工程师成长之路精品课程(全套)
python工程师成长之路精品课程(全套) 有需要联系我:QQ:1844912514 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加易学.易读,非常适合快速开发. ...
随机推荐
- 神探Python程序员,带你千里捉小三!(附详情代码)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 王翔 清风Python PS:如有需要Python学习资料的小伙伴 ...
- 【JS简洁之道小技巧】第一期 扁平化数组
介绍两种方法,一是ES6的flat,简单粗暴.二是递归,也不麻烦. flat ES6自带了flat方法,用于使一个嵌套的数组扁平化,默认展开一个嵌套层.flat方法接收一个数字类型参数,参数值即嵌套层 ...
- zabbix监控服务
1.模板的重要 1.手动添加监控比较麻烦,监控项 -> 图形 -> 触发器. 问题: 1.例如: 100台服务器需要检查81端口 2.例如: 100台服务器81改成82 解决: 使用模 ...
- Python:多态、协议和鸭子类型
多态 问起面向对象的三大特性,几乎每个人都能对答如流:封装.继承.多态.今天我们就要来说一说 Python 中的多态. 所谓多态:就是指一个类实例的相同方法在不同情形有不同表现形式.多态机制使具有不同 ...
- 前端知识体系-NodeJS相关】NodeJS基础知识全面总结
NodeJS基础知识 1. Node的全局对象和全局变量 1.1 全局对象:所有模块都可以调用的 global:表示Node所在的全局环境,类似于浏览器的window对象. process:该对象表示 ...
- 【转载】从使用到原理学习Java线程池
线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收. 所 ...
- NSURLSession的文件上传
文件上传的步骤: (1)确定上传路径 (2)创建“可变”请求对象 (3)修改请求方法为POST --设置请求头信息,告诉服务器这是一个文件上传请求 --按照固定的格式拼接数据 (4)设置请求体信息 ...
- Jackson version is too old 2.xx
我使用的是IDEA,很简单. 切换到project,如果下面的module版本是2.65,上面的jackson.core.xx小于2.65就会报old,如果高于2.65就会报不兼容. 所以调整成相同的 ...
- Java基础之IO技术(一)
---恢复内容开始--- Java基础中的IO技术可谓是非常重要,俗话说的好,万丈高楼起于垒土之间.所以学习Java一定要把基础学好,今天我们来学习IO技术的基础. IO无非就是输入与输出,而其中处理 ...
- Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises)
传送门 A. Optimal Currency Exchange 枚举一下就行了. Code #include <bits/stdc++.h> using namespace std; t ...