近来,拥有DevOps工程师的想法变得非常流行,就像Puppet博客中所描述的那样,只有一个可以加入并提供DevOps的许多好处的人似乎很有吸引力

使用DevOps做法的组织具有很高的功能:根据我们的2015年DevOps状况报告,它们部署代码的频率是竞争对手的30倍,并且部署失败的次数减少了50%。 br />

但是,我注意到许多反对DevOps工程师尝试进行这些改进的想法:


关于DevOps核心属性的广泛共识,“ DevOps工程师”一词引起了争议。有人说该术语本身与DevOps值矛盾。持续交付的合著者Jez Humble指出,仅凭称呼一名DevOps工程师就可以在开发人员和操作人员之外创建第三个孤岛-“ ...显然,尝试和解决这些问题的方法很差(很讽刺) ”。


为什么企业聘用DevOps工程师尝试“实施DevOps”不是一个好主意,而不是像这样的博客所提倡的组织变革?仅具有独立的DevOps角色是否会抵消好处?

评论

您应该做对您的业务,团队和项目最有效的事情。您应该尝试找出最有效的方法。敏捷性正在根据您的具体情况进行更改。正如肯特·贝克(Kent Beck)所说,“对一个有趣的问题的任何体面的回答都开始了,'取决于...'”

#1 楼

TL; DR:您永远不应尝试聘请DevOps团队


本质上,最常见的三个角色是:DevOps Architect /传播者
DevOps工程师
CI / CD工程师

这些角色不同于传统上组成软件工程组织的6个基本软件开发角色:


产品管理
软件开发
工具开发
安全性与合规性
质量与测试
系统操作(SRE)

让我们一个接一个地介绍这三个角色,看看它们的适合程度。丢失,缓慢,损坏并且不知道该怎么办。

时间:在计划阶段的过程开始时。整个软件工程组织的所有经理和负责人。此人将计划将您的工程组织转变为一个运转良好的状态。

谁:精通理论,管理实践,文化主题和运营的咨询成员,直接向软件工程副总裁报告。

在某些情况下,对于中小型公司,您可以通过雇用DORA之类的咨询机构来开始这一过程。

DevOps工程师



为什么:



如果团队是按照上述职能角色组织的,则可以弥合团队之间的鸿沟,以确保跨职能级别的合作。
要与面向产品的团队紧密结合,该团队具有团队中包括的6个传统角色,以帮助弥合知识鸿沟并帮助实施和采用新颖的实践和工具。



何时:一旦您制定了计划,组织转型就开始了,整个管理团队都加入了。

内容:实现跨职能合作,确保打破团队界限,确保团队内部的局部优化不会对从客户希望到客户交付的整个价值链的高工作量造成障碍。谁:经验丰富的工程师,具有软件开发和系统操作方面的技能。他应该精通与DevOps转换相关的最佳实践,流程和文化变化。实施CI / CD管道,集成您的工具链,引入使公司更好运转的工具。

内容:工程师,基本上是工具团队的一部分,能够建立CI / CD管道并开始集成内部系统,从而消除工作量中的摩擦。 />
谁:工程师在工具,集成过程,版本管理和DevOps实践方面经验丰富。知道他们在自动化过程中正在替代人为控制的人。


评论


我很难将您的tl; dr与您给出雇用理由的其余答案联系起来...

–滕西拜
17年4月6日在13:58

其余的答案说明了与DevOps相关的角色如何都不有助于创建一个由这些人组成的团队。不要雇用新团队,而是根据需要将个人嵌入组织中的特定位置。

–吉里·克劳达(Jiri Klouda)
17年4月6日在14:17

@JiriKlouda是一个很好的答案,我几乎100%同意,短于“系统操作(SRE)”一词-系统操作!=网站可靠性工程师,后者是Google的DevOps模型,它仍然体现了DevOps的核心原理,但保留了一些拥有专业操作员团队的优势。

–Richard Slater
17-4-6在14:33



我的意思是指任何形式的运营团队,无论是传统形式还是SRE形式,还是任何其他形式的基础架构或平台管理。相信我,您可以拥有Site Reliabikity团队,而无需完全采用DevOps :)

–吉里·克劳达(Jiri Klouda)
17年4月6日14:46



老实说,那里根本不够。 CI / CD工程师应该具备足够的知识来设计管道。 DevOps架构师可以在组织级别执行高级工作。我已将其与DevOps工程师分开,因为它具有不同的特性。它是面向工具的工程工作,可以轻松地成为团队的一部分(工具/集成/内部应用程序团队)。这就是人们通常将DevOps工程师误认为是什么。这是发布工程师的发展,但具有自动化。他们现在不用门控,而只是构建和监视自动化。

