2019 DevOps 技术指南

原文链接:https://hackernoon.com/the-2018-devops-roadmap-31588d8670cb
原文作者:javinpaul
翻译君:CODING 戴维奥普斯
写在前面
我们在推进国内研发团队 DevOps 落地的过程中,发现不少研发组织在积极寻求 DevOps 技能方面的提升。今天翻译的这篇深受欢迎的 DevOps 技术雷达来自一位国外的 Java 博主,他也是一位非常热爱学习的开发者,接下来让我们马上进入到正文。
DevOps 技术指南
DevOps 目前非常火热,我认识的大多数朋友、同事和高级开发人员都在努力成为 DevOps 工程师,以及研发组织中的 DevOps 佼佼者。虽然我承认 DevOps 的好处,它与改进软件开发和部署过程直接相关,但从我有限的经验来看,这不是一件容易的事。在如此多的工具和实践中选择正确的学习路径是非常困难的。作为一名 Java 博主,许多读者经常问我:
- 如何成为一名 DevOps 工程师?
- 应该学习哪些工具?
- 应该遵循哪些实践?
- Maven 和 Jenkins 是不是 DevOps 工程师的必备技能?
- Docker 和 Kubernetes 呢?
- 基础设施自动化是不是 DevOps 的组成部分?
- 是否应该学习 Chef、Puppet 或 Ansible?
以上只是读者经常会提到的一部分问题,我努力用我浅薄的经验来回答那些问题,但我不会只是用简单粗暴和重复使用的方式把那些答案整合后丢给大家。今天我将分享一个很不错的资源 —— 2019 DevOps RoadMap,它将帮助你成为梦寐以求的 DevOps 工程师。
昨天我在网上冲浪,偶遇了 Kamranahmedse 这个优秀的 GitHub 页面,上面有不少对立志成为前端开发人员、后端开发人员、全栈 Web 开发人员、DevOps 工程师的读者都很有用的路线图。这个 RoadMap 在任何意义上都很有价值,因为它不仅突出了 DevOps 工程师的角色,还讲述了覆盖该领域需要学习的工具和技术。最重要的是,它在视觉上令人赏心悦目(难道你不喜欢黄色和奶油色的蓝线吗?),所以你可以打印出来并粘在桌子上以便参考。
虽然路线图很好,它告诉了你要学什么,但它没有告诉你如何学习和在哪里学习。为了补充路线图,我分享了一些有用的免费和付费在线课程,以便你可以学习和改进你想要掌握的工具或领域。
话不多说,以下就是我所说的 DevOps RoadMap:

图片来自 kamranahmedse
现在让我们一步一步浏览 RoadMap,了解在 2019 年成为 DevOps 大师所需的基本技能:
1、编程语言
你们肯定知道以下三种主流编程语言之一,即 Java、Python 或 JavaScript。如果没有,你可以看看下面的课程来学习你选择的语言。我强烈建议你至少学习其中一种。
- Java
如果你想学习 Java,The Complete Java MasterClass 是一个很棒的课程,最近也针对 Java 10 进行了更新。

- Python
如果你想学习 Python,那么 The Complete Python BootCamp 是我最喜欢的资源,它将教你 Python 3,这是 Python 最受欢迎的版本。

- JavaScript
如果你想学习 JavaScript,那么你不应该错过 Mosh Hamdani 在 Udemy 上的 JavaScript Basics for Beginners 。

如果你需要更多的选择并且不介意学习免费资源,你可以随时查看我的免费 Java,Python 和 JavaScript 课程列表。
2、操作系统
这是 Ops 部分的内容,在更早之前负责了解操作系统和硬件的人员以及系统管理员掌握操作系统即可。但对于 DevOps,现在开发人员也需要了解它们。你至少需要了解路线图中建议的:流程管理、多线程和高并发、Sockets、I/O 管理、虚拟化、内存存储和文件系统。
由于我们大多数人都在 Linux 操作系统上工作,我建议你通过 Udemy 上的 Linux Administration BootCamp 课程来更好地学习和理解 Linux 操作系统。

更多免费资源可查看 free Linux courses 列表。
3、终端命令
对于 DevOps 人员来说,熟练地掌握常用的、好用的操作系统命令是很重要的,特别是在 Linux 操作系统上工作的研发人员,至少需要知道一些必需的 Linux shell 命令,如 Bash、Ksh、find、grep、awk、sed、lsof 以及 nslookup、netstat 等网络命令。如果你认为需要刷新下这些命令和工具,你可以考虑学习 Pluralsight 上的 Linux Command Line Interface (CLI) Fundamentals 课程。

