拓展阅读

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 平台是 GitLab 和 GitHub。

你需要学习 Git 命令,比如 git clone、git branch、git 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. 学习监控与可观察性

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

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

最流行的两种工具是 Prometheus 和 Grafana。

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

学习资源:

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

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

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

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

目前市场上最流行的云服务提供商是 AWS、Azure 和 Google Cloud。

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

学习资源:

12. 学习软件工程实践

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

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

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

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

学习资源:

额外资源

工具

DevOps 路线图

书籍

DevOps 作为汉堡包(DaaB)

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

DevOps 作为汉堡包

结语

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

贡献

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

许可证

许可证

作者