拓展阅读

Devops-01-devops 是什么?

Devops-02-Jpom 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件

代码质量管理 SonarQube-01-入门介绍

项目管理平台-01-jira 入门介绍 缺陷跟踪管理系统,为针对缺陷管理、任务追踪和项目管理的商业性应用软件

项目管理平台-01-Phabricator 入门介绍 一套集成的强大工具,帮助公司构建更高质量的软件

持续集成平台 01 jenkins 入门介绍

持续集成平台 02 jenkins plugin 插件

DevOps

1、PLAN 开发团队根据客户的目标指定开发计划

2、CODE 根据”PLAN(开发计划)” 开始编写代码,需要将不同版本(“稳定”/”最新”)的代码存储在一个库中

3、Build 代码编写完成后,需要将代码构建打包并且运行

4、Test 成功构建项目后,需要测试代码是否存在BUG或者错误

5、DEPLOY 代码经过”手动调试”和”自动化测试”后,认为可以部署了,选一个稳定版本部署

6、OPERATE 运维团队将代码部署到生产环境中

7、MONITOR 项目部署上线后,需要持续的监控产品

8、INTEGRATE 然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DEVOPS的核心(ci/cd)

DevOps 路线图 2024

这是成为 DevOps 工程师的逐步指南,附带相关学习资源的链接。

如果你想了解更多关于 DevOps 的内容,务必订阅 我的新闻通讯

支持我的工作

如果你觉得这个资源库对你有帮助,可以通过 Patreon 支持我:

Patreon

免责声明

这个路线图的目的是让你了解 DevOps 的整体发展方向。如果你不确定接下来应该学什么,它将为你提供一些指引,而不是鼓励你选择当前的流行或趋势工具。你应该理解为什么某个工具在某些情况下比其他工具更适用,并且记住,流行和趋势不总是意味着最适合该工作的工具。

给个星星!:star:

如果你喜欢或者正在使用这个项目来学习或开始你的解决方案,请给它点个星星,谢谢!

DevOps 路线图

PDF 版本

下载 PDF 版本

目录

DevOps 工程师学习资源(大多免费)

1. GIT

你所有的资源(文件)将保存在 Git 仓库中。这些文件不仅是 应用程序代码,也是 基础设施即代码

Git 是一个免费的源代码管理工具,用于追踪源代码中的更改,允许多个开发者协同工作进行非线性开发。

最受欢迎的两个 Git 平台是 GitLabGitHub

你需要学习 Git 命令,比如 git clonegit branchgit merge,以及如何通过拉取请求协作开发项目。

学习资源:

2. 学习一门编程语言

作为一名工程师,建议至少掌握一种编程语言,用于编写 自动化脚本

一些适合 DevOps 的流行编程语言包括 Python、Go 和 JavaScript

Python 是一门多范式语言。作为一种解释型语言,代码在编写后会立即执行,其语法允许以不同方式编写代码。

Python 常常被推荐作为新手程序员的第一门语言,因为它注重可读性、一致性和易用性。

在这里,你需要学习编程语言的基本概念,如语法、if/else 语句、循环、数据结构等。

学习资源:

3. 学习 Linux 与脚本编程

操作系统作为计算机用户与硬件之间的桥梁,旨在提供一个用户可以方便有效地运行程序的环境。

由于大多数服务器使用 Linux 操作系统,你需要熟悉 Linux 及其命令行界面(CLI)。

一个易于入门的发行版是 Ubuntu

此外,你还需要学习 脚本编程,以便自动化开发和运维任务。

在这里,你可以学习特定于操作系统的语言,如 Bash 或 Powershell,也可以选择跨平台的语言,如 Python 或 Go。

学习资源:

4. 学习网络与安全

网络协议 是一套确定数据如何在同一网络中不同设备之间传输的规则。它使连接的设备能够相互通信,而不管它们的内部流程、结构或设计有何不同。

在这一部分,你需要了解网络是如何工作的,如何配置 防火墙,理解 DNS 的工作原理,OSI 模型,IP 地址,端口等。

学习资源:

5. 学习服务器管理

服务器管理包括所有必需的基础设施监控和维护,确保服务器能够可靠运行并保持最佳性能。有效的服务器管理策略的主要目标是:

  • 最小化服务器的慢响应和停机时间,同时最大化可靠性。
  • 构建安全的服务器环境。
  • 随着时间推移,根据组织的需求扩展服务器及相关操作。

在这一部分,你需要了解 正向代理与反向代理缓存服务器,以及如何操作 Web 服务器,如 Nginx、Apache 或 IIS。