对初学者和有经验的 Linux 用户来说,这是一个很好的复习。你需要一个 Pluralsight 会员才能访问该课程,每月花费约 29 美元或每年 299 美元,但我觉得物有所值。Pluralsight 就像开发者的 Netflix,它拥有超过 6000 个最新技术的高质量课程,可以随时随地学习,我主要是在旅行和上下班途中学习。如果你需要更多的选择并希望成为 shell 脚本大师,可以查看我的 best courses to learn shell scripting。
4、网络和安全
信息孤岛的日子已经一去不复返了。当今世界,万物都连接在了一起,这也使得网络和安全变得非常重要。为了成为优秀的 DevOps 工程师,你必须了解基本的网络和安全概念,如 DNS、OSI 模型、HTTP、HTTPS、FTP、SSL、TLS 等。为了刷新概念认知,你可以查看在 Ed Liberman 在 Pluralsight 上的 TCP/IP and Networking Fundamentals for IT Pros 课程。
如果你需要更多选择,还可以查看这些 Udemy 课程,网络方面例如 The Complete Networking Fundamentals 是一个很好的课程,安全方面你还可以学习 The Complete Cyber Security Course: Network Security。

5、服务器配置
作为 DevOps 大师,你应该知道你的机器中设置了什么以及如何设置它,只有这样你才可以思考如何去自动化操控它。通常 DevOps 工程师应该知道如何设置 IIS,Apache Tomcat 等 Web 服务器;还应该了解缓存服务器,负载均衡器,反向代理和防火墙等。如果你是 Web 开发领域的新手,我建议你查看 Colt Steele 的 Web Developer Bootcamp 课程。

6、基础设施即为代码
对于 DevOps 工程师来说,这可能是最重要的事情,这也是一个非常广阔的领域。作为DevOps 工程师,你应该了解 Docker、Kubernetes 等容器技术;Ansible,Chef,Salt 和 Puppet 等配置管理工具;Terraform 和 Cloud Formation 等基础设施配置。以下是我推荐的一些相关工具的学习课程。
- 如果你想学习 Docker,那么在 Udemy 上的Docker Mastery: The Complete Toolset 是最好的课程。它全面覆盖了 DevOps 工程师需要的所有工具。

- 如果你想学习 Kubernetes,我建议你加入 Learn DevOps: The Complete Kubernetes course 课程。它将教你如何构建、部署和管理 Kubernetes。

- 如果你想学习 Chef,目前最好的 Chef 课程可能是 Udemy 上的 Chef Fundamentals: A Recipe for Automating Infrastructure 课程。

- 更多 Docker 课程选择,你可以浏览 10 essential courses for DevOps Engineer列表。
7、持续集成/交付
对于 DevOps 大师来说,这是另一个非常重要的事情:建立一个持续集成和交付的流水线。CI / CD 领域有很多工具,例如 Jenkins、TeamCity、Drone 等。
但是我强烈建议至少学习 Jenkins,因为它是最广泛使用的,可能是市场上最成熟的 CI / CD 工具。如果你不认识 Jenkins,那么这门课程最好先开始。没有比 Udemy 上经典的 Learn DevOps: CI/CD with Jenkins using Pipelines and Docker 更好的课程。我也从这个课程中学到了大部分的 Jenkins 技能。

更多 Java 开发人员免费资源可查看 6 free Jenkins and Maven courses 列表。
资源链接:http://www.java67.com/2018/02/6-free-maven-and-jenkins-online-courses-for-java-developers.html
8、监控软件和基础设施
除了配置和部署之外,监控是 DevOps 的另一个重要方面,这就是 DevOps 工程师了解基础设施和应用程序监控的重要原因。
这个领域有很多工具,如 Nagios、Icing、Datadog,Zabbix、Monit、AppDynanic、New Relic 等。你可以根据需要选择其中一些来学习。
9、云提供商
云是下一个重要的事情,迟早你得将应用程序迁移到云,因此对于 DevOps 工程师来说了解一些流行的云提供商及其基础知识是很重要的。
虽然 AWS 显然是云计算领域的领导者,但 Google Cloud 和 Azure 正在慢慢赶上,还有一些其它参与者,如 Heroku、Cloud Foundry 和 Digital Ocean。
我强烈建议学习 Udemy 上经典的完整入门课程:AWS Serverless APIs & Apps — A Complete Introduction 。

