谁是DevOps?

目前,这几乎是市场上最昂贵的位置。 DevOps工程师的忙碌与忙碌超出了所有可以想象的限制,而高级DevOps工程师的忙碌与忙碌则更是如此。
我是集成和自动化部门的负责人,猜猜是英文解密-DevOps Manager。 英文解码是否能准确反映出我们的日常活动不太可能,但在这种情况下,俄文版本更为准确。 根据我的工作性质,很自然地我需要采访我团队的未来成员,并且在过去的一年中,大约有50个人通过了我,并且与我的员工在屏幕上截取了同样的数额。


我们仍在寻找同事,因为DevOps标签的背后是大量各种各样的工程师。


下面写的所有内容都是我个人的观点,您没有义务同意,但是我承认,这将带给您关于该主题的态度。 尽管有失宠的风险,但我还是发表了意见,因为我相信他有应有的地位。


公司对DevOps工程师的了解不同,为了迅速招聘资源,他们将标签贴在所有人的身上。 这种情况相当奇怪,因为公司愿意向这些人支付不切实际的报酬,在大多数情况下会为他们提供管理工具。


那么DevOps的工程师是谁?


让我们从故事开始-作为预期结果,开发运营是迈向优化小团队之间的互动以提高产品生产速度的又一步。 想法是通过在管理产品环境方面的程序和方法知识来加强开发团队。 换句话说,开发人员必须了解并了解其产品在特定条件下的工作方式,必须了解如何部署其产品,如何收紧哪些环境特征以提高生产率。 因此,一段时间以来,开发人员出现了DevOps方法。 DevOps开发人员编写了构建和打包脚本,以简化其活动和生产环境的性能。 但是,决策体系结构的复杂性以及基础架构组件随时间的相互影响开始恶化环境的性能,每次迭代都需要对某些组件有更深入的了解,由于理解特定任务的组件和调整系统会产生额外的成本,因此降低了开发人员的工作效率。 。 开发人员自己的成本在增长,产品成本以及产品成本,团队中对新开发人员的要求急剧上升,因为他们还必须承担开发“明星”的职责,并且自然而然地,“明星”变得难以获得。 还值得注意的是,以我的经验,很少有开发人员对操作系统内核的数据包处理,数据包路由规则和主机安全性方面的细节感兴趣。 合理的步骤是吸引一位熟悉此特定职责的管理员,并向他分配相似格式的职责,这归功于他的经验,使得与开发明星的成本相比,可以以较低的成本实现相同的指标。 这些管理员被安排在一个团队中,其主要任务是根据特定团队的规则管理测试和生产环境,并为该特定团队分配资源。 因此,事实上,DevOps出现在多数视图中。


随着时间的流逝,部分或全部,这些系统管理员开始了解这个特定团队在开发领域的需求,如何简化开发人员和测试人员的生活,如何进行更新以及在星期五不留在办公室过夜,从而解决了部署错误。 随着时间的流逝,如今了解开发人员需求的系统管理员已成为“明星”。 为了最大程度地减少影响,管理实用程序开始追赶,每个人都记得隔离OS级别的旧而可靠的方法,该方法允许将安全性要求最小化,管理网络部分以及整个主机配置,从而减少了对新``星号''的要求。


出现了“很棒”的事情-码头工人。 为什么很棒? 是的,因为在chroot或jail中以及在OpenVZ中创建隔离需要对操作系统有一定的了解,所以在一个计数器实用程序中,您可以在特定主机上简单地创建一个隔离的应用程序环境,其中包含您需要的所有内容,然后将控制权转移到开发中,并且仅管理系统管理员仅一台主机,确保其安全性和高可用性-逻辑上的简化。 但是进展不会停滞不前,系统变得越来越复杂,组件越来越多,一台主机不再满足系统的需求,并且有必要构建集群,我们再次回到能够构建这些系统的系统管理员那里。


循序渐进的过程中,出现了各种简化了开发和/或管理的系统,而编排系统的出现,恰恰是在您需要脱离标准流程之前,它仍然易于使用。 微服务架构似乎也可以简化上述所有操作-更少的关系,更易于管理。 以我的经验,我没有找到一个完整的微服务架构,我会说50%到50%的微服务(黑匣子)进入,处理,另外50%的整体式服务无法与其他组件分开工作。 所有这些再次限制了开发人员和管理员的知识水平。


直到今天,特定资源专家知识水平的类似“波动”仍在继续。 但是我们有点分心,有很多地方值得强调。


建筑工程师/发布工程师


