为什么系统管理员应该成为 DevOps 工程师

为什么系统管理员应该成为 DevOps 工程师

生活中没有比今天更好的学习时间了。


现在是 2019 年,DevOps 比以往任何时候都更加重要。 他们说系统管理员的时代已经结束,就像大型机的时代一样。 但事实真的是这样吗?
正如 IT 领域经常发生的那样,情况已经发生了变化。 DevOps 方法论已经出现,但如果没有系统管理员技能的人,即没有 Ops,它就不可能存在。

在 DevOps 方法呈现其现代形式之前,我将自己归类为运维人员。 我非常了解当系统管理员意识到自己还有多少事情还不能做以及他需要学习的时间是多么少时,他会经历什么。

为什么系统管理员应该成为 DevOps 工程师

但真的有那么可怕吗? 我想说,缺乏知识不应该被视为某种大问题。 这更像是一个职业挑战。

Web规模的产品基于Linux或其他开源软件,市场上能够维护它们的人越来越少。 需求已经超过了该领域专业人员的数量。 系统管理员将不再能够在不提高其技能水平的情况下简单地继续工作。 他必须具备管理多个服务器/节点的自动化技能,并充分了解它们如何解决出现的问题。

在成为 DevOps 团队的一员之前,你必须经历一段相当漫长但有趣的旅程,学习新技术和按照 DevOps 标准维护系统所需的各种工具。

那么,系统管理员如何从通常的工作方式转向 DevOps 的新概念呢? 一切如常:首先你需要改变你的想法。 放弃过去十年或二十年来一直遵循的方法并开始以不同的方式做事并不容易,但这是必要的。

首先,要明白DevOps并不是一个公司的某个特定职位,而是一组具体的实践。 这些实践意味着隔离系统的分布、减少错误和错误的危害、频繁及时的软件更新、开发人员 (Dev) 和管理员 (Ops) 之间建立良好的交互,以及不仅对代码进行持续测试,而且对还有流程中的整个结构 持续集成和交付(CI/CD).

在改变思维方式的同时,您还需要学习如何维护基础设施并确保其稳定运行、可靠性和可用性,以实现应用程序、服务和软件的持续集成和交付。

作为运维专业人员,您可能缺少的是编程技能。 现在编写脚本(脚本),系统管理员用来在服务器上自动安装补丁、管理文件和帐户、解决问题以及编译文档,已经被认为已经过时了。 脚本仍然适用于相对简单的情况,但 DevOps 是为了解决大规模问题,无论是实施、测试、构建还是部署。

因此,如果你想学习自动化,即使你不是开发人员,你至少需要掌握一点编程,因为在你的开发阶段 基础设施自动化 DevOps 需要这项技能。

该怎么办? 为了保持作为专家的需求,您需要获得相关技能 - 掌握至少一种编程语言,例如 Python。 对于专业从事管理工作的人来说,这似乎很困难,因为他习惯于认为只有开发人员才会编程。 不一定要成为专家,但要了解其中一种编程语言(可以是 Python、Bash 甚至 PowerShell的),绝对是一个优势。

学习编程需要一些时间。 在与 DevOps 团队成员和客户沟通时,保持专心和耐心将帮助您掌控全局。 每天半小时、一个小时或更长时间,学习编程语言应该是你的主要目标。

系统管理员和 DevOps 专家解决类似的问题,但存在显着差异。 人们认为,系统管理员无法完成 DevOps 工程师能做的所有事情。 他们说系统管理员更专注于配置、维护和确保服务器系统的性能,但DevOps工程师却拉着这辆大车和另一辆小车。

但这种说法的真实性如何呢?

系统管理员:战场上的一名战士

尽管本文指出了差异和相似之处,但我仍然认为系统管理和 DevOps 之间没有显着差异。 系统管理员一直执行与 DevOps 专家相同的功能,只是之前没有人称之为 DevOps。 我认为专门寻找差异是没有意义的,特别是如果它与任何任务无关。 不要忘记,与系统管理员不同,DevOps 不是一个职位,而是一个概念。

应该注意一件更重要的事情,否则关于管理和 DevOps 的对话将是不完整的。 通常意义上的系统管理以专家拥有一套特定的技能为前提,并且专注于为各种类型的基础设施提供服务。 并不是说这是一个通用员工,而是说所有管理员都执行许多任务。

例如,他们有时必须充当技术勤杂工,即几乎做所有事情。 而如果整个组织只有一名这样的管理员,那么他一般会承担所有的技术工作。 这可以是任何事情,从维护打印机和复印机到执行与网络相关的任务,例如设置和管理路由器和交换机或配置防火墙。