更多 AWS 免费学习资源可查看列表 free AWS courses 。
如果你只想从一门课程开始学习 DevOps,我认为 Learn DevOps: CI/CD with Jenkins using Pipelines and Docker 会是最好的开始。
写在最后
原文作者非常详尽地给我们解读了 DevOps 技术的学习路线图,除了作者分享的国外课程、工具,国内也有非常多的学习资源。对英文课程没有太大兴趣的同学,只要了解这个学习思路即可。CODING 也会持续关注并分享 DevOps 领域最新理念与技术,与 DevOps 工程师一起成长。
2019 DevOps 技术指南的更多相关文章
- 基于微服务的DevOps落地指南 交付效率提升40%
基于微服务的DevOps落地指南 交付效率提升40% 2015-2016年,珍爱线下门店已新增覆盖城市9个,与此同时,CRM系统大小故障却发生了数十起... ... 珍爱网是以“网络征选+人工红娘”模 ...
- DOIS 2019 DevOps国际峰会北京站来袭~
DevOps 国际峰会是国内唯一的国际性 DevOps 技术峰会,由 OSCAR 联盟指导.DevOps 时代社区与高效运维社区联合主办,共邀全球80余名顶级专家畅谈 DevOps 体系与方法.过程与 ...
- Go 开发关键技术指南 | 为什么你要选择 GO?(内含超全知识大图)
作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,回复 Go 即可查看清晰知识大图! 导读:从问题本身出发,不局限于 Go 语言,探讨服务器中常常遇到的 ...
- Go 开发关键技术指南 | Go 面向失败编程 (内含超全知识大图)
作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,回复 Go 即可查看清晰知识大图! 导读:从问题本身出发,不局限于 Go 语言,探讨服务器中常常遇到的 ...
- 阿里巴巴如何进行测试提效 | 阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
- 什么是以特性为核心的持续交付|阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
- 阿里巴巴基于应用和变更的交付模式|阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
- 业务驱动的全景监控体系在阿里的应用 | 阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
- 阿里巴巴发布最佳实践 | 阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
随机推荐
- [译]C#8.0中一个使接口更加灵活的新特性-默认接口实现
9月份的时候,微软宣布正式发布C#8.0,作为.NET Core 3.0发行版的一部分.C#8.0的新特性之一就是默认接口实现.在本文中,我们将一起来聊聊默认接口实现. 众所周知,对现有应用程序的接口 ...
- ios instancetype与id区别
我们都知道未知类型的的对象可以用id关键字表示,那为什么还会再有一个instancetype呢? instancetype能返回相关联的类型(使那些非关联返回类型的方法返回所在类的类型):而id 返回 ...
- go-channel处理高并发请求
目录 go-channel处理高并发请求 一.Channel简介 二.处理包并发请求 三.测试 1.测试工具 2.测试结果 go-channel处理高并发请求 最近看了一篇文章讲解怎样使用go-cha ...
- Java修炼——文件字节输入输出流复制和缓冲流复制
一:文件字节输入输出流复制 首先明确数据源和目的文件,然后就是"中转站",最后就是关闭 package com.bjsxt.ioproject; import java.io.Fi ...
- 基于leaflet的标绘功能(一)--可调整的圆
标绘功能是指在电子地图上可以标注点.线.面.复杂多边形等图形.主要操作包括上图.调整(大小.方向.位置).网络存储等.根据具体的业务场景,也可以做到协同标绘等特色功能.其中,要求每个图形有若干关键点控 ...
- ThreadLocal的进化——TransmittableThreadLocal
上一篇文章中,我们谈到了 InheritableThreadLocal,它解决了 ThreadLocal 针对父子线程无法共享上下文的问题.但我们可能听说过阿里的开源产品TransmittableTh ...
- Keras开发一个神经网络
关于Keras:Keras是一个高级神经网络API,用Python编写,能够在TensorFlow,CNTK或Theano之上运行. 使用一下命令安装: pip install keras 在Kera ...
- 【数据结构06】二叉平衡树(AVL树)
目录 一.平衡二叉树定义 二.这货还是不是平衡二叉树? 三.平衡因子 四.如何保持平衡二叉树平衡? 五.平衡二叉树插入节点的四种情况 六.平衡二叉树操作的代码实现 七.AVL树总结 @ 一.平衡二叉树 ...
- 【Canvas】311- 解决 canvas 在高清屏中绘制模糊的问题
点击上方"前端自习课"关注,学习起来~ 一.问题分析 使用 canvas 绘制图片或者是文字在 Retina 屏中会非常模糊.如图: 因为 canvas 不是矢量图,而是像图片一样 ...
- static介绍、内部类、final、权限修饰符的作用范围
static 关键字:(可用于修饰方法.变量) static 特点: static是静态修饰符,一般修饰成员变量.被static修饰的属于全局共享.被static修饰的成员属于 ...