学习资源:

6. 学习容器

容器 是一种标准的软件单元,打包了代码及其所有依赖,使得应用程序可以在不同的计算环境中快速、可靠地运行。

Docker 是目前最流行的容器技术。

Docker 容器镜像是一个轻量级、独立的可执行软件包,包含了运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。

你需要了解如何运行容器,Docker 网络、卷、Dockerfile 以及如何使用 Docker-Compose 启动多个容器。

学习资源:

7. 学习容器编排

容器编排 自动化 容器的部署、管理、扩展和网络配置。

容器编排可用于任何使用容器的环境。它可以帮助你在不同的环境中部署相同的应用程序,而无需重新设计它。而且,容器中的微服务使得编排服务变得更容易,包括存储、网络和安全。

你需要了解 Kubernetes 的工作原理,以及如何管理 Kubernetes 集群并在其上部署应用程序。

学习资源:

8. 学习基础设施即代码(IaC)

IaC,即基础设施即代码,指的是使用技术和工具来定义基础设施,通常采用 YAML 或 JSON 等标记语言。基础设施即代码使工程师能够自动化环境的设置和拆除,通过按需提供黄金复制环境,加速并降低部署风险。

Terraform 是最流行的基础设施配置工具,还有其他工具,如 Ansible、Chef、Puppet 和 Vagrant。

你需要了解如何进行 基础设施配置配置管理

学习资源:

9. 学习 CI/CD

持续集成/持续部署 (CI/CD) 是一种通过将 自动化 引入到应用程序开发的各个阶段,从而频繁地向客户交付应用程序的方法。CI/CD 是解决集成新代码可能对开发和运维团队造成问题的解决方案。

CI/CD 引入了持续的自动化和 持续的 监控,贯穿于应用程序的整个生命周期,从集成和测试阶段到交付和部署阶段。这些连接的实践通常被称为 “CI/CD 管道“,并由开发和运维团队支持。

CI/CD 管道包含 不同阶段,例如:构建、测试和部署,但可能还包括更多的活动:

  • 从版本控制中检查代码并进行构建
  • 设置不同类型的批准阶段
  • 管理环境变量
  • 重启服务
  • 执行测试
  • 以及更多…

你需要了解如何设置 CI/CD 服务器,集成代码并自动触发管道,以及构建和包管理工具。

一些 流行的 CI/CD 工具 包括 Jenkins、TeamCity、CircleCI、Bamboo、GitLab 和 Azure DevOps。

学习资源:

10. 学习监控与可观察性

监控涉及从规划、开发、集成与测试、部署到运营的整个开发过程。它提供了对生产环境中应用程序、服务和基础设施状态的完整和 实时的视图

当我们的软件处于 生产环境 中时,尤其需要跟踪我们基础设施和应用程序中的各种问题。

最流行的两种工具是 PrometheusGrafana

你需要了解如何设置监控并可视化数据。

学习资源:

11. 学习一个云服务提供商

云服务提供商提供了一层 API 用于抽象基础设施,并根据安全性和计费边界进行资源配置。

虽然云服务运行在数据中心的服务器上,但通过巧妙的抽象,使得与单一 “平台” 或大型应用程序的交互成为可能。

通过云服务提供商快速配置、管理和保护资源的能力,是现代 DevOps 成功和复杂性的关键。

目前市场上最流行的云服务提供商是 AWSAzureGoogle Cloud

你需要了解如何管理用户与管理、网络、虚拟服务器等。

学习资源:

12. 学习软件工程实践

作为一名 DevOps 工程师,你可能会与其他开发人员一起工作在敏捷环境中,例如 Scrum

因此,了解 SDLC 的不同部分,以及其中使用的工具非常重要。

此外,了解 自动化测试 的工作原理也是一个好主意,因为你需要在 CI/CD 中设置它。

你需要了解 ScrumSDLC 的所有阶段,以及 自动化测试 的工作原理等。

学习资源:

额外资源

工具

DevOps 路线图

书籍

DevOps 作为汉堡包(DaaB)

我们甚至可以将这个路线图展示为一个汉堡包:)

DevOps 作为汉堡包

结语

如果您认为路线图可以改进,请提交 PR 进行更新,并提交任何问题。同时,我会继续改进此路线图,您可能希望将此仓库收藏,以便以后访问。

贡献

  • 提交带有改进的 Pull Request
  • 在问题中讨论想法
  • 扩散消息

许可证

许可证

作者