我已经完成/创建了许多与SCM相关的演示文稿,现在我正试图“升级”为DevOps的后续产品。

我一直在演示文稿中尝试做的是最后是一张介绍幻灯片,其中以某种方式包含了我想传达的信息(然后在我的其余演讲中详细阐述)。这样做时,我会尝试回答自己的问题,例如“如果我想在10到20秒(仅!)的时间内向刚接触的人讲1到3个短语,我想用什么?* “。

我以为我知道DevOps的实际含义,以及它的含义。但是我已经看到了DevOps的一些奇怪用法/上下文(甚至在DevOps.SE ...上)。这使我怀疑DevOps到底是不是完全错误。

那么,通常公认的DevOps定义是什么?

评论

评论历史已移至聊天记录如何改进问题的记录。

我从与许多人交谈中学到的主要知识是,没有达成一致的定义。

merci @XiongChiamiov ...听起来您可能已经意识到其他定义之一...为什么不尝试将它们发布为额外答案?

#1 楼

简而言之,DevOps

来自Wikipedia:


DevOps(“软件DEVelopment”和“信息技术OPerationS”的剪辑复合)是用于指代的术语。一系列强调软件开发人员和信息技术(IT)专业人员合作与交流的做法,同时使软件交付和基础架构变更的过程自动化。

它旨在建立一种文化和环境,构建,测试和发布软件可以快速,频繁且更可靠地进行。


概述:




Venn图显示DevOps是开发,软件和运营以及质量保证的交集
(QA)


DevOps”,而是一组工具,也称为DevOps工具链:




显示DevOps t阶段的插图oolchain


DevOps的插图

以下是一些关于DevOps.SE的问题的引文,它们似乎都可以以某种方式适合/确认部分内容。上面的DevOps说明:



来自“ SRE和DevOps有什么区别?”:


... DevOps是有关维护代码的信息...



来自(如何回答)“如何聘请适合我公司的优秀DevOps?”:


...人们普遍误以为“ DevOps”是公司中的角色。这个词仅表示软件公司的组织转变...



来自“我的组织是否需要采用Agile Soft。开发人员在采用DevOps之前?':


... ...仍然有一些组织在软件开发方面没有实践敏捷,可能对采用DevOps感兴趣...



DevOps不是角色

以下是一些关于DevOps.SE的问题的引文,所有这些似乎都表明DevOps不是角色:



来自(答案)' Sysadmin和DevOps Engineer有什么区别?':


... DevOps不是角色(当这样使用时,它比实际角色更是一个时髦的词)。 >


从(答案)开始:“如何聘请适合我公司的优秀DevOps?”:


...人们普遍误以为“ DevOps”是公司中的角色。这个词仅表示软件公司的组织转变...




#2 楼

在担任DevOps顾问之前,我已经为不同的客户提供咨询服务,为我提供咨询服务近五年,在担任我的现职之前,我担任过软件开发,Web运营和系统管理方面的职务。以我个人的经验,DevOps有很多风味。

组织模式

DevOps反模式:


NoOps和NoDevs-并不是严格的DevOps但是,从最严格的意义上讲,这些团队既可以构建和运行软件,又可以在开发和运营之间划分界限。这些团队所面临的挑战要归结为成熟,开发团队可能是专家级的软件开发人员,但新手还是运维人员。反之亦然。 “生产”它以使其可操作。挑战归结到现在有两个交接点,即开发→DevOps和DevOps→运营。模型,但是,它可能应该称为“工具团队”或“平台团队”。

DevOps模式:平台工程师,团队中负责但不负责提供自动化,工具和基础结构以供解决方案的配置和部署的人员,有时还包括操作软件-在我看来,这实际上是后者DevOps的代表。
制度化的DevOps-项目团队共同负责软件包的开发和运营,以建立共享所有权和积极的反馈循环。

实践

DevOps bu的实际做法在其他一些实践的基础上,也就是:


敏捷交付
持续集成
持续交付
持续部署

上述每种实践都基于另一种实践,有可能不遵循一种实践,但是,这意味着缺少重要的反馈周期,这可能表示“机会错失”。遵循任何其他实践和DevOps的关键区别在于生产中的软件操作。



三种方式

Phoenix Project Gene Kim和他的合著者描述了DevOps的三种方式:

系统思考




第一种方式强调整个系统的性能,而不是特定的工作部门或部门的性能-可以是一个大部门(例如,开发或IT运营),也可以是单个贡献者(例如,开发人员) ,系统管理员)。


以我的经验,开始让开发人员考虑操作问题和非功能性需求可以实现此目标。这是DevOps的文化方面的很大一部分。

反馈环的放大