非常专业的工程师,其出现是为了标准化软件组装过程及其版本。 在引入大量敏捷的过程中,似乎不再需要它们了,但这远非如此。 这种专业化已成为工业规模上软件的组装和交付标准化的一种手段,即 对公司所有产品使用标准技术。 随着DevOps的到来,开发人员已经部分失去了功能,因为正是开发人员开始准备交付产品,并且由于不断变化的基础架构和最快的交付方式而不考虑质量,随着时间的推移,他们变成了变革的停止者,因为遵守质量标准不可避免地减慢了交付速度。 因此,逐渐地,工程师的部分构建/发布功能迁移到了系统管理员的肩膀上。


行动是如此不同


我们不断地承担着广泛的责任,而缺乏合格的人员又使我们陷入了艰难的专业化阶段,就像雨后的蘑菇一样,各种各样的行动出现了:


  • TechOps-Enike系统管理员又名HelpDesk工程师
  • LiveOps-主要负责生产环境的系统管理员
  • CloudOps-专门研究Azure,AWS,GCP等的公共“云”的系统管理员
  • PlatOps / InfraOps / SysOps-基础结构系统管理员。
  • NetOps-网络管理员
  • SecOps-专门从事信息安全的系统管理员-PCI合规性,CIS合规性,修补等

DevOps(理论上),是一个了解开发周期的所有过程的人员-开发,测试,了解产品架构,能够评估安全风险,至少在较高水平上熟悉自动化方法和手段,并且还了解开发前后产品发布支持。 一个人既可以倡导运营,又可以倡导发展,从而可以在两个支柱之间建立良好的合作关系。 了解团队计划流程并管理客户期望。


为了执行此类工作和职责,此人必须不仅具有控制开发,测试,而且还控制产品基础结构的管理以及资源规划的手段。 从这个意义上讲,DevOps不能位于IT,R&D甚至PMO中,它应该在所有这些领域都具有影响力-公司的技术总监,首席技术官。


贵公司是这样吗? -我怀疑。 在大多数情况下,这要么是IT,要么是R&D。


资金不足以及可能影响这三项业务中的至少一项将使问题的重心转移到更容易应用这些更改的方面,例如根据静态分析器系统的数据对与脏代码相关的发行版施加技术限制。 也就是说,当PMO为功能发布设定了紧迫的期限时,研发部门无法在这些期限内给出高质量的结果,并且无法按期提供高质量的结果,从而通过技术手段将与IT相关的DevOps进行重构以阻止以后的发布。 对于负责任的员工而言,缺乏改变情况的权力导致对他们无法影响的事情表现出过高的责任感,此外,如果这些员工理解并看到错误,以及如何解决错误就是“无知的幸福”,结果这些员工的倦怠和流失。


市场DevOps资源


让我们看一下来自不同公司的一些DevOps职位空缺。


如果您有以下情况,我们准备与您见面:
  1. 拥有Zabbix,知道普罗米修斯是什么;
  2. iptables;
  3. 研究生BASH;
  4. Ansible教授;
  5. Linux大师
  6. 知道如何与开发人员一起使用调试和查找应用程序问题(php / java / python);
  7. 路由不会引起您发脾气;
  8. 高度重视系统安全性;
  9. 备份“所有内容”,并成功还原此“所有内容”;
  10. 您知道如何配置系统以使其不超过最小值-最大值;
  11. 在Postgres和MySQL上配置就寝时间复制;
  12. 像早餐/午餐/晚餐一样,为您设置和调整CI / CD的必要性。
  13. 有AWS经验;
  14. 准备与公司一起发展;

因此:


  • 1至6-系统管理员
  • 7-一点网络管理,也适合中级系统管理员
  • 8-一点点安全,这对于中级系统管理员是必不可少的
  • 9-11-中间系统管理员
  • 12-取决于任务集,中级系统管理员或构建工程师
  • 13-虚拟化-中间系统管理员(或所谓的CloudOps)对特定托管平台的服务有高级了解,可有效利用资金并减少服务负载

总结这个空缺,我们可以说中级/高级系统管理员已经足够了。


顺便说一句,不要在Linux / Windows上强烈分隔管理员。 当然,我了解到这两个世界的服务和系统是不同的,但是每个人都有一个基础,任何尊重自己的管理员都熟悉彼此,即使他不熟悉,对于一个有能力的管理员也不难了解这一点。


考虑另一个空缺:


  1. 具有构建高负载系统的经验;
  2. 精通Linux操作系统,系统范围的软件和Web堆栈(Nginx,PHP / Python,HAProxy,MySQL / PostgreSQL,Memcached,Redis,RabbitMQ,ELK)的知识;
  3. 具有虚拟化系统(KVM,VMWare,LXC / Docker)的经验;
  4. 脚本语言知识;
  5. 了解网络协议网络的运行原理;
  6. 了解构建容错系统的原理;
  7. 独立和主动;

