DevOps方法论

:::tips

DevOps方法论的主要来源是Agile, Lean 和TOC, 独创的方法论是持续交付。

:::

DevOps 是一种软件开发方法,涉及持续开发,持续测试,持续集成,部署和监视。这一系列过程跨越了传统上孤立的开发和运营团队,DevOps 试图消除它们之间的障碍。

因此,DevOps 工程师基本上与 Development 和 Operations 团队合作,DevOps 是这两个主要部分之间的链接。

DevOps经典图书

  • 《DevOps实践指南》
  • 《持续交付:发布可靠软件的系统方法》&《持续交付 2.0》
  • 《凤凰项目》
  • 《Effective DevOps》

必备技能

DevOps 包括诸如构建自动化、CI/CD、基础架构即代码等概念,并且有许多工具可以实现这些概念。由于这些工具数量众多,因此可能会造成混乱和压倒性的结果。

最重要的是要了解概念,并为每个类别的学习找一种特定的工具。例如,当你已经知道什么是 CI/CD 并知道如何使用 Jenkins 时,也将很容易学习同类型的其他替代工具。

接下来让就来看看学习 DevOps 需要掌握哪些技能。

1)软件开发的概念

作为一名 DevOps 工程师,你不会直接对应用程序进行编程,但是当你与开发团队紧密合作以改善和自动化他们的任务时,你需要了解以下概念:

  • 开发人员的工作方式
  • 他们正在使用哪个 git 工作流程
  • 如何配置应用程序
  • 自动化测试

2)操作系统

作为 DevOps 工程师,你负责准备在操作系统上部署应用程序的所需要的基础结构环境。并且由于大多数服务器是 Linux 服务器,因此你需要了解 Linux 操作系统,并善于使用命令行,所以你需要知道:

  • 基本的 Shell 命令
  • Linux 文件系统
  • 管理服务器的基础知识
  • SSH 密钥管理
  • 在服务器上安装不同的工具

3)网络与安全

你还需要了解网络和安全性的基础知识才能配置基础架构,例如:

  • 配置防火墙以保护应用程序
  • 了解 IP 地址,端口和 DNS 的工作方式
  • 负载均衡器
  • 代理服务器
  • HTTP/HTTPS

但是,要在 DevOps 和 IT Operations 之间划清界线,你不是系统管理员。因此,在这里不需要高级知识,理解和了解基本知识就够了。IT 方面是这些 SysAdmins,Networking 或 Security Engineers 人的专长。

4)容器化

随着容器成为新标准,你可能会将应用程序作为容器运行,这意味着你需要大致了解:

  • 虚拟化的概念
  • 容器的概念
  • 学习哪个工具?Docker - 当今最受欢迎的容器技术

5)持续集成和部署

在 DevOps 中,所有代码更改(例如开发人员的新功能和错误修复)都应集成到现有应用程序中,并以自动化方式连续地部署到最终用户。因此,建立完整的 CI/CD 管道是 DevOps 工程师的主要任务和职责。

在完成功能或错误修正后,应自动触发在 CI 服务器(例如 Jenkins )上运行的管道,该管道:

  • 运行测试
  • 打包应用程序
  • 构建 Docker 镜像
  • 将 Docker Image 推送到工件存储库,最后
  • 将新版本部署到服务器(可以是开发,测试或生产服务器)

因此,你需要在此处学习技能:

  • 设置 CI/CD 服务器
  • 构建工具和程序包管理器工具以执行测试并打包应用程序
  • 配置工件存储库(例如 Nexus,Artifactory)

当然,可以集成更多的步骤,但是此流程代表 CI/CD 管道的核心,并且是 DevOps 任务和职责的核心。

学习哪个工具?Jenkins 是最受欢迎的人之一。其他:Bamboo,Gitlab,TeamCity,CircleCI,TravisCI。

6)云提供商

如今,许多公司正在使用云上的虚拟基础架构,而不是管理自己的基础架构。这些是基础架构即服务(IaaS)平台,可提供一系列服务,例如备份,安全性,负载平衡等。

因此,你需要学习云平台的服务。例如。对于 AWS,你应该了解以下基本知识:

  • IAM 服务-管理用户和权限
  • VPC 服务-你的专用网络
  • EC2 服务-虚拟服务器
  • AWS 提供了更多的服务,但是你只需要了解你实际需要的服务即可。例如,当 K8s 集群在 AWS 上运行时,你还需要学习 EKS 服务。

