> * 原文地址：[How To Become a DevOps Engineer In Six Months or Less](https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737)
> * 原文作者：[Igor Kantor](https://medium.com/@devfire?source=post_header_lockup)
> * 译文出自：[掘金翻译计划](https://github.com/xitu/gold-miner)
> * 本文永久链接：[https://github.com/xitu/gold-miner/blob/master/TODO1/how-to-become-a-devops-engineer-in-six-months-or-less.md](https://github.com/xitu/gold-miner/blob/master/TODO1/how-to-become-a-devops-engineer-in-six-months-or-less.md)
> * 译者：[临书](https://github.com/tmpbook)
> * 校对者：[jianboy](https://github.com/jianboy)

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

![](https://cdn-images-1.medium.com/max/1000/0*StLXK67qSOoUwyCM.)

『空旷的高速公路横穿多彩的沙漠』— 由 [Johannes Plenio](https://unsplash.com/@jplenio?utm_source=medium&utm_medium=referral) 发布在 [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)。

**注：这是系列文章的第一部分。**

**第二部分在[这里](https://github.com/xitu/gold-miner/blob/master/TODO1/how-to-become-a-devops-engineer-in-six-months-or-less-part-2-configure.md)。**

### 目标受众

你是一名希望将职业生涯转向更契合 DevOps 模式的开发人员吗？

你是一位经验丰富的运维人员吗，你想要了解整个 DevOps 生态吗？

或者你都不是，你只是寻求职业生涯的改变却不知道从哪里开始？如果是这样，请往下阅读！

最后，如果你已经有了多年的 DevOps 经验，你也可能从文章中获取有用的信息，比如验证自己的位置和发展方向。

### DevOps 是什么？

首先，什么是 DevOps？

你可以谷歌一下它的定义，不过大多数都是一些冗长的包含很多空话的连续字段。（看下面我做了什么？）

那么，我帮你搜索好了并将它的定义摘录下来：

> DevOps 是一种痛苦与职责交织的软件交付方式。

就这样。

好吧，所以**这**到底是什么意思？

在传统意义上，开发人员（开发软件的人）的与运维人员（维护软件的人）的职责不大相同。

例如，作为一名开发人员，我要尽可能快的开发**更多**的新功能。毕竟这是我的工作，也是客户的需求！

然而，如果我是一名运维人员，我可能不希望有太多的新特性，因为每个新特性都意味着一次变更，而每次变更都是有风险的。

由于这种两种激励机制的冲突，DevOps 诞生了。

DevOps 试图将开发人员（Dev）和运维人员（Ops）融合到一个组中。我们的想法是：这样可以在同组内消化面向用户软件的研发、部署和完成绩效等所有痛苦和职责（可能还有奖励）。

此时，纯粹主义者会告诉你：『没有「DevOps 工程师」这个东西，DevOps 是一种文化，而非角色』。

是的，它在理论上是正确的（最糟糕的那种正确！），但是正如经常发生的那样，这已经超越了它本来的含义。

现在，成为 DevOps 工程师就像成为『系统工程师 2.0』。

换句话来说，DevOps 工程师就是一种既了解软件生命周期，也可以开发出面向开发者的工具，还能推进解决经典运维难题的人。

> DevOps 最终意味着构建数字化管道，从开发人员的笔记本电脑上的代码，到生产环境部署直至产生收益，这令人敬畏！

这就是它的一切！

另请注意，作为一种职业选择，整个 DevOps 行业有很高的报酬，几乎每个公司都会有 DevOps 职位，或者声称将会有。

无论哪儿的公司，DevOps 的工作机会都非常多，会在未来几年内提供有趣、有意义的工作机会。

注意：警惕聘用『DevOps 团队』或者『DevOps 部门』的公司。严格的来说，这种情况是不会发生的，因为 DevOps 最终是关于文化和软件交付方式的，并**不是**要配备新的团队或者部门。

### 放弃

现在，让我们把 Kool-Aid 的杯子放到一边，考虑以下几点：

你有没有听过这句老话，『不存在初级的 DevOps 工程师吗？』

如果没有，请知晓它是 Reddit 和 StackOverflow 上的一种流行比喻。但是这是什么意思呢？

简而言之，这意味着它需要多年的经验，并结合对工具的扎实理解，才能最终成为真正的高级 DevOps 从业者。然而遗憾的是，经验的获取没有捷径。

所以，不要尝试在这个行业行骗，我认为只有几个月的经验是不可能假装成高级 DevOps 工程师的。对快速迭代的工具和方法，需要数年才能深刻理解，而且没有捷径。

然而，大多数公司一般都会使用一些主流的（最新的，如果你愿意）工具和概念，这就是本文的全部主题！

同样，因为工具和技能不同，在学习工具时，请确保不要忽视自己的技能（面试、网络、书面沟通和故障排除等）

最重要的是，不要忘记我们追求的目标 — **构建一个全自动的数字管道，将想法转化为可以创造收入的代码。**

这是整篇文章中唯一重要的内容！

### 说的够多了，我们应该如何开始做？

以下是你的路线图。

掌握以下内容，你可以安心的称自己为 DevOps 工程师！或者云工程师 — 如果你讨厌『DevOps』这个称呼。

下面的图代表我（也可能是这个领域工作的大多数人）的想法，是关于一个 DevOps 工程师应该了解什么。也就是说，这只是一种建议，肯定会有不同的声音，这并没有什么问题，我们不追求完美，我们是在建立坚实的基础。

注意：你应该使用广度优先的方式浏览，先从基础开始（并坚持下去！）。首先学习蓝色标记的技术（Linux | Python | AWS），然后如果时间允许或者就业市场有需求，继续学习紫色标记的技术（Golang | Google Cloud）。

译者注：AWS 和 Google Cloud 技能可以理解为国内的腾讯云、阿里云。

![](https://cdn-images-1.medium.com/max/800/1*GNxucS4v93-XdnD5-vWB_w.png)

DevOps 基础知识

还有，如果时间允许，在掌握第一层基础之后，请继续学习它的下一层，以增加你的专业知识深度。

一旦你弄懂了基础层面的东西，可以开始转去解决实际问题了：

![](https://cdn-images-1.medium.com/max/1000/1*yjU_IVVZRQ1oXtnxAuGUhQ.png)

现实世界的技能

注意：上面的技能管道缺少了测试 — 编写测试用例，这是故意的 - 编写集成和验收测试用例并不容易，这通常是开发人员承担的工作。故意遗漏『测试』阶段是因为该学习路线图的目标是快速获取新技能与工具。笔者认为缺乏测试专业知识只是成为 DevOps 的一个微不足道的障碍。

还有，请记住，我们不是在这里学习一堆无关的技术吐槽。我们需要对完整的工具链有深刻的理解，要将这些工具结合在一起，讲述一个连贯的故事。

这个故事是**端到端的流程自动化 — 一种可以像装配流水线一样改动的数字管道。**

而且，你一定也不想学一堆工具然后止步不前，工具更新换代很快，概念则不是。因此，你要做的是使用工具作为代表去学习更高级别的概念，而不是学习工具的使用。

好的，让我们再深挖一点！

### 基础知识

在标有『基础』知识的基线下，你将看到每个 DevOps 工程师必须掌握的技能。

在这里，你将看到行业中主导的三大支柱：操作系统，编程语言，公有云。这些不是你很快能学会的东西，在列表中查看，然后继续前进。为了保持对技能的熟悉和不过时，你必须持续的学习并对其保持敏锐。

让我们一个接一个看看。

Linux：可以运行一切的系统。现如今，你能成为一名完全生存于 Microsoft 生态中的出色 DevOps 从业者吗？当然可以！没有规定要求 Linux 包含所有生态。

然而！请注意，虽然所有的 _DevOps-y_ 事情确实可以用 Windows 来完成，但这个过程更加痛苦，而且工作机会要少的多。现在，你可以放心的认为在不了解 Linux 的情况下无法成为真正的 DevOps 专业人员。因此，Linux 是你必须学习和不断学习的东西。

诚然，最好的方法是在家里的电脑安装 Linux（Fedora 或者 Ubuntu）并尽可能多的使用它。你会解决一些问题，或者你会陷入困境，然后你将不得不解决所有问题，在这个过程中，你将学会 Linux！

作为参考，在北美，Red Hat（红帽）的变种更为普遍，因此，从 [Fedora](https://spins.fedoraproject.org/kde/download/index.html) 或 [CentOS](https://www.centos.org/download/) 开始学习是有道理的。如果你在犹豫使用 KDE 或 Gnome 哪种桌面环境，请使用 KDE。Linux Torvalds（译者注：linux 之父）在使用。:)

Python：如今最主流的后端语言。易上手，使用广泛。红利：Python 在 AI/机器学习领域的使用非常广泛，所以如果你想要转战其它热门领域，路已经铺好了。

亚马逊网络服务：再强调一次，没有充分了解公有云的运作方式，不可能成为一名经验丰富的 DevOps 专业人士。如果你想了解云知识，亚马逊网络服务是这一领域的主导者，它提供了最丰富的工具集。

是否可以从 Google Cloud 或 Azure 开始？当然可以！但是我们追求的是利益最大化，所以 AWS 是成功概率最大的，至少在 2018 年。

在 AWS 注册账户可以获得一些免费的套餐优惠，所以这是一个很好的起点。

现在，当你登录 [AWS 控制台](https://aws.amazon.com/)时，你会看到一个简单易懂的选项菜单。

![](https://cdn-images-1.medium.com/max/800/0*mbMm7PT2bLCcr_Fd.)

『发现另一个我从未知晓的 AWS 功能』，由 [Tom Pumford](https://unsplash.com/@tompumford?utm_source=medium&utm_medium=referral) 发布在 [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)。

那是一句讽刺。好消息是，你不需要了解每一个亚马逊技术。

从下面几个开始：VPC，EC2，IAM，S3，CloudWatch，ELB（在 EC2 的保护伞之下）还有安全组。这些东西可以帮助你入门，每个现代的，支持云的企业都会大量使用这些工具。

AWS 自己的培训[网站](https://www.aws.training/?src=training)是一个很好的起点。

我建议你每天流出 20-30 分钟来练习 Python，Liunx 还有 AWS。

注意：这将是必须要学习的**附加**内容。总而言之，我估计每天花费一个小时，每周五次就足以让你在 6 个月或者更短的时间内充分了解 DevOps 行业的情况。

这就是基础层！

在随后的文章中，我们将讨论下一级的复杂的东西：如何完全以自动化的方式[配置](https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-2-configure-a2dfc11f6f7d)，管理版本、管理包、部署、运行和监控软件！

> 如果发现译文存在错误或其他需要改进的地方，欢迎到 [掘金翻译计划](https://github.com/xitu/gold-miner) 对译文进行修改并 PR，也可获得相应奖励积分。文章开头的 **本文永久链接** 即为本文在 GitHub 上的 MarkDown 链接。


---

> [掘金翻译计划](https://github.com/xitu/gold-miner) 是一个翻译优质互联网技术文章的社区，文章来源为 [掘金](https://juejin.im) 上的英文分享文章。内容覆盖 [Android](https://github.com/xitu/gold-miner#android)、[iOS](https://github.com/xitu/gold-miner#ios)、[前端](https://github.com/xitu/gold-miner#前端)、[后端](https://github.com/xitu/gold-miner#后端)、[区块链](https://github.com/xitu/gold-miner#区块链)、[产品](https://github.com/xitu/gold-miner#产品)、[设计](https://github.com/xitu/gold-miner#设计)、[人工智能](https://github.com/xitu/gold-miner#人工智能)等领域，想要查看更多优质译文请持续关注 [掘金翻译计划](https://github.com/xitu/gold-miner)、[官方微博](http://weibo.com/juejinfanyi)、[知乎专栏](https://zhuanlan.zhihu.com/juejinfanyi)。
