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


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

现在是2019年,DevOps主题与以往一样重要。 他们说,随着大型机时代的过去,系统管理员的时代已经过去。 但是真的是这样吗?
与IT部门一样,情况已经改变。 DevOps方法已经出现,但没有系统管理员技能的人(即没有Ops)就不可能存在。

在DevOps方法获得现代外观之前,我将自己归类为Ops。 而且我很清楚,系统管理员在意识到自己尚无法完成的工作量以及学习如何执行此操作的时间时会经历什么。



但是,一切真的那么恐怖吗? 我要说,没有必要将缺乏知识视为某种大问题。 这是一个职业挑战。

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点; 还是在24小时数据中心工作?

随着时间的流逝,系统管理员已经学会了策略性思考,并将重要事项与日常任务结合在一起。 他们所工作的团队和部门通常没有足够的资源,但是与此同时,每个人都试图完全执行日常任务。

DevOps:开发和服务是一体


DevOps是一种开发和维护过程的哲学。 在IT领域,这种方法已经变得真正具有创新性。

在DevOps的主持下,一组软件开发人员在一方面工作,而另一组服务专家则在工作。 产品管理专家,测试人员和用户界面设计师通常会加入他们的行列。 通过共同努力,这些专家可以优化工作流程,以快速推出新的应用程序并更新代码,以支持并提高整个公司的效率。

DevOps的核心是在整个生命周期中对软件开发和操作的控制。 服务专家必须支持开发人员,开发人员不仅要了解系统中使用的API,还要面对任务。 他们应该了解什么是“幕后”(即硬件和操作系统如何工作),以便更好地处理错误,解决问题并与服务专家互动。

如果系统管理员想学习最新技术并且愿意接受创新思想和解决方案,可以去DevOps团队。 正如我所说,他们不需要成为成熟的程序员,但是精通Ruby,Python或Go等编程语言将帮助他们成为团队中非常有用的成员。 尽管传统上系统管理员通常独自完成所有工作,并且通常被视为独来独往,但在DevOps中,当流程中的所有参与者彼此交互时,他们将拥有完全相反的体验。

自动化的话题变得越来越重要。 系统管理员和DevOps专家都对操作扩展,减少错误数量以及快速搜索和消除现有错误感兴趣。 因此,自动化是两个领域融合的概念。 系统管理员负责AWS,Azure和Google Cloud Platform等云服务。 他们需要了解持续集成和交付的原理,以及如何在工作中使用像Jenkins这样的工具。

此外,系统管理员必须使用Ansible之类的配置和管理工具,才能并行部署十或二十个服务器。

基本概念是将基础架构作为代码 。 软件应有尽有。 实际上,为了使系统管理员的职业不会失去相关性,您只需要稍微改变一下重点即可。 系统管理员从事维护工作,应该能够与开发人员进行有效的交互,反之亦然。 正如他们所说,一个头好,两个头好。

这个机制的最后一个细节是Git 。 使用Git是系统管理员的传统日常职责之一。 此版本控制系统已被开发人员,DevOps专家,敏捷团队和许多其他人广泛使用。 如果您的工作与软件生命周期有关,那么您一定会使用Git。

Git包含很多功能。 最有可能的是,您将永远不会学习所有的Git命令,但是您将确切地理解为什么将此工具视为软件上的通信和协作的主要工具。 如果您在DevOps团队中工作,那么对Git的透彻了解非常重要。

如果您是系统管理员,那么您需要更好地学习Git,了解版本控制的构建方式,并记住常用命令: git status,git commit -m,git add,git pull,git push,git rebase,git branch,git diff等。 有许多在线课程和书籍可以帮助您从头开始学习此主题,并成为具有特定技能的专业人员。 Git命令也有很棒的备忘单 ,因此将它们全部填入是可选的,但是使用Git越多,对您来说越容易。

结论


最终,您可以决定是需要成为DevOps专家还是更好地保持系统管理员。 如您所见,过渡需要培训,但是越早开始越好。 选择一种编程语言和学习工具,例如Git (版本控制), Jenkins (CI / CD,持续集成)和Ansible (配置和自动化)。 无论选择哪种选择,请不要忘记您需要不断学习和提高技能。

Source: https://habr.com/ru/post/zh-CN463505/


All Articles