:::tips
DevOps方法论的主要来源是Agile, Lean 和TOC, 独创的方法论是持续交付。
:::
DevOps 是一种软件开发方法,涉及持续开发,持续测试,持续集成,部署和监视。这一系列过程跨越了传统上孤立的开发和运营团队,DevOps 试图消除它们之间的障碍。
因此,DevOps 工程师基本上与 Development 和 Operations 团队合作,DevOps 是这两个主要部分之间的链接。
DevOps 包括诸如构建自动化、CI/CD、基础架构即代码等概念,并且有许多工具可以实现这些概念。由于这些工具数量众多,因此可能会造成混乱和压倒性的结果。
最重要的是要了解概念,并为每个类别的学习找一种特定的工具。例如,当你已经知道什么是 CI/CD 并知道如何使用 Jenkins 时,也将很容易学习同类型的其他替代工具。
接下来让就来看看学习 DevOps 需要掌握哪些技能。
作为一名 DevOps 工程师,你不会直接对应用程序进行编程,但是当你与开发团队紧密合作以改善和自动化他们的任务时,你需要了解以下概念:
作为 DevOps 工程师,你负责准备在操作系统上部署应用程序的所需要的基础结构环境。并且由于大多数服务器是 Linux 服务器,因此你需要了解 Linux 操作系统,并善于使用命令行,所以你需要知道:
你还需要了解网络和安全性的基础知识才能配置基础架构,例如:
但是,要在 DevOps 和 IT Operations 之间划清界线,你不是系统管理员。因此,在这里不需要高级知识,理解和了解基本知识就够了。IT 方面是这些 SysAdmins,Networking 或 Security Engineers 人的专长。
随着容器成为新标准,你可能会将应用程序作为容器运行,这意味着你需要大致了解:
在 DevOps 中,所有代码更改(例如开发人员的新功能和错误修复)都应集成到现有应用程序中,并以自动化方式连续地部署到最终用户。因此,建立完整的 CI/CD 管道是 DevOps 工程师的主要任务和职责。
在完成功能或错误修正后,应自动触发在 CI 服务器(例如 Jenkins )上运行的管道,该管道:
因此,你需要在此处学习技能:
当然,可以集成更多的步骤,但是此流程代表 CI/CD 管道的核心,并且是 DevOps 任务和职责的核心。
学习哪个工具?Jenkins 是最受欢迎的人之一。其他:Bamboo,Gitlab,TeamCity,CircleCI,TravisCI。
如今,许多公司正在使用云上的虚拟基础架构,而不是管理自己的基础架构。这些是基础架构即服务(IaaS)平台,可提供一系列服务,例如备份,安全性,负载平衡等。
因此,你需要学习云平台的服务。例如。对于 AWS,你应该了解以下基本知识:
AWS 是功能最强大,使用最广泛的一种,但也是最困难的一种。
学习哪个工具?AWS 是最受欢迎的一种。其他热门:Azure,Google Cloud,阿里云,腾讯云。
如前所述,容器已被广泛使用,在大公司中,成百上千个容器正在多台服务器上运行,这意味着需要以某种方式管理这些容器。
为此目的,有一些容器编排工具,而最受欢迎的是 Kubernetes。因此,你需要学习:
学习哪个工具?Kubernetes - 最受欢迎。
软件投入生产后,对其进行监视以跟踪性能,发现基础结构以及应用程序中的问题非常重要。因此,作为 DevOps 工程师的职责之一是:
学习哪个工具?Prometheus, Grafana...
手动创建和维护基础架构非常耗时且容易出错,尤其是当你需要复制基础架构时,例如用于开发,测试和生产环境。
在 DevOps 中,希望尽可能地自动化,那就是将“基础结构即代码(Infrastructure as Configuration)”引入其中。因此使用 IaC ,我们将使用代码来创建和配置基础结构,你需要了解两种 IaC 方式:
使用这些工具,可以轻松地复制和恢复基础结构。因此,你应该在每个类别中都知道一种工具,以使自己的工作更有效率,并改善与同事的协作。
学习哪个工具?
基础架构设置:Terraform 是最受欢迎的一种。配置管理:Ansible,Puppet,Chef。
作为 DevOps 工程师就常见的工作就是编写脚本和小型的应用程序以自动化任务。为了能够做到这一点,你需要了解一种脚本或编程语言。
这可能是特定于操作系统的脚本语言,例如 bash 或 Powershell。
还需要掌握一种独立于操作系统的语言,例如 Python 或 Go。这些语言功能更强大,更灵活。如果你善于使用其中之一,它将使你在就业市场上更具价值。
学习哪个工具?Python:目前是最需要的一个,它易于学习,易于阅读并且具有许多可用的库。其他:Go,NodeJS,Ruby。
上述所有这些自动化逻辑都作为代码编写,使用版本控制工具(例如Git)来管理这些代码和配置文件。
学习哪个工具?Git - 最受欢迎和广泛使用。