学习 DevOps 的先决条件
DevOps 正在席卷全球。让我一步步解释——如今,每家公司都被视为软件公司,而所有软件公司都在寻求自动化。DevOps 正是自动化的基础。软件发展日新月异,从自动驾驶汽车到飞机,一切都由软件管理。软件质量、更快的更新和发布速度是决定公司命运的关键因素,因此 DevOps 已成为一种必然趋势,而非一种转型。这些就是人们想要学习 DevOps 的部分原因。
既然你来到这里,就说明你对学习DevOps感兴趣。好的,系好安全带,让我们来看看在跳入DevOps的海洋之前,哪些内容是重要的,以及需要考虑哪些因素。
基本上,DevOps 是开发和运维两个词/角色的组合,这意味着你需要先了解什么是开发和运维。
什么是发展?
软件开发是指使用特定的编程语言和流程创建软件的过程。它涉及编写程序代码,为软件提供所需的功能和特性。它也可能被称为应用程序开发或软件设计。
什么是运营?
软件行业的运营包括为客户和公司内部提供硬件和软件的管理流程和支持。基础设施管理、质量保证和监控是运营的基本职责。
什么是DevOps?
简而言之,DevOps 是一种源于敏捷和精益实践的方法论,旨在弥合开发团队和运维团队之间的鸿沟,使他们能够协同工作,从而减少这两个团队之间通常可能出现的沟通不畅。沟通不畅会导致混乱,而混乱会影响整个组织的士气和绩效。这就是文化建设开始受到重视的原因。
DevOps 融合了文化、流程和工具,三者相互依存。DevOps 不仅仅是通过自动化来弥合开发和运维之间的鸿沟,更重要的是为组织创造价值。如今,企业面临着更大的压力,需要在不牺牲安全性、质量和可靠性的前提下,加快发展速度,提高敏捷性。
DevOps 的优势
-
提高部署频率
-
有助于加快产品上市速度
-
降低新版本发布失败率
-
代码质量提高
-
加强团队和部门之间的协作
-
缩短维修间隔时间
-
缩短平均恢复时间
DevOps文化
采用 DevOps 文化可以营造一种团结一致、注重成长、关注变革和创新、为参与软件开发流程的所有团队制定一套程序和策略的文化。
对于开发人员来说,更快的部署和反馈至关重要,他们通过持续集成、持续交付和持续部署等流程来实现这一点。而运维团队则更专注于确保网站持续稳定运行,避免停机,他们通常作为面向客户的团队,在代码部署到生产环境后承担着重要的责任。因此,为了减少混乱,DevOps 建议运维团队在所有环节都采用与开发相同的工具——用于集成、测试和部署基础设施代码等。这为运维团队创造了共同的基础,使他们能够更积极地参与部署和故障排除,进一步打破了部门之间的壁垒。
并没有硬性规定你必须在开始学习DevOps课程之前掌握哪些特定知识。但是,事先了解以下几个方面会很有帮助。
学习DevOps的基本前提条件
-
具备Linux/Unix系统概念和管理方面的基本知识
-
熟悉命令行界面
-
了解构建和部署过程的工作原理
-
熟悉文本编辑器
-
使用 VirtualBox 搭建家庭实验室环境
-
VirtualBox 中的网络
-
在 VirtualBox 中设置多个虚拟机
-
Vagrant 的基础知识
-
Linux 网络基础知识
-
了解一些基础脚本编写知识很有帮助。
-
应用程序基础知识 - Java、NodeJS、Python
-
Web 服务器 - Apache HTTPD、G-Unicorn、PM2
-
数据库 - MySQL、MongoDB
了解 DevOps 流程
谈到DevOps,持续集成、持续部署和持续交付这三点至关重要。 图片来源:BMC Software
持续集成
持续集成是一种软件开发方法,开发人员的代码每天会被多次集成。每当开发人员提交代码时,每次更改都会由自动化流水线(服务器)进行验证,并在发现任何错误时提供及时反馈。
持续交付
持续交付是在持续集成之后进行的,它允许每次提交都引入变更,使代码随时可以用于生产环境,从而可以按需部署到生产环境,并成为一项日常活动。代码变更可以包括新功能、错误修复、更新、配置更改等等。这里需要注意的一点是,必须确保安全检查,以便在错误被部署到生产环境之前将其检测出来。
持续部署
持续部署比持续交付更进一步,它允许开发人员对源代码的任何更改自动部署到生产环境,无需开发人员明确批准。 图片来源:Analytics India Magazine
开发生命周期的核心阶段通常包括规划阶段,然后是编码、构建、集成、测试、发布,最后是部署到生产环境。
DevOps 工具

DevOps 工具能够帮助组织实现 DevOps。虽然有很多不同的工具值得了解,但本文将介绍一些软件开发领域中常见的 DevOps 基础工具。
- 计划:JIRA
- 构建:Maven、Gradle、Docker、GitHub、GitLab
- 持续集成:Jenkins、CircleCI、Travis CI
- 发布者:詹金斯,竹子
- 部署平台:Ansible、Kubernetes、Heroku、Amazon Web Services、Google Cloud Platform
- 操作工具:Botmetric、Docker、Ansible、Puppet、Chef
- 监控:Nagios、Splunk
- 持续反馈:Slack
DevOps 已成为软件开发领域的中心议题,并且日新月异。这篇博文篇幅有限,我们无法详尽阐述 DevOps 的方方面面,因为该领域涌现出太多创新。各公司都在尝试各种方法来加速其 DevOps 流程,以期在竞争中脱颖而出。
由于 DevOps 近年来备受重视,许多开发人员、测试工程师以及其他行业的从业人员都想学习 DevOps。DevOps 的确是一个很棒的职业选择;你选择它作为职业道路真是明智之举,我们祝你一切顺利。学习愉快!
我们会手把手地教你入门。
参加我们的新课程“ DevOps 先决条件”学习