2019 DevOps 技术指南

可莉
• 阅读 553

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:

2019 DevOps 技术指南 图片来自 kamranahmedse

现在让我们一步一步浏览 RoadMap,了解在 2019 年成为 DevOps 大师所需的基本技能:

1、编程语言

你们肯定知道以下三种主流编程语言之一,即 Java、Python 或 JavaScript。如果没有,你可以看看下面的课程来学习你选择的语言。我强烈建议你至少学习其中一种。

  • Java

如果你想学习 Java,The Complete Java MasterClass 是一个很棒的课程,最近也针对 Java 10 进行了更新。

2019 DevOps 技术指南

  • Python

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

2019 DevOps 技术指南

  • JavaScript

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

2019 DevOps 技术指南

如果你需要更多的选择并且不介意学习免费资源,你可以随时查看我的免费 JavaPythonJavaScript 课程列表。

2、操作系统

这是 Ops 部分的内容,在更早之前负责了解操作系统和硬件的人员以及系统管理员掌握操作系统即可。但对于 DevOps,现在开发人员也需要了解它们。你至少需要了解路线图中建议的:流程管理、多线程和高并发、Sockets、I/O 管理、虚拟化、内存存储和文件系统。

由于我们大多数人都在 Linux 操作系统上工作,我建议你通过 Udemy 上的 Linux Administration BootCamp 课程来更好地学习和理解 Linux 操作系统。

2019 DevOps 技术指南

更多免费资源可查看 free Linux courses 列表。

3、终端命令

对于 DevOps 人员来说,熟练地掌握常用的、好用的操作系统命令是很重要的,特别是在 Linux 操作系统上工作的研发人员,至少需要知道一些必需的 Linux shell 命令,如 Bash、Ksh、findgrep、awk、sedlsof 以及 nslookup、netstat 等网络命令。如果你认为需要刷新下这些命令和工具,你可以考虑学习 Pluralsight 上的 Linux Command Line Interface (CLI) Fundamentals 课程。

2019 DevOps 技术指南

对初学者和有经验的 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

2019 DevOps 技术指南

5、服务器配置

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

2019 DevOps 技术指南

6、基础设施即为代码

对于 DevOps 工程师来说,这可能是最重要的事情,这也是一个非常广阔的领域。作为DevOps 工程师,你应该了解 DockerKubernetes容器技术;AnsibleChefSaltPuppet 等配置管理工具;Terraform 和 Cloud Formation 等基础设施配置。以下是我推荐的一些相关工具的学习课程。

2019 DevOps 技术指南

2019 DevOps 技术指南

2019 DevOps 技术指南

7、持续集成/交付

对于 DevOps 大师来说,这是另一个非常重要的事情:建立一个持续集成和交付的流水线。CI / CD 领域有很多工具,例如 Jenkins、TeamCity、Drone 等。

但是我强烈建议至少学习 Jenkins,因为它是最广泛使用的,可能是市场上最成熟的 CI / CD 工具。如果你不认识 Jenkins,那么这门课程最好先开始。没有比 Udemy 上经典的 Learn DevOps: CI/CD with Jenkins using Pipelines and Docker 更好的课程。我也从这个课程中学到了大部分的 Jenkins 技能。

课程链接:https://click.linksynergy.com/fs-bin/click?id=JVFxdTr9V80&subid=0&offerid=634352.1&type=10&tmpid=14538&RD_PARM1=https%3A%2F%2Fwww.udemy.com%2Flearn-devops-ci-cd-with-jenkins-using-pipelines-and-docker%2F

2019 DevOps 技术指南

更多 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 。

2019 DevOps 技术指南

更多 AWS 免费学习资源可查看列表 free AWS courses 。

如果你只想从一门课程开始学习 DevOps,我认为 Learn DevOps: CI/CD with Jenkins using Pipelines and Docker 会是最好的开始。

写在最后

原文作者非常详尽地给我们解读了 DevOps 技术的学习路线图,除了作者分享的国外课程、工具,国内也有非常多的学习资源。对英文课程没有太大兴趣的同学,只要了解这个学习思路即可。CODING 也会持续关注并分享 DevOps 领域最新理念与技术,与 DevOps 工程师一起成长。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这