AWS 是功能最强大,使用最广泛的一种,但也是最困难的一种。

学习哪个工具?AWS 是最受欢迎的一种。其他热门:Azure,Google Cloud,阿里云,腾讯云。

7)容器编排

如前所述,容器已被广泛使用,在大公司中,成百上千个容器正在多台服务器上运行,这意味着需要以某种方式管理这些容器。

为此目的,有一些容器编排工具,而最受欢迎的是 Kubernetes。因此,你需要学习:

  • Kubernetes 如何工作
  • 管理和管理 Kubernetes 集群
  • 并在其中部署应用程序

学习哪个工具?Kubernetes - 最受欢迎。

8)监视和日志管理

软件投入生产后,对其进行监视以跟踪性能,发现基础结构以及应用程序中的问题非常重要。因此,作为 DevOps 工程师的职责之一是:

  • 设置软件监控
  • 设置基础架构监控,例如用于你的 Kubernetes 集群和底层服务器。

学习哪个工具?Prometheus, Grafana...

9)基础设施即代码

手动创建和维护基础架构非常耗时且容易出错,尤其是当你需要复制基础架构时,例如用于开发,测试和生产环境。

在 DevOps 中,希望尽可能地自动化,那就是将“基础结构即代码(Infrastructure as Configuration)”引入其中。因此使用 IaC ,我们将使用代码来创建和配置基础结构,你需要了解两种 IaC 方式:

  • 基础设施配置
  • 配置管理

使用这些工具,可以轻松地复制和恢复基础结构。因此,你应该在每个类别中都知道一种工具,以使自己的工作更有效率,并改善与同事的协作。

学习哪个工具?

基础架构设置:Terraform 是最受欢迎的一种。配置管理:Ansible,Puppet,Chef。

10)脚本语言

作为 DevOps 工程师就常见的工作就是编写脚本和小型的应用程序以自动化任务。为了能够做到这一点,你需要了解一种脚本或编程语言。

这可能是特定于操作系统的脚本语言,例如 bash 或 Powershell。

还需要掌握一种独立于操作系统的语言,例如 Python 或 Go。这些语言功能更强大,更灵活。如果你善于使用其中之一,它将使你在就业市场上更具价值。

学习哪个工具?Python:目前是最需要的一个,它易于学习,易于阅读并且具有许多可用的库。其他:Go,NodeJS,Ruby。

11)版本控制

上述所有这些自动化逻辑都作为代码编写,使用版本控制工具(例如Git)来管理这些代码和配置文件。

学习哪个工具?Git - 最受欢迎和广泛使用。

网站和博客


想转行DevOps工程师?快来看看DevOps工程师的学习路径,少走弯路的更多相关文章

  1. 最近一些朋友问我,临近快毕业了专业不对口,想转行看到IT行业就业前景不错,但是编程语言众多不了解,不知道哪门语言能够快速入门掌握,短期能让我找到工作

    我做互联网前端后台开发也有四年多了,一路走过来,累并快乐着.快乐比艰辛更多,源自我的兴趣驱动.初中的一个偶然的机会我接触到了计算机,从那个时候就喜欢上开始经常到网吧上网.那个时候我对计算机领域的认识是 ...

  2. 写给想成为前端工程师的同学们  ―前端工程师是做什么的?a

    前端工程师是做什么的? 前端工程师是互联网时代软件产品研发中不可缺少的一种专业研发角色.从狭义上讲,前端工程师使用 HTML.CSS.JavaScript 等专业技能和工具将产品UI设计稿实现成网站产 ...

  3. 2018java平均工资,想转行学java的快点上车

    很多人选择工作的原因很简单:要么有钱,要么自己开心,当然绝大多数人是既没有钱也不开心...(现实就是这么残酷).哪有钱多事少的活,请告诉我,我第一个去!!我想大部分人对java充满好奇的一个原因就是钱 ...

  4. 想转行学Java,却又担心自己半路出家成不了大牛

    想转行学Java,却又担心自己半路出家成不了大牛 很多人看好Java编程的高薪前景,在自己职业生涯迷茫的时候,想转行学Java,却又担心自己半路出家成不了大牛,赚不到钱,本文就为大家分析一下,转行学J ...

  5. 想转行做3D游戏模型,如何快速入行

    随着技术和硬件迭代,3D建模,广泛运用在游戏,影视,动画,VR等领域,而且就业面非常广. 由于3D美术设计师薪资和前景确实都不错,很多同学想进入这个行业,从事相关工作,但是没有一个整体的学习思路和规划 ...

  6. (大数据工程师学习路径)第一步 Linux 基础入门----正则表达式基础

    介绍 虽然我们这一节的标题是正则表达式,但实际这一节只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表达式本身的内容很多,要把 ...

  7. 月薪30-50K的大数据工程师们,他们背后是如何学习的

    ​ 这两天小编去了解了下大数据开发相关职位的薪资,主要有hadoop工程师,数据挖掘工程师.大数据算法工程师等,从平均薪资来看,目前大数据相关岗位的月薪均在2万以上,随着项目经验的增长工资会越来越高. ...

  8. 网络工程师和Linux运维工程师有什么区别?学哪个比较好?

    网络工程师和Linux运维工程师有什么区别?学哪个比较好? 机缘巧合下,我进入了一家从事vpn与系统集成的公司,很感谢公司能留下我这个非网络工程专业的毕业生,从对网络一窍不通,慢慢可以自己独立完成工作 ...

  9. C#.Net全栈工程师之路-学习路径

    C#.Net全栈工程师之路-学习路径 按架构分: C/S架构: B/S架构: Mobile移动开发: 按技术点分: C#编程基础以及OOP面向对象编程: 数据库基础以及高级应用(MYSQL+MSSQL ...

  10. 想转行做web前端工程师,必学这6大技能

    web前端工程师是近几年才发展出来的新兴职业,也是目前火爆且高薪的职业.大需求的市场环境下,出现了越来越多的人群转行做web前端工程师,如设计师.后台程序员.网虫.大学其他专业.策划.编辑等等. 要学 ...

