随着企业对软件快速高效交付的需求不断增加,DevOps 工程师的招聘需求也在持续增长,这也使得 DevOps 工程师成为当今市场上最抢手的技术职位。
要想成为一位成功的 DevOps 工程师,并在这个竞争异常激烈的世界中站稳脚步,你必须具备以下五个专业技能。
1.自动化
自动化是 DevOps 的核心。
作为一位 DevOps 工程师,你可能经常会问其他人这样的问题:“你每天都手动做这项任务,每次都要花一个小时,是吗?”
几乎所有手动执行的开发和发布任务都应该由 DevOps 工程师实现自动化。因为在软件开发生命周期中,开发人员应当尽可能的减少手动步骤。如果你想让软件发布变得更有效、更一致(谁不想呢),那么自动化就是最佳方案。
那么,一个 DevOps 工程师需要自动化什么呢?
首先,DevOps 工程师需要将开发和发布过程中的所有方面自动化。作为 DevOps 工程师,你需要创建一个完全自动化的端到端管道,从存储库中构建代码开始,到将软件发布到生产中结束。这个管道通常还包括基础设施的创建、配置管理和安全自动化。
此外,你还要充分利用各种可用的 DevOps 工具,并且能够编写一两个脚本。虽然你不需要掌握每一种 DevOps 技术,也不需要成为一个编码大师,但你需要掌握以下各组工具中至少一个工具:
持续部署工具,如 Jenkins、Azure DevOps、Spinnaker 和 Travis。
配置管理工具,如 Puppet、Chef 和 Ansible。
基础设施即代码工具,如 Terraform 和 Pulumi。
对于脚本而言,你还需要熟练掌握 Ruby、Python 和 Shell 等语言。
2.沟通与协作
对 DevOps 工程师来说,沟通和协作的重要性不言而喻,要想理解这一点,你需要先了解 DevOps 实践形成的原因。
DevOps 背后的一个主要驱动力,是开发和运营团队在发布方面的意见分歧。
一方面,开发人员希望尽可能多地发布特性。“客户需要这种特性。我们需要发布”,这是他们的观点。另一方面,运营部门希望较少发布软件。他们的观点是:“每次发布都是一种变化,而变化就是一种风险”。
DevOps 对这个问题的解决方案是,让一群人负责确保以安全、可靠和高效的方式创建、测试和部署软件,这个群体就是 DevOps 工程师。
那么,这与沟通或协作有什么关系呢?
DevOps 就是要打破上述团队之间的“孤岛”,也就是说,DevOps 工程师需要能够与人们建立联系,并将他们从整个组织的团队中召集起来。通过这样的团结,所有的团队都将致力于将高质量的软件交付给客户。
3.云计算
当涉及到基础设施时,许多公司选择云计算来支持他们的 IT 服务和应用程序,而不再使用传统的现场选择。有数据显示,90% 的公司都使用某种类型的云服务。
云允许企业创建可扩展、灵活和安全的应用。DevOps 工程师可以通过云供应商提供的服务,无缝地管理基础设施。
对 DevOps 工程师而言,需要了解的云服务的基本类型包括:
网络
虚拟化(虚拟机 / 容器 / 无服务器)
安全
存储
监控
假如你在一家将基础设施应用托管到云端的公司工作,那么你就可以很容易地设计和开发云架构。比如,知道什么时候用 IaaS 产品或者什么 PaaS 产品更好。
4.安全
对 DevOps 工程师而言,如果在软件发布后才考虑安全性问题,那么 DevOps 提供的高速软件发布可能会有危险。作为 DevOps 工程师,必须确保在软件开发生命周期的各个阶段都考虑到安全性。
新增一项应用功能?在进入生产环境之前,让我们先检查一下漏洞。增加了一项云服务?请确保仅允许我们希望访问的资源访问此服务。
要想尽可能地减少漏洞,DevOps 工程师需要在应用程序开发的生命周期中引入安全性,而这也通常被称为 DevSecOps。
5.运营支持
优秀的 DevOps 工程师不只从事开发方面的工作。DevOps 是全方位的,所以你也应该对 IT 运营有所了解。
DevOps 工程师应该确保所有系统都有监控和警报,以帮助提高生产服务的可用性和正常运行时间。对于这一点,有许多工具可以采用,比如 Prometheus 、Grafana 等。有了这些技能,在出现问题时就能快速解决各自操作系统上的技术故障。
当然,在此之外,你还需要了解 Linux 和 Windows 服务器。DevOps 工程师通常会在服务完全停止的情况下启动灾难恢复流程,以恢复服务。从理论上来说,灾难恢复流程也应该是自动化的。
结语
要想成为 DevOps 工程师,就必须要掌握这些技能。总的来说,DevOps 工程师是一名具备一定技术实力的团队成员,能够优先考虑客户满意度,并能够对更改作出响应,同时对 DevOps 工具也有良好的理解。
作者介绍:
Liam Witterick,DevOps 工程师,专注于自动化、创新与协作。
原文链接:
https://betterprogramming.pub/5-skills-you-need-to-be-a-devops-engineer-c8f53370f92b
评论