–吉里·克劳达(Jiri Klouda)
17年4月8日在19:35

#2 楼

我认为您的问题链接中所述的Devops工程师主要是sysadmin角色。引用此技能作为本答案的背景知识:


您的攀岩装备。


Linux / Unix Administration的扎实背景
使用Puppet,Chef或同等功能进行自动化/配置管理
能够使用多种开源技术和云服务(需要具有AWS经验)
具有丰富的SQL和MySQL经验(NoSQL经验)也是一个加分项,因为我们也使用Redis)
对代码和脚本(PHP,Python,Perl和/或Ruby)有一定的了解。 ,始终可用的服务





在此示例职位描述中,DevOps Engineer只是一个时髦的词汇,它表示系统管理员熟悉基于云的基础架构,自动化,能够读取代码以提供帮助诊断方面的知识,并了解高可用性做法和解决方案。

这与DevOps做法和孤岛破坏文化松散相关如这个问题所示,开发人员和操作人员之间的关系Sysadmin和DevOps Engineer有什么区别?和文化,不是驱动公司转型的合适人选。您不会因为文化的改变而雇用此人,而是拥有工具配置视图,这实际上并不会帮助您打破流程。如果事先没有计划的文化变革,那么他/她的同事也可能对此很不满意,您只会对变革产生抵触情绪。

要获得成功的发展模式,@ Jiri Klouda的答案概述了可接受的DevOps工程师角色以及将带来价值并帮助成功的变更步骤。

评论


您将如何区分一个习惯于阅读代码以诊断问题,云基础架构和自动化的系统管理员,以及经验丰富却不具备这些技能的传统系统管理员?

–avi
17年4月6日在16:28

@avi是他们的简历,我比较喜欢的示例是我的简历,它的标题仍为Net / Sysadmin。我已经为一些合作项目提到了devops组织。由于我在此答案中提到的警告(在合同期间被击中一次),因此我通常不会使用devops作为流行语来寻求建议。

–滕西拜
17年4月6日在16:33

@Avi,如果您在求职建议中指的是,在求职细节中,所需资格与问题中所要求的资格和Jiri答案中所要求的资格相差甚远,以保持相应的职位名称恕我直言

–滕西拜
17年4月6日在16:35

我倾向于说,对自动化不满意的系统管理员只是技术欠佳的系统管理员,而不是其他职位。另请参阅John Allspaw的这篇文章。

–熊佳亚诺夫
17年4月7日在17:53

#3 楼

我意识到这个答案可能不适合您,但是我就是这样做的。

我是第一个在非常繁忙的电子商务初创公司工作的开发人员,流量非常高。我意识到公司还很年轻,而且在一段时间内,我将是唯一的内部技术资源。

知道了这一点,我决定以这样一种方式来构建我的基础架构,即我必须进行零系统管理。

我决定托管在云中,因为这样做使我无需进行系统维护。
我正在寻找具有木偶经验的AWS工程师。我们共同构建了一个可自动扩展的基础架构,以代码形式在cloudformation中编写。所有配置文件都在puppet中进行了版本控制。

这使我作为开发人员可以承担这个devops角色。我使用python,fabric构建了代码发布工具。我使用相同的脚本将应用程序引导到自动缩放的新服务器上。

效果很好,三年后的今天,我仍然不进行任何系统维护。我们有一名系统管理员(同一位AWS工程师),每个月工作10个小时,我试图以这种方式构造他的sprint,以免对他造成困扰。这样,我尊重他的时间,并尽我所能来管理他的冲刺。

我希望这个答案可以以某种方式使您受益

评论


非常有帮助,谢谢。有趣的是,听到您从本质上如何间接地被他人称为“ DevOps工程师”,并且我认为(根据其他答案),您的方式更符合没有完全独立的“ DevOps”的DevOps哲学。 ' 部门。听起来到目前为止,它对您来说效果很好!

–Aurora0001
17年4月8日在8:33

因此,基本上您可以自己管理一切?如果离开公司会怎样?企业能够生存吗?您的管理层对此有何看法?

– 030
18年4月26日在22:19



基础架构自行管理。它已完全记录在案,并且我们使用Terraform&Puppet来协调基础结构并管理服务器配置。因此,实际上,任何具有AWS经验的木偶/地形工程师都可以插手。我现在是该业务的股东,而且我们的开发团队已经有了很大的发展。值得庆幸的是,现在每个人都知道基础架构的流程

–user2965205
18年4月28日在13:52

#4 楼

您不应该聘请DevOps工程师,因为DevOps涉及的学科非常广泛,以至于一个人不可能成为这些学科的所有方面的专家。通过雇用所有行业的杰克,您将雇用无精打采的人。考虑DevOps的范围。一个人不可能:


成为[语言]的摇滚明星开发者
成为网络专家,了解所有必需的RFCs
成为一名发力的系统管理员>成为专业的质量检查测试人员
成为数据库管理员
专门从事存储和备份
了解站点可靠性工程
可能还有其他学科

以上甚至包含了子学科,例如Windows系统管理与Linux / Unix系统管理,或者您可能在自己的语言中使用了不止一种编码语言。

没有人可以成为这一切的专家这意味着如果您要招聘DevOps工程师,那么当DevOps团队中最薄弱的领域是网络时,您就不能很好地为DevOps团队宣传对网络专家的需求。尽管任何人都不应成为DevOps团队中的特定角色,但您会假装在DevOps范围内没有专家或主题专家(SME),这会对您的团队造成损害。将摆锤从一个极端转到另一个极端-从孤立到假装就像DevOps团队中的每个角色一样-可能会引起同样多的问题。一个以上的学科-尤其是在重叠领域是好的,希望他们能够精通如此广泛的知识根本不是实践。这意味着任何告诉您他们了解DevOps各个方面的人都可能在骗您。聘请您在DevOps团队工作最薄弱的领域的专家-不是“ DevOps工程师”。

评论


因此,所有这些职位描述只是白白看谁申请?他们似乎想要世界上的一切。我看着它,然后想,我知道这个,那个,那个,不是那个,不是那个,不是那个……。也许所有的企业都在描述世界,看看他们能得到什么。

–约翰尼
19年4月9日在20:33

@johnny我听说过一些故事,这些故事要求仅在5年前创建的技术就需要7年的经验……是的,它们是愿望清单。不难的要求。

–詹姆斯·谢威(James Shewey)
19年4月9日在20:54

谢谢。愿望清单是我一直在寻找的短语。

–约翰尼
19年4月10日在18:57

#5 楼

在ASOS实施时,我遇到了确切的挑战。我们的目标是拥有一支能够自给自足的团队,因此发挥敬业精神可能是一种反模式。但是,我们生活在现实世界中,对于许多开发人员而言,考虑良好的DevOps实践并不是他们的首要任务,因此他们需要帮助到达那里。

我们所做的是:


不使用DevOps工程师的术语,DevOps是我们都应该做的事情,而不是我们的职称,所以我们称之为他们有所不同。
将他们推广到团队中,但只有三分之二,这意味着他们不能做事,但必须被视为帮助团队变得更好并解决自己的问题的能力(在指导下)
保持了中心职能以及充当胜任力中心并处理企业考虑事项,任何影响所有团队的因素

随着我们的发展,我们对该模型进行了审查,但对于我们来说,该模型到目前为止一直有效

#6 楼

我认为您将无法获得确切的答案,因为似乎很多因素都在其中。 br />公司提供什么样的应用程序或服务
贵公司的结构

我刚刚完成了职位面试,最终获得了DevOps工程师的头衔,我正在做的是Sys Admin工作。由于公司的规模以及所管理的应用程序的本质,这完全没有必要。
我面试过的一些职位也有类似的头衔,而且他们正在寻找更多来自事物发展方面的人来明智。他们期望更多的代码编写,而不是自动化的系统管理员。
SRE似乎是一个越来越受欢迎的头衔,所以这可能是一条路。我的上一份工作是系统管理员和自动化工程师,因为我有时会写Ansible和Chef Stacks。该公司遵循的是一个很好的devops模式,每个人都参与其中,开发人员与ops一起工作,但我认为他们的未来并没有考虑到专门的基础架构人员。

现在我处于这个位置,我正在尝试以某种自动化的方式拔钉子,我们遇到了一些必须解决的人员问题。人们来来去去,之所以设计某些工作流,是因为其他人是这样设计的,而不是因为它适合人们的工作方式。

因此,基本上,我认为您应该弄清楚职位描述,而不必太担心标题,除非标题以某种方式被支付,或者您认为一个或另一个吸引合适的人。 />

#7 楼

如果您关心DevOps的含义,请遵循“一条真实的道路”。您不应该聘请DevOps工程师。您应该聘请自动化工程师,部署工程师,平台架构师或其他一些可以满足您需要的角色。你可以随便叫它。

评论


请扩大您的位置,这个问题对于这个问题来说太短了。

–滕西拜
17年5月22日在15:27

@Tensibai-我唯一要说的是,它只是一个标题。如果您没有真正遵循DevOps原则,那么致电某个DevOps工程师并不重要

–埃里克·冯肯布施(Erik Funkenbusch)
17年5月22日在15:37