第二种方法是关于创建从右到左的反馈循环。几乎所有流程改进计划的目标都是缩短和扩大反馈循环,以便可以不断进行必要的纠正。警报,因此非常适合DevOps的工具组件。

连续实验和学习的文化




第三种方式是创建一种文化,该文化可以促进两件事:不断的实验,冒险和从失败中学习;并理解重复和练习是精通的前提。


这非常适合文化空间,尽管它在很大程度上取决于使文化得以发展的工具和过程。

评论


很好的答案!尽管我的确比较了不同实践的图表比较...尤其是在敏捷方面。我认为这是一个笼统的名词。测试被排除在外,尽管一些敏捷方法将测试作为其实践的核心。曾经有人认为DevOps非常敏捷(或者可以取决于实现方式)。敏捷宣言更多地描述了一种哲学,而不是一种严格的实践规则。挑剔的不仅仅是让您抱怨,这是一个非常不错的答案!

– Newtopian
17年4月11日在13:55

我不能完全相信该图,它是由许多顾问在我之前在世界各地的许多白板上绘制的。我猜这是在描述敏捷实践,团队专注于在短时间内构建潜在可用的产品,CI则是将部分工作自动化的实践,C。交付自动化,直到为部署做准备,C。实际部署进行部署并由DevOps进行生产中的软件操作。

–Richard Slater
17年4月11日在14:01

#3 楼

我听过很多很多关于DevOps的定义。其中包括:


开发人员处理操作任务
一个人在相同的时间内完成两倍的工作量
开发人员和操作团队彼此合作
用于开发人员工具的操作(与“ Web Ops”类似)
创建和维护开发人员工具的人员的职位名称
在操作中使用自动化
使用运营中的公共云计算
将运营,开发和质量保证方面的工作结合在一起的工作
需要帮助开发和运营团队一起工作的工作
打破团队之间障碍的哲学
将基础架构作为代码处理
前软件工程师投入运营后会得到什么
一个完全毫无意义的流行语

DevOps实际上是什么并没有公众的共识。几年前,我们在“敏捷”方面也遇到了类似的问题,并且有一个书面定义。 ,否则他们最终会听到相互矛盾的定义并感到困惑。例如,如果您试图将基础设施作为代码来谈论,请告诉他们您正在谈论基础设施作为代码。越具体,越好,因为即使采用公认的定义,大多数公司也将更多精力放在哲学的某些部分。

#4 楼

在这种情况下,我经常使用的定义如下:

“一种软件创建文化,它强调软件开发和运营团队之间的沟通和协作,同时使软件交付过程和基础架构变更自动化。 DevOps的目标是使软件构建,测试和部署过程尽可能频繁,快速和尽可能地进行。”

然而,连同定义,了解他们为什么需要我们的DevOps也很重要。一定要告诉他们DevOps可以更快地缓解软件缺陷,允许更好的资源管理,更少的人为错误,更好的版本控制,稳定的操作环境等。

#5 楼

通过以下科学研究论文来确切地探究“什么是DevOps”这个问题,DevOps的建议派生定义为:


DevOps是一种旨在弥合开发与开发之间的差距的开发方法。 (Dev)和运营(Ops),强调了沟通和协作,持续集成,质量保证和交付,并利用一套开发实践进行了自动部署。


[Jabbari等。“什么是DevOps ?:定义和实践的系统映射研究”(2016年)

#6 楼

Devops是编写业务领域为运营的应用程序的开发实践。大多数应用程序开发的重点是构建用于财务,医疗保健,物流或猫视频的应用程序,而devops则重点关注能够进行构建,部署,监视和指标收集的应用程序。使决策者成为决策者。想象一下您银行的移动应用程序。当您请求转移时,点击按钮即会发生。您做出了决定,然后做出了决定。您的操作也一样。当适当的人决定准备将某些工作部署到生产中时,他们应该能够按一下按钮,并且“应该发生的事情”。同样,他们应该拥有做出正确的业务决策所需的所有必要信息。

不是要给商人提供对服务器的外壳访问权限-这与实现的目的相混淆。这是关于向正确的人提供正确的旋钮和杠杆以及正确的信息和正确的护栏,以使决策者成为决策者。

评论


谁的业务领域是运营:是否可能对此进行扩展,或给出一些示例?

– Dawny33♦
17年4月5日在18:06

我不同意,devops是一个支持软件开发的组织模型,而不是本身的开发实践,您可以在devops模型中进行极限编程(例如,mixin dev,ops,clients和testers)(答案的其余部分都不错) )

–滕西拜
17-4-6在18:24



“ Devops是编写以业务领域为运营的应用程序的开发实践”的基本定义,这不是我见过的任何人都订阅的。无论领域或目的如何,编写应用程序都是开发,而不是DevOps。

–阿德里安
17年4月6日在20:06