他还将负责硬件升级、日志检查和分析、安全审核、服务器修补、故障排除、根本原因分析和自动化(通常通过 PowerShell、Python 或 Bash 脚本进行)。 一个使用示例 场景 是用户和组帐户的管理。 创建用户帐户和分配权限是一项极其繁琐的任务,因为用户几乎每天都会出现和消失。 通过脚本实现自动化可以腾出时间来执行更重要的基础设施任务,例如升级交换机和服务器以及影响管理员所在公司盈利能力的其他项目(尽管人们普遍认为 IT 部门不直接产生收入)。

系统管理员的任务不是浪费时间,而是以任何可能的方式为公司节省资金。 有时,系统管理员作为一个大团队的成员工作,例如将 Linux、Windows、数据库、存储等的管理员联合起来。 工作安排也各不相同。 例如,一天结束时一个时区的轮班会将案例转移到另一个时区的下一个班次,以便流程不会停止(跟随太阳); 或员工的正常工作日为上午 9 点至下午 5 点; 或者它在 XNUMX/XNUMX 数据中心工作。

随着时间的推移,系统管理员学会了战略性思考并将重要事项与日常任务结合起来。 他们所在的团队和部门通常资源匮乏,但同时每个人都在尽力完成日常任务。

DevOps:开发和维护合二为一

DevOps的 是一种开发和维护过程的哲学。 这种方法在 IT 领域已成为真正的创新方法。

在 DevOps 的保护下,一方面有软件开发团队,另一方面有维护团队。 他们通常由产品管理专家、测试人员和用户界面设计师加入。 这些专家共同简化运营,快速推出新应用程序和代码更新,以支持和提高整个公司的效率。

DevOps 基于对软件整个生命周期的开发和运营的控制。 维护人员必须支持开发人员,而开发人员的任务不仅仅是了解系统中使用的 API。 他们需要了解幕后的内容(即硬件和操作系统如何运行),以便更好地处理错误、解决问题并与服务技术人员互动。

如果系统管理员想要学习最新技术并对创新想法和解决方案持开放态度,则可以加入 DevOps 团队。 正如我之前所说,他们不必成为成熟的程序员,但掌握 Ruby、Python 或 Go 等编程语言将帮助他们成为团队中非常有用的成员。 尽管系统管理员传统上会自己完成所有工作,并且通常被认为是孤独的人,但在 DevOps 中,他们有完全相反的体验,流程中的每个人都相互交互。

自动化的话题变得越来越重要。 系统管理员和 DevOps 专家都对快速扩展、减少错误数量以及快速查找和修复现有错误感兴趣。 因此,自动化是两个领域融合的概念。 系统管理员负责AWS、Azure和Google Cloud Platform等云服务。 他们必须了解持续集成和交付的原则以及如何使用诸如 詹金斯.

此外,系统管理员必须使用配置和管理工具,例如 Ansible,并行部署十到二十台服务器所必需的。

主要概念是 基础设施即代码。 软件就是一切。 事实上,为了让系统管理员这个职业不失去相关性,你只需要稍微改变一下重点即可。 系统管理员从事服务业务,必须能够与开发人员进行有效的沟通,反之亦然。 正如他们所说,一个头很好,但两个更好。

这个机制的最后一个细节是 混帐。 使用 Git 是系统管理员的传统日常职责之一。 该版本控制系统被开发人员、DevOps 专家、敏捷团队等广泛使用。 如果你的工作与软件生命周期相关,那么你肯定会使用Git。

Git 有很多功能。 您可能永远不会学习所有 Git 命令,但您会确切地理解为什么它是软件通信和协作的主要内容。 如果您在 DevOps 团队中工作,全面了解 Git 非常重要。

如果你是系统管理员,那么你需要更好地学习Git,了解版本控制是如何构建的并记住常用命令: git状态,git提交-m,git添加,git拉,git推,git变基,git分支,git diff 和别的。 有许多在线课程和书籍可以帮助您从头开始学习这个主题并成为具有特定技能的专业人士。 还有精彩的 Git 命令备忘单,所以你不必把它们全部死记硬背,但是你​​使用 Git 越多,就会越容易。

结论

最终,您决定是否需要成为 DevOps 专家,或者是否最好继续担任系统管理员。 如您所见,过渡需要一个学习曲线,但越早开始越好。 选择一种编程语言并同时学习诸如 混帐 (版本控制), 詹金斯 (CI/CD,持续集成)和 Ansible (配置和自动化)。 无论您选择哪种选择,请不要忘记您需要不断学习和提高您的技能。

来源: habr.com

添加评论