随机推荐

  1. 【Python入门教程】Python常用表格函数&操作(xlrd、xlwt、openpyxl、xlwings)

    ​         在我们使用Python时,避免不了与Excel打交道.同样Python的三方库和代码的简洁性也为我们处理大数据提供了便利.今天给大家介绍一下常用的处理表格的函数,同时还有一些常用的 ...

  2. 「有问必答」Go如何优雅的对时间进行格式化?

    昨天 交流群 关于「Go如何优雅的对时间进行格式化?」展开了讨论: 咋搞捏? 如何在不循环的情况下,把列表数据结构体的时间修改为咱们习惯的格式,而不是UTC模式 我们要实现的效果如下: created ...

  3. 一种实现Spring动态数据源切换的方法

    1 目标 不在现有查询代码逻辑上做任何改动,实现dao维度的数据源切换(即表维度) 2 使用场景 节约bdp的集群资源.接入新的宽表时,通常uat验证后就会停止集群释放资源,在对应的查询服务器uat环 ...

  4. Kubernetes(k8s)服务账号Service Accounts

    目录 一.系统环境 二.前言 三.服务账号Service Accounts简介 四.用户账号与服务账号区别 五.服务账号(Service Accounts) 5.1 创建服务账号(Service Ac ...

  5. google colab使用体验

    复现的TRSSL 的代码似乎是python3.8的,在本地跑电脑带不起来,即时把处理图形数改为1 但是colab用3.8不太好下载包, 因此直接上了3.9 除了一些库没有意外,遇到了一点小问题: Ca ...

  6. Oracle sql 错误 : ORA-01861: 文字与格式字符串不匹配和日期与字符串互转问题解决

    正确的要这样的: public int update(String ceratedate); <update id="update" parameterType=" ...

  7. Python 引用问题 - ImportError: attempted relative import with no known parent package

    问题描述 近日在尝试引用其他文件的代码时,遇到了错误: ImportError: attempted relative import with no known parent package. 问题大 ...

  8. Codeforces Round #771 (Div. 2) A-E

    A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; int p[507]; bool solv ...

  9. 了解前端中的BFC(块级格式化上下文)

    BFC(块级格式化上下文) 什么是BFC 指的是一个块级渲染作用域,该区域内拥有一套完整的规则来约束块级盒子的布局,且与区域外部无关. 为什么要使用BFC 当一个盒子不设置高度,当其中的子元素都浮动时 ...

  10. 调用内部或私有方法的N种方法

    非公开的类型或者方法被"隐藏"在程序集内部,本就不希望从外部访问,但是有时候调用一个内部或者私有方法可能是唯一的"救命稻草",这篇文章列出了几种具体的实现方式. ...