DevOps意味着开发人员现在应对基础架构和发布负责-但是,此更改背后的驱动力是什么?


18

DevOps意味着开发人员现在应对基础架构和发布负责-但是,此更改背后的驱动力是什么?

我会把牌放在桌上:我是一名开发人员,曾在“ DevOps”和非文化领域工作过。不必担心基础结构,发行版,质量保证以及相关的仪式,这将使编写好的代码分心。

但是行业正在朝这个方向发展,那么这是什么原因呢?角色专业化的“旧”模型引起了哪些问题?


4
您是在说代码质量下降是因为您执行其他操作,还是代码数量下降了。
凯莱斯(Caleth)'16

1
请把桌子上的卡片拿下来。这就像原样抱怨一样。
svidgen

7
@svidgen如果该问题纯粹是一个棘手的问题,那将有所不同,但OP有权表达他们的意见并提出完全有效的问题。
罗比·迪

1
@robbie当然。您会注意到我无论如何都回答了……但是,这个问题的“观点”部分消耗了一半以上的身体,夹在重申的同一基本问题之间,在这种情况下,它分散了基本问题的潜在纯度。但是,是的。仍然值得回答..
svidgen

Answers:


19

主要原因是云。

过去,您的代码先放入软盘,再放入CD,然后再部署到服务器上,然后再部署到两台服务器上(以实现弹性)...所有这些部署都可以手动完成由人类完成,因此对人类进行了培训。

如今,您的代码通常要传送到数十个或数百个服务器。实际上,人工操作无法完成对这些服务器的配置,配置和部署。您需要系统管理员知道足够的脚本来自动化该过程,因为您现在使用的是Chef或其同类。但坦率地说,没有足够的系统管理员可以做到这一点。因此,开发人员被拉进来以弥补松弛。

是的,在开发人员不断增长的需求中增加更多技能自然会降低他们在其他地方的能力。这个想法是让开发人员洞悉构建/发布过程,他们可以更好地预测问题,或者拥有改进它的自主权。这样的想法是,自从发行版本胜过代码编写损失以来,所有内容的质量都会提高。

我怀疑这种折衷是否值得人们经常这样做。


2
您因为“ 主要原因是屁股迷失了我。
tedder42

15

各种组织迁移到DevOps的原因多种多样。
我将尝试列出经常出现的那些。

缩短变更周期的
时间在提出变更请求与在组织中实际部署和使用变更请求之间通常要花费很长时间。首先,它是由开发人员在一个开发周期中计划的,而交付后,则是在操作的一个发布周期中计划的。两个周期都包括测试,如果发现问题,则两个周期都会重置。通过整合开发和运营部门,我们可以简化这两个流程。

软件与硬件问题
还记得Bugs Bunff漫画中Bugs和Daffy争论的是鸭子季节还是兔子季节?现在想象一下,我们改为与开发人员和运营商合作,其中开发人员认为这是硬件问题,而运营商认为这是软件问题。对于最终用户而言,这是没有区别的区别。他们只是想要修复它。
通过将开发人员和运营部门整合在一起,他们将不得不解决问题。结果可能是软件和硬件问题。

我们与他们
之间的关系在许多公司中,测试人员和开发人员之间的距离越来越大,因为他们是独立的部门,并且开发周期越来越规范和标准化。
随着敏捷的到来,开发人员和测试人员之间的合作越来越紧密,我们已经开始看到彼此对开发周期的观点,甚至可能会尊重它。
在开发人员和运营部门之间也会发生类似的需求,因为随着这两个领域的成熟以及流程的进一步正规化和标准化,这些部门之间的距离越来越大。因此,传统模型的问题之一是,对于开发人员和运营人员而言,这似乎是“我们”还是“他们”。双方都不完全了解对方责任的难度。

期望/优势
通过DevOps,两个专业都将学习彼此传统上执行的一些技能。没有人会期望系统管理员会成为软件工程师或开发人员会成为网络工程师,但是都希望他们俩承担其他人的某些职责。这意味着当您确实需要一些额外的帮助时,它们就在那儿。

对于开发人员来说,存在一些明确的好处:您现在可以更好地控制测试环境,发现将软件部署给用户更容易,并且组织中有更多人可以与您分享对工艺的热爱。


4
+1-因为它与最终用户有关,而不仅仅是代码。
JeffO

3

仅仅编写高质量的代码是不够的。您是问题的一部分,还是解决方案的一部分。

对于许多程序员而言,您正在编写的软件是由某些最终用户付费的。编写高质量的代码是一件好事,但这也是客户/经理认为您应该始终做的很快的事情。这就像说木匠可以准确地切割木板,但是您实际上是在建造有人想要支付的东西吗?

DevOps为开发人员提供了更多控制权,并希望将其代码与最终结果保持一致。谁最适合使操作流程自动化?最终用户满意度是主要的衡量标准。您不仅必须编写质量代码,而且还必须使客户满意。抱歉,但是没有人会回到使用代码行。他们不在乎是否从头开始构建自己的ORM框架,就像普通购房者不在乎是否砍倒树木并自己制作板子一样。是否有人要重做所有配置文件,因为您的“升级”将它们重新设置为默认值?

您想炫耀您的开发人员排行榜吗?建立人们想要购买的东西,其中包括整个用户体验。您正在编写质量代码非常好,但是不幸的是,如果未按付费客户的要求发放奖金,则可能无法获得奖金。随意责怪质量检查人员,但您的公司仍然没有足够的钱来付给您更多。


2
我敢肯定,您知道聘请优秀的软件开发人员有多难。现在,我们需要他们成为优秀的业务分析人员,对质量检查仪式感兴趣,并担心发布过程。符合新标准的人数将很少。
2016年