解析:


  • 1-高级系统管理员
  • 2-取决于在此堆栈中投入的含义-中/高级系统管理员
  • 3-经验(包括)可能意味着-“集群没有增长,但是创建和管理了虚拟机,只有一台Docker主机,对容器的访问非常紧张”-中间系统管理员
  • 4-初级系统管理员-是的,无论语言如何,管理员都不能编写基本的自动化脚本,而管理员-enikey则不能。
  • 5-中级系统管理员
  • 6-高级系统管理员

总结-中/高级系统管理员


另一个:


  1. 经验丰富;
  2. 具有使用一种或多种产品形成CI / CD流程的经验。 Gitlab CI将是一个优势。
  3. 使用容器和虚拟化; 如果您使用docker-很好,但是如果使用k8s-很好!
  4. 具有敏捷团队经验;
  5. 熟悉任何编程语言;

让我们看看:


  • 1-嗯...你们是什么意思? =)他们自己很可能不知道背后的原因
  • 2-建筑工程师
  • 3-中级系统管理员
  • 4-软技能,尽管敏捷被认为是方便的一件事,但我们不会考虑。
  • 5-太庞大了-它可以是脚本语言,也可以是已编译的语言。 有趣的是,他在学校写过Pascal和Basic吗? =)

我也想就三点发表评论,以加深对为什么系统管理员涵盖这一点的理解。 Kubernetes只是一个业务流程,它是将直接命令发送给网络驱动程序和虚拟化/隔离主机的工具,并包含几个命令,并使您可以抽象地与它们进行通信。 例如,采用“构建框架” Make,顺便说一句,我不认为这是一个框架。 是的,我知道在任何需要和不需要的地方推销Make的方式,例如,认真地将Maven包装在Make中吗?
本质上,Make只是外壳上的包装器,它简化了编译,链接,编译环境以及k8。


有一次,我采访了一个在OpenStack之上使用k8s的人,他谈到了如何在其上部署服务,但是,当我问到OpenStack时,事实证明它正在被管理以及由系统管理员提出。 您是否真的认为提出OpenStack的人,无论他在身后使用哪个平台,都无法使用k8s?=)
该申请人实际上不是DevOps,而是同一位系统管理员,更确切地说,是Kubernetes管理员。


我们再次总结-中级/高级系统管理员就足够了。


挂多少克


所示职位空缺的提供的薪金差额为90k-200k
现在,我想在系统管理员和DevOps工程师的金钱报酬之间划出一条相似线。


原则上,为简化起见,您可以分散经验等级,尽管这并不准确,但出于本文目的已足够。


经验:


  1. 3岁以下-初级
  2. 6岁以下-中
  3. 6岁以上-高级

员工搜索网站提供:
系统管理员:


  1. 初级-2年-50k卢布。
  2. 中-5年-70k卢布。
  3. 高级-11岁-100k卢布。

DevOps工程师:


  1. 初级-2年-100k卢布。
  2. 中-3年-160k擦。
  3. 高级-6岁-220k擦。

根据“ DevOps”的经验,我们至少从某种程度上影响了SDLC。


从上面可以得出结论,事实上,公司不需要DevOps,而且他们可以通过雇用管理员来节省至少50%的原计划成本,此外,他们可以更清楚地确定人员的职责并迅速满足需求。 不要忘记明确的职责分工可以减少人员需求,并由于没有交集而在团队中营造更有利的氛围。 绝大多数职位空缺中充满了实用程序和DevOps标签,但是,它们实际上并没有对DevOps Engineer的要求,它们只是管理员的要求。


培训DevOps工程师的过程也仅受一组特定的工作,实用程序的限制,并未提供对过程及其依赖关系的一般理解。 如果一个人可以在10分钟内仅使用控制台中的一个命令,就可以使用Terraform在该集群中结合Fluentd边车以及用于日志记录系统的AWS ELK堆栈来部署AWS EKS,但前提是他不了解处理的原理日志以及为什么需要它们,而不是知道如何收集度量标准并跟踪服务的降级,那么它将是相同的enikey,能够使用某些实用程序。


但是,需求创造了供应,我们发现DevOps职位的市场非常过热,那里的要求与实际角色不符,而仅允许系统管理员赚取更多。


那他们是谁 DevOps还是贪婪的系统管理员? =)


如何进一步生活?


对于雇主-制定要求并准确寻找需要的人,而不是分散标签是更准确的。 您不知道DevOps的功能-在这种情况下,您不需要它们。


工人-学习。 不断提高您的知识,查看流程的整体情况并跟踪实现目标的路径。 您可以随心所欲,只需尝试即可。

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


All Articles