成为 DevOps 工程师所需的一切
已发表: 2022-01-0220 年前,“DevOps 工程师”这个词是闻所未闻的。
如今,DevOps 工程师是将 IT 部门团结在一起的粘合剂——使他们能够更快、更高效地交付项目。
这种增长体现在金钱上。 虽然 2019 年 DevOps 市场的价值仅为 40 亿美元,但预计到 2026 年将增长到 170 亿美元。自然,全球对 DevOps 工程师的需求正在迅速增长。
如果您曾经想知道 DevOps 工程师的工作,那么这篇文章就是为您准备的。
继续阅读,您将了解成为 DevOps 工程师所需了解的一切,包括您需要哪些技能、您作为 DevOps 工程师的职责,以及您在新职位上可以期望获得的收入。
让我们潜入吧!
什么是 DevOps?
DevOps 是管理软件开发和 IT 项目的实践、工具和方法的集合。
“DevOps”一词来自“开发”和“运营”这两个词。 Patrick Debois 最初将 DevOps 命名为 2009 年 DevOps Days 会议。 在 DevOps Days 上,Debois 将 DevOps 作为一种替代方法展示,它通过仔细管理和持续交付帮助开发人员更快地交付项目。
会议结束后,DevOps 开始在全球范围内流行起来。 2013 年,DevOps 出现在“凤凰计划”(由 George Spafford、Kevin Behr 和 Gene Kim 撰写)中。 IT 经理 Bill 使用 DevOps 完成了书中 90 天的一个大项目。
的更多信息
什么是 DevOps 工程师?
DevOps 工程师是一名 IT 专业人员,他与软件开发人员、IT 运营人员、系统用户和管理人员合作,以优化新更新和程序的推出。
DevOps 工程师本质上是其 IT 部门的骨干——快速创建集成的、用户友好的系统。
聘请 DevOps 工程师的好处
聘请 DevOps 专家有很多好处:
- 帮助企业更好地集成其 IT 系统,使其更加用户友好
- 通过简化开发流程帮助开发人员更快地发布系统项目
- 实施有助于开发人员提高工作质量的 DevOps 工具
- 自动化重复的内部流程
- 帮助设计网络安全系统
- 实施 DevOps 实践,例如持续集成/持续交付 (CI/CD)
Atlassian 的 2020 年 DevOps 趋势报告的研究还表明:
- 61% 实施 DevOps 的受访企业认为它有助于产生“更高质量的可交付成果”
- 49% 实施 DevOps 的受访公司认为它提高了部署频率
- 99% 的受访公司认为 DevOps “对其组织产生了积极影响”
DevOps 工程师做什么的?
要了解 DevOps 工程师的工作,您需要了解系统开发生命周期 (SDLC)。
SDLC 包括六个开发阶段,包括:
- 规划:当开发人员概述项目的范围和要求时
- 分析:当开发人员研究和分析需求以将它们实现到系统中时
- 设计:当开发人员设计项目的架构时
- 实施:当开发者构建系统时
- 测试:当开发人员测试系统代码并解决错误时
- 部署和维护:当开发人员发布系统并进行维护以保持系统平稳运行时
SDLC 有几种方法,包括瀑布和敏捷方法。 在瀑布方法中,人们依次完成 SDLC 从规划到部署和维护的工作。 在敏捷方法中,人们不断地通过 SDLC 工作。
瀑布和敏捷方法如下所示:
DevOps 部分基于敏捷开发方法。 具体来说,DevOps 工程师实施称为 DevOps 生命周期的 SDLC 版本。 与敏捷方法一样,DevOps 生命周期在以下阶段循环并不断重复:
- 规划
- 持续反馈
- 手术
- 持续集成和持续部署
- 建造
DevOps 生命周期如下所示:
DevOps 工程师还遵循持续集成和持续交付 (CI/CD) 原则。
持续集成是不断将代码更改添加到代码存储库中的做法(本质上是在编写代码时对其进行编译)。 持续交付是一种自动且一致地为部署准备代码更改的实践(不断地向用户推送新功能、错误修复和更新,而不是一次大更新)。
DevOps 工程师的职责是什么?
每个 DevOps 工程师的日常工作生活都是不同的,因为每个开发人员都在为具有不同 DevOps 方法的公司开发独特的项目。 但是,大多数 DevOps 工程师都有一些关键职责。 这些包括:
项目管理
DevOps 工程师经常同时监督和管理多个 IT 项目。 在实践中,这意味着他们安排和召开会议、设定截止日期、与团队成员签到、委派工作、评估工作、指导队友并就项目决策提供建议。
在设计系统时,DevOps 工程师还会与用户、管理层和开发人员保持联系。
管理系统安全
DevOps 工程师通过设计网络安全系统、更新和实践来优化其业务的 IT 基础架构的安全性。 虽然所有 DevOps 工程师都在日常工作中考虑安全性,但一些 DevOps 工程师(称为 SecDevOps 工程师)全职专注于系统安全。
改善 IT 基础架构
DevOps 工程师寻找 IT 基础架构中的弱点并努力改进它们。 具体来说,他们创建解决方案来帮助开发人员更快地工作、发现程序缺陷或围绕用户反馈设计更新。
由于 DevOps 工程师专注于 CI/CD 方法,他们始终对 IT 基础架构进行细微改进。
自动化重复任务
DevOps 工程师减少了新系统或更新所需的重复性任务。 例如,DevOps 工程师可能会设计一个软件插件来帮助开发人员更快地编写代码并减少错误。
需要注意的是,DevOps 工程师并没有试图让开发人员自动化失业。 他们只是通过实施更简单、更快速的开发解决方案来提高开发人员的效率。
性能基准测试
DevOps 工程师通过基准测试跟踪 IT 基础架构的日常运行。 基准测试帮助他们识别系统中效率低下的区域,并在潜在问题出现之前缓解它们。
每个 DevOps 工程师使用的基准测试取决于组织和项目,尽管他们通常使用遵循七项基准测试原则的测试。
- 关联
- 代表性
- 公平
- 重复性
- 成本效益
- 可扩展性
- 透明度
优化发布周期
DevOps 工程师通过减少项目或更新所需的时间和资源来优化系统发布周期。 DevOps 工程师可以通过多种方式改进发布周期,包括消除时间消耗、确定每个版本的关键组件的优先级,或者引入新的软件和工具。
监控和报告错误
最后,DevOps 工程师不断跟踪软件和系统,以帮助快速解决系统错误。 DevOps 工程师特别关注减少检测到错误(即检测时间或 TTD)和修复错误(即最小化时间或 TTM)之间的时间长度。 虽然一些 DevOps 工程师手动解决系统错误,但其他人将其留给全栈开发人员。
成为 DevOps 工程师需要具备哪些技能?
由于 DevOps 工程师在工作中肩负着不同的职责,因此您需要多种不同的技能才能成为其中的一员。 本节将概述其中一些关键技能。
使用自动化工具的经验
首先,您需要知道如何使用自动化工具。 自动化工具允许您将重复功能外包给自动化程序。 其中两个自动化程序包括:
阿特拉斯竹
Atlassian Bamboo 是一个集成和 CI 工具,允许开发人员自动化构建和部署过程。 它是一个开源程序,适用于所有编程语言,提供预构建、代码测试、报告工具和部署工具。 该工具还与 Jira、BitBucket 和 Git(以及其他)等其他程序集成。 Atlassian 提供免费和付费版本,具体取决于您的团队规模和要求。
詹金斯
Jenkins 是一个免费的自动化服务器,可帮助开发人员通过插件自动化系统构建部署。 Jenkins 提供超过 1,800 个社区贡献的插件并且是开源的(因此您可以开发和使用您的自定义插件)。 Jenkins 还与 Git 等工具集成。
版本控制系统经验
作为 DevOps 工程师,您还需要熟悉版本控制系统 (VCS)。 这些工具可帮助开发人员和 DevOps 工程师跟踪其源代码存储库的更新。 当多人同时添加代码时,它们还可以解决冲突。
如果您来自软件开发人员背景,您将已经知道如何使用流行的 VCS 工具,例如 Git。 Git 是一个免费的开源工具,可与 GitHub 和 BitBucket 等存储库托管工具集成。
使用存储库托管工具的经验
作为开发团队的一员,您将了解作为 DevOps 工程师如何使用存储库托管工具。 顾名思义,存储库托管工具在云中安全地托管代码。 这些工具还使开发人员可以访问预先编写的代码,以加快软件开发过程。
作为 DevOps 工程师,您需要熟悉三个重要的托管工具。 这些包括:
GitHub
GitHub 是一项基于云的托管服务,被 65 多万开发人员、3 多万个组织和 72% 的世界财富 500 强公司使用。 GitHub 自 2008 年以来一直存在,并提供免费和付费版本。 微软目前拥有 GitHub。
GitLab
GitLab 是 GitHub 的替代品,具有持续集成、安全性和项目管理工具等 DevOps 功能。 GitLab 提供免费和付费计划,并与 Git 集成。 尽管名称相似,但 GitLab 和 GitHub 之间没有从属关系。
Atlassian BitBucket
BitBucket 是专为开发团队设计的托管服务。 它与 Git 和 Jira 和 Trello 等项目管理工具集成。 如果您有五个或更少的用户,您可以通过其免费计划使用 BitBucket。
使用配置管理工具的经验
作为 DevOps 工程师,您还需要熟悉配置管理工具。 这些工具可帮助 IT 专业人员一致地配置不同的系统或网络元素。 它们还可以帮助开发人员减少部署新系统的时间。
DevOps 工程师使用两种流行的配置管理工具。 这些包括:
木偶
Puppet 早于 DevOps,因为 Puppet Labs Limited 于 2005 年首次发布它。尽管年代久远,Puppet 仍然是当今最好的配置管理工具之一,因为它允许开发人员为其系统设置所需的状态。 Puppet 然后将系统配置为自动进入该状态。
厨师
Chef 是另一个开源配置管理工具。 Chef 是围绕作为其运营中心的“Chef Server”构建的。 Chef 服务器监督和管理网络上的 Chef 工作站和 Chef 节点。 与 Puppet 一样,Chef 允许开发人员以“食谱”的形式为其系统设置所需的状态。 Facebook、IBM 和乐天都使用 Chef。
使用监控软件的经验
由于监控是 DevOps 工程师工作的重要组成部分,因此 DevOps 工程师需要熟悉监控软件。 监控软件允许您监视基础设施是否存在任何潜在问题。
虽然每个组织都有自己的监控方法,但您可以使用以下监控工具:
纳吉奥斯
Nagios 是 2002 年发布的较旧的开源 DevOps 工具。Nagios 在后台监视您的基础架构,并在怀疑存在问题时提醒您。 目前有超过 9,000 名客户使用 Nagios 进行服务器和应用程序监控。
射线枪
Raygun 是针对 Web 和移动应用程序的实时监控服务。 Raygun 跟踪部署、客户体验、错误和崩溃,以及用户如何与系统交互。 可口可乐、Target、微软和 Avis 等品牌都使用 Raygun。
编码技巧
由于 DevOps 工程师是开发过程中的关键部分,您需要熟悉一些最常见的脚本和编程语言才能成功胜任您的角色。
脚本语言是一种在运行后被翻译成机器代码的编程语言。 有两种类型的脚本语言:服务器端和客户端。 一些最流行的客户端脚本语言包括 HTML、CSS 和 Javascript。 一些最流行的服务器端脚本语言包括 PHP、Node.js、ASP.NET、Ruby、Perl、Python 和 Java。
所有 Kinsta 托管计划都包括来自我们资深 WordPress 开发人员和工程师的 24/7 支持。 与支持我们财富 500 强客户的同一团队聊天。 看看我们的计划!
编程语言使用编译器将代码转换为机器代码。 两种最流行的编程语言是 C++ 和 C。
容器化工具方面的专业知识
许多组织中的 DevOps 工程师使用容器化工具。 容器化工具帮助开发人员打包代码并将其部署在小型容器中。 使用容器化部署代码允许系统在不同环境之间更快、更有效地运行。
要成为一名成功的 DevOps 工程师,您应该学习容器化工具的基础知识,例如:
码头工人
Docker 是一个平台即服务工具,允许开发人员通过容器构建、打包和部署代码。 Docker 与 GitHub 集成并为 DevKinsta 提供支持。
Kubernetes
Kubernetes(也称为“K8s”)是一个使用容器化的用于部署和管理的开源系统。 Kubernetes 提供自动推出、配置管理、自动容器打包、批处理执行和负载平衡(以及其他功能)。
使用项目管理工具的经验
由于 DevOps 工程师管理和监督开发项目,因此您需要在成为 DevOps 工程师之前了解项目开发工具。 项目管理工具帮助人们使用甘特图、清单和基于卡片的归档系统跟踪项目。
三个最流行的 DevOps 项目管理工具包括:
- Trello: Trello 是一个基于板的项目管理工具。 使用 Trello,您可以创建带有一系列列表的看板。 然后,您在这些列表之间移动卡片。 Trello 是一种协作工具,这意味着多个人可以编辑每个板。 人们经常将 Trello 与 Asana 进行比较。
- Atlassian Jira: Jira 是一款专为 IT 团队设计的项目管理工具,采用敏捷或 DevOps 方法。 Jira 允许您使用项目的卡片和板来跟踪所需的每项任务。 Jira 也是一个同时托管多个用户的协作工具。
- Atlassian Confluence: Atlassian Confluence 是一个工作空间工具,允许小型团队通过日历或时间线共享工作和管理项目。 一些团队同时使用 Jira 和 Confluence。
使用公共云服务的经验
由于 DevOps 工程师经常处理基于云的项目,因此您需要熟悉基于云的服务才能在新角色中取得成功。 公共云服务是允许组织共享网络、存储和硬件的计算服务。 当组织使用公共云服务时,他们通过互联网访问其基础设施。
三种最受欢迎的公共云服务包括:
- 微软天青
- 谷歌云
- 亚马逊网络服务 (AWS)
面向客户的技能
由于 DevOps 开发人员需要与系统用户合作,因此您需要强大的客户服务技能才能在 DevOps 中取得成功。 具体来说,您需要出色的积极倾听技巧、良好的沟通技巧、解决冲突的技巧以及了解用户需求的诀窍。
协同管理技能
由于 DevOps 工程师经常在小团队中工作,因此您需要强大的团队合作技能。 具体来说,您需要善于提供建设性的反馈、接受反馈、在小组中进行头脑风暴以及朝着共同目标努力。
WordPress 开发技巧
由于 WordPress 为 40% 的网站提供支持,您可能需要强大的 WordPress 开发技能才能成为 WordPress DevOps 团队的一员。 具体来说,您需要了解 WordPress 的工作原理并使用 DevKinsta 等托管工具。
DevKinsta 是人们用来创建、开发和测试 WordPress 网站的免费开发工具。 DevKinsta 提供数据库管理、内置电子邮件测试、WordPress 错误记录和简单部署。 目前有超过 10,000 名专业人士使用 DevKinsta。
DevOps 工程师薪水
尽管 DevOps 工程仍在发展中,但大多数 DevOps 工程师的薪水都很高。
截至 2021 年 6 月 28 日,美国 DevOps 工程师的平均工资为 118,872 美元。 这意味着大多数全职 DevOps 工程师的收入在 107,023 美元到 132,217 美元之间。 这个范围的变化说明了教育、专业经验、技能、责任、地点和公司。 如果您的雇主向您支付加班费、奖金或福利,您的工资可能超出此范围。
由于 DevOps 仍然是新事物,值得注意的是,某些网站上 DevOps 的平均工资是不同的。 例如,Indeed 报告称,美国的 DevOps 平均工资为 121,035 美元(截至 2021 年 7 月 13 日)。
招聘 DevOps 工程师时要寻找什么
到目前为止,本文主要关注那些想成为 DevOps 工程师的人。 但是雇主呢? 如果您要聘请 DevOps 工程师,一些基本技能和属性会让优秀的 DevOps 工程师与众不同。
其中包括以下内容。
硬技能
- 脚本和编程语言方面的知识
- 对敏捷方法和 SDLC 的理解
- 了解容器化和自动化等概念
- 网络安全专业知识
- 具有版本控制系统、存储库托管工具、配置管理工具、容器化工具和自动化工具方面的经验
- 体验监控、规划和设计开发项目
如果潜在的开发人员具有以下工具的经验,他们也可能具备成为优秀 DevOps 工程师的技能:
- 竹子
- 詹金斯
- 吉特
- GitHub
- 比特桶
- 木偶
- 厨师
- 纳吉奥斯
- 射线枪
- 码头工人
- 开发者金斯塔
- Kubernetes
- 特雷罗
- Atlassian 吉拉
- Atlassian Confluence
软技能
- 管理项目的经验,包括召开会议、设定截止日期和委派工作
- 优秀的团队合作和协作能力
- 良好的创造性解决问题的能力
- 接受反馈并相应调整工作的能力
- 出色的积极倾听技巧
- 与用户合作以及在不同团队中工作的经验,在这些团队中,人们拥有截然不同的技能组合
适合 DevOps 工作的背景
由于 DevOps 是一个新领域,许多 DevOps 工程师从其他角色过渡到 DevOps。 如果您正在考虑的人具有软件开发、硬件管理、一般 IT 管理或系统管理方面的背景,他们将拥有适合 DevOps 工程工作的可转移技能。
如果候选人在以下领域之一拥有学士学位或更高学位,他们也可能成为一名出色的 DevOps 工程师:
- 计算机科学
- 信息技术
- 信息系统
- 软件工程
- 系统工程
继续
概括
虽然 DevOps 仍在发展,但 DevOps 工程师在拥有广泛(但关键)IT 系统的企业中变得越来越重要。
一个成功的 DevOps 工程师是物超所值的,因为他们可以监督 IT 项目、优化其他团队的绩效并加快开发生命周期。
假设您想成为一名出色的 DevOps 专业人士。 在这种情况下,您应该建立自己的 DevOps 知识并熟悉流行的公共云服务、虚拟化技术、项目管理工具、配置管理工具、自动化工具和编码相邻工具。 您还需要培养强大的协作、倾听和项目管理技能。
您如何看待 DevOps 方法? 在下面的评论中告诉我们。