2
@本:没有“现在”;这些都是优秀的开发人员数十年来所做的事情,直到有人认为DevOps是新事物并创造了这个术语。作为开发人员,您的工作是解决问题,这些问题从解决方案的需求到确保您编写代码后必须处理代码的人员都不会感到困难。跳过其中的任何一个,如果他们需要十磅的雪橇将其钉入圆孔,则没人会在乎您的方形钉的制作精美程度。
Blrfl

这似乎是反对专业化的论点。一个人应该成为所有行业大师中的佼佼者。在其他任何行业中都没有建议这样做,您没有让电气-瓦工-水管工人-屋顶工人试图了解有关建造房屋的每一点信息
Richard Tingle

2
@RichardTingle:没有人说您必须了解所有内容,但是您必须了解使用产品时接触到的东西。水管工必须充分了解电工的工作-或至少与电工合作-要知道冷水管穿过断路器箱是不安全的,即使有可用的拆卸器也是如此。
Blrfl

甚至不用理会这个问题。-1
RubberDuck

2

这与敏捷与Scrum紧密相关。不再有明确定义的工作角色-每个人都是“开发人员”。

这不只是操作。开发人员通常必须承担业务分析,测试,数据库管理和构建经理的角色-清单还在继续。

问题的核心是您可能所说的流失。随着项目中涉及的不同角色的数量增加,会议,误解和资源冲突也越来越多。快速将软件展示在用户面前是最终的选择,可以想象的任何阻碍方式都已经被淘汰了。

这并不完全是一件坏事。您的平均开发商拓展自己的技能虽然果酱越来越非常薄了。它还避免了编码人员和服务器管理员之间的争论,即部署过程中的问题出在哪里。开发人员通常希望使用最先进的技术推出解决方案,而服务器管理员通常不知道管理员POV的含义,直到提供安装集。

才华横溢,有远见的公司终于开始意识到T型人是一件好事。但是,认为自己是一件好事与期望这在以前采用传统文化的地方神奇地发生之间存在差异。


-1“不再是明确定义的角色-每个人都是开发人员。” 那根本不是真的。一个Scrum团队应该由不同的人组成,其中包括开发人员,图形艺术家,IT人员等。角色并没有消失,但是现在的想法是他们全都在一个团队中,而不是分开的部门。
安迪

1
@Andy我建议您再次阅读Scrum指南Scrum不识别开发人员除开发人员以外的任何头衔,无论该人正在执行的工作如何;这条规则没有例外。人们当然会专精,但从本质上讲,它应该是一个自组织的实体。
罗比·迪

称专业人士在Photoshop中创建图形,或称呼角色在翻译中的开发人员会产生误导,因为软件项目中的开发人员被普遍理解为软件开发人员。Scrum指南对此声明完全是错误的。
安迪

0

我敢肯定,开发人员还要(有时)还要管理操作和质量控制有很多理由。这是其中的三个:

  • 兴趣
    一些开发人员实际上希望处理产品的各个方面。如果他们擅长于此,并且填补了团队中的空白或为其他角色的现有团队成员提供了良好的支持,则可能没有任何理由阻止他们。
  • 成本
    大公司可以负担专业的员工。小公司有时做不到。其中一些地方可以雇用1或2或3个开发人员,他们需要能够简单地将工作内容带到室外。
  • 项目规模
    并非每个项目都是一个多人项目。如果您要构建一个“小型”应用程序,那么要由一个以上的人来完成它可能会过大。更重要的是,由许多个人担任特定角色的小型项目令人恐惧。没有人有足够的工作要做-即使您有能力让他们到处晃动手指6个月,好人也不会留下来。如果他们不觉得无聊,就会感到害怕,或者您会发现自己付出了很多钱。无论哪种方式,您的员工都会离开并告诉所有人远离您。

...我相信还有其他原因。


0

“不必担心基础结构,发行版,质量保证以及相关的仪式,这将极大地分散编写好的代码的注意力”

从本质上讲,我认为DevOps表示担心基础架构和版本以及QA就是编写好的代码。

在以前在非DevOps文化中工作的角色中,我遇到过许多问题,可以说,DevOps文化本可以避免的。与在非代表性平台上开发的代码有关的性能问题,开发人员不了解客户端使用的字符编码的字符编码问题,经过手工编码的部署指令,并且对于Ops团队而言没有足够的猜测能力-工作。

现在您可能会争辩说,开发和运营方面的专业化程度提高使我们能够克服其中的一些问题,但是仍然只有通过团队之间的知识和工作共享才能解决很多问题。


0

DevOps不必表示“ Dev现在也可以进行操作”。该术语最初的意思是“ Dev Ops的人员在一个团队中紧密合作”。这确实意味着Ops员工需要变得更像Devs,因为使事物自动化需要某种编程,并且旧的手动方式不能简化它(有关这一点的更多详细说明,请参见其他答案)。

来自维基百科

DevOps(开发和运营的复合部分)是一种文化,运动或实践,它强调软件开发人员与其他信息技术(IT)专业人员的协作和交流,同时使软件交付和基础架构变更过程自动化

因此,我认为实际上,如果您作为开发人员具有相同的旧职责现在又具有运营职责,那似乎在管理方面是一种错误的计算。通过使事情自动化,您很有可能需要更少的Ops人员,因此实际上可以节省成本。但是DevOps当然并不意味着“让我们摆脱所有Ops员工,让Devs来做额外的工作”。

像流行语一样,语义扩散经常发生,人们突然想到“让我们也让Devs做Ops,我想我们可以省钱...”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.