专业DevOps工程师:系统管理员的观点



我在Parallels担任DevOps工程师。我支持各种服务的开发,我为自动部署编写脚本,我与开发团队密切沟通。我将告诉您工作的安排方式,支付的费用以及使用DevOps进行软件开发的方法的优点。

一切始于这样一个事实,我成为系统管理员变得无聊,我想要一些新东西。我尝试开发1C,但很快就意识到这不是我的。他学习了Python,提高了他在Unix系统中的技能,并在Parallels接受了采访。然后我对DevOps几乎一无所知,我只是来对我说:我想为你工作。两个月后,他们带走了我。

什么是DevOps?


如果您问5个人什么是DevOps,则会得到5个不同的答案。对于传福音者而言,这是一种文化,或者甚至是思维的转变。对于工程师来说,一套解决方案和工具。对于管理者来说,是一种方法论。对于招聘人员-一种职业。对于其他所有人,这可能只是一个流行词。

像往常一样,真相介于两者之间。以上是DevOps的全部内容。其主要任务是加快产品从企业到消费者的交付。这个词本身是大约十二年前由独立的IT顾问Patrick Debois提出的。他想打破开发人员(dev)和系统管理员(ops)之间的隐喻墙,将它们组合成一个有效的单元,该单元可以更快地创建软件,更频繁地发布发行版,并且出错更少。

因此,DevOps的核心是分担责任的理念,没有分权。如果程序员更了解如何编写服务配置以及开发中的系统管理员,则可以参与配置。当出现问题时,它不会像乒乓球中的球那样从一个雇员转移到另一个雇员,而是变得普遍。每个人都参与消除它。



一分钟无聊的统计数据。根据DORA研究(DevOps研究和评估),跨职能团队使用DevOps方法:

  • 部署代码的频率提高208倍;
  • 减少了106倍从提交到部署的时间;
  • 故障后恢复系统的速度提高了2.604倍;
  • 由于更改而导致自身失败的机会降低了7倍。

当然,仅将开发人员和操作人员结合起来并不会带来这种效率。DevOps方法包括使用许多新的开发,测试和部署工具来组织CI \ CD(持续集成和交付的概念)。其中最著名的:

  • Git和GitHub-源代码管理系统;
  • Jenkins-用于创建CI / CD管道的自动化服务器;
  • Docker-用于在支持容器化的环境中自动化部署和应用程序管理的软件;
  • Kubernetes-一个开放的容器编排系统;
  • Chef,Puppet和Ansible-用于自动配置和部署的工具;
  • 硒-测试自动化解决方案;
  • Prometheus和Nagios-服务器监控软件;
  • Grafana是用于收集和分析指标的解决方案。

同时,不存在适用于每种业务的通用工具集,也没有通向DevOps的单一途径。在您的基础架构中只有工作有效,反之则不行。我经常参加会议和各种活动,并与其他公司的同事进行交流,我可以说他们在Parallels中使用的80%的东西并不是特别适用。

每个组织都有自己的产品,自己的技术堆栈和瓶颈。因此,优化方法非常不同。有时您必须更改服务本身的体系结构,其中有些过于复杂或缺乏灵活性,因此很难将DevOps方法转移给它们。

DevOps工程师的精髓


从根本上讲,DevOps工程师是一位技术专家,他了解软件开发生命周期的所有主要阶段,纠正流程瓶颈并调整环境:

  • 编写用于自动应用程序部署的代码
  • 对可用性的部分责任,不是由系统管理员亲自负责,而是由其团队负责;
  • 对基础架构承担责任(理解错误,有时与程序员一起理解)。

首先,自动化是DevOps工程师的责任。使用传统方法创建IT产品的过程如下:程序员编写代码,以某种格式进行编译,然后将其交给sysadmin。他去服务器,手动安装和配置所有东西。同时,他们正在为不同的事物而战:系统管理员-为了稳定性,程序员-为了他们的改变,这当然会使每个人的工作变得复杂。

在DevOps中,这有点不同。使用脚本部署该应用程序。DevOps工程师设置了一定的操作序列,这些序列将程序员编写的代码带到测试服务器,然后带到战斗服务器(如果确定可以发布更改)。因此,开发人员有机会至少每15分钟检查一次他的代码,甚至在凌晨三点通过单击按钮即可进行检查。

具体职责以及必要的技能在很大程度上取决于工作地点。在Parallels中,我们拥有大量的基础架构,最关键的部分不在公共云中,而是在我们在多个数据中心的物理服务器上。有时,这些服务器上的硬件和软件会有重大更新,因此需要定期进行迁移。

这也是我的工作。


我尝试将所有操作都实现最大程度的自动化,以减少该过程的痛苦。上一次,在测试交叉备份和基础架构容错的框架中,可以在10分钟内将服务从美国转移到瑞士,并在此过程中更新所需的一切。对于现代技术而言,这当然不是一个巨大的成就。但是对我们来说-向前迈出了一大步。

对于DevOps工程师来说,传统也是一个绝对的挑战。即使在工作流结构良好的公司中,有些服务的编写时间也很长,而且没有人完全记得它们是如何设置的,因为通常是手动完成的,并且从事这些工作的人员不再在组织中工作。如果这是一项重要的服务,则需要进行大量研究-您必须在最细微的差别上弄清楚它是如何工作的,编写用于部署的代码,并在监视和指标方面进行介绍。

即使应用程序代码没有非常积极地更改,这也是值得做的。为什么,如果一切正常?为了在发生故障时能够重现它,请安装安全更新,查找并修复可能没人知道的问题。最近,我刚刚为此类服务编写了脚本,历史悠久。需要更改其代码,工作尚未完成,但进展很大。从不同的部分收集应用程序的完整图片非常有趣,稍后查看结果也很好。

而且,当然,DevOps方法的实施与测量密切相关。响应时间改变了多少?预期的错误多久发生一次?以前,系统管理员通常不知道如何衡量这些事情。应用程序是黑匣子,仅保留了最基本的特征:处理器负载,内存消耗,流量。而且,在部署新版本时,系统管理员和程序员都无法迅速确定一切都未按计划进行。它仍然等待着对技术支持的愤怒呼吁。

使用DevOps方法,这已成为过去。您可以配置实际应用程序指标的集合,将它们与资源消耗进行比较,因此,更好,更快地发现问题,优化,提高产品质量,而不仅仅是服务器正常运行时间。

DevOps工程师能赚多少钱?


DevOps工程师的薪水取决于技能,工作地点和居住地区。在莫斯科工作的专家的薪水是俄罗斯最高的,每月130-35万卢布。圣彼得堡公司为这个职位提供100-300,000卢布。在我们国家的其他地区,他们准备支付70至12万卢布。

据一些人事专员说,美国的平均年收入在100到125,000美元之间,根据Puppet发布的数据。在澳大利亚和新西兰-75-100万美元。在欧洲-50-7.5万美元。在亚洲,DevOps工程师每年的收入不超过2.5万美元。

All Articles