一份DevOps结构清单——请君慢用

开发和运维的关系一直很“微妙”他听我的 他不听我的哦他开口了哦好吧我听不懂他说了啥……开发和运维的恩怨情仇由来已久由此诞生的DevOps却是解决他们之间关系的一剂良药。

DevOps最主要目的在于提高用户和业务需求提高产品的交付能力与效率。不同的行业和企业需要规划各种DevOps团队结构来适应开发和运维的协作。数人云今天和大家讨论的就是这些五花八门的团队结构首先我们先请“反面教材”登场……

反例ADevOps是啥?

这是典型的开发和运维“各管一摊”。它意味着虽然能很早地声明项目完成(这里的完成意思仅仅是功能上的完成而不是交付到生产环境)但是软件的操作性却无法保证因为开发没有为运维考虑很多运维人员也没有足够的时间或者精力去敦促开发去修正这些问题。

大家都知道这个团队结构很糟糕但是显然还有更坏的情况——至少这个结构我们都知道它是有问题的。

反例B被孤立的DevOps

这种形式通常来源于领导或者执行官的决策——他们觉得他们需要一点DevOps然后组建了一个“DevOps团队”。这个团队迅速地形成了一个新的壁垒在他们眼中开发是愚蠢的运维是落伍的他们捍卫着自己小团体的知识、技能和工具让开发和运维相隔得更远。

只有一种情况会让这种结构变得有意义就是这个DevOps团队只是暂时的存在时间低于12或者18个月并且目的明确是让开发和运维更加紧密一旦过了时间点这个团队就不再有用处这种情况会在下文正例5中提到。

反例C我们不带运维玩

这种团队组织的天真和傲慢来自于开发人员和开发部门的领导者尤其是在开始一项新的项目或者系统的时候。开发们设想运维已经是过去式了(“我们现在有云了不是吗”)轻视了运维的复杂和重要性认为他们可以没有运维或者用很少的时间来做运维就可以。

当他们的软件变得更加复杂运维活动开始步入泥潭(哦漏开始编程了)这种结构就会终结取而代之的是下文的正例3(IaaS)或者4(DevOps-as-a-Service)。团队会意识到软件开发过程中运维的重要性就可以避免很多不必要的痛苦和低级的运维错误。

看完了反面教材我们再来看看DevOps中常见的一些可用的团队组织结构。

正例1相亲相爱其乐融融

这是DevOps的“乐土”开发团队和运维团队之间融洽的合作在隔离或者半隔离的产品堆栈上工作需要专攻的地方有专门的负责需要共享的地方也有专门的分享。

但这种融洽的协作模型需要大量的变革以及一个更高水平的技术领导团队。开发和运维必须有一个清晰的沟通表达(来传递可靠、频繁的变化)和明确有效的共同目标运维人员必须和开发人员良好地配合认真处理测试驱动的代码和Git而开发必须认真对待各种运维特性这都需要一个相当大的文化层次上的变革。

适用于有着强大技术领导力的团队组织

潜在效率高

正例2你中有我我中有你

运维人员已经完全嵌入到产品开发的团队中。开发和运维几乎不分开都高度地专注在一个共同的目标里;这是一种正例1中比较有争议的一种特殊形式它有一些独特之处。

Netflix 和 Facebook等组织因为有单独基于Web的产品使用了这种结构而非常有效率。但是这种结构并不适用于狭窄产品带以外的情况因为有限的预算和多个产品线会导致开发运维的隔离。这种完全嵌入的模式也可以叫做“NoOps”(无运维)因为没有明显或者特定的运维团队(Netflix的情况可能也归结为下面的正例3IaaS)。

适用于单一为主、基于Web的产品或服务的组织

潜在效率高

正例3转身困难IaaS来帮忙

一个相当传统的IT运营部门可能不愿或者不能迅速地做出改变或者对于把所有应用都跑在公有云之上的组织来说这种结构可以帮助组织的运维部分只需要一个弹性的基础设置供应用程序部署和运行而内部运维团队则变成了例如亚马逊的EC2或者说IaaS。

这样一个团队(可能只是虚拟的)包含在开发里面在运营上是专家——很懂操作特性、指标、监控和服务器配置等等和IaaS团队有着非常多的交流。然而这个团队依然是一个开发团队遵循着开发的标准实践如TDD、CI、迭代开发和培训等。

IaaS的出现用失去和运维人员直接合作的代价来换取了更简单的实现高效率其实现速度可能比正例1中更快。

适用于有着几个不同产品和服务或有着传统的运维部门或者完全将应用部署在公有云的组织

潜在效率中

正例4当DevOps也成为服务

一些小规模的公司没有专门细分的运维和开发他们需要更专业的技术服务公司帮助构建测试环境、自动化基础设施和监控并为他们在软件开发进程中提供一些运营方面的建议。

DevOps即服务可能会成为一种对小型组织或团队的自动化、监控和配置管理非常有用的形式然后随着团队的成长他们可以承担更多运维为主的员工就会逐渐向正例3甚至正例1进化。

适用于经验有限的小型团队或组织

潜在效率中

正例5担任临时演员的DevOps团队

临时的DevOps团队看起来像大大的反例B但是它的目的和存在时间都不尽相同。这种临时的团队负责把开发和运维联系得更紧密朝着正例1和2演进最终完成使命后消失。

临时的团队将担任“开发语言”和“运维语言”之间的“翻译”将开发们疯狂的想法传达给运维团队把运维的负载均衡、管理网卡和SSL卸载等想法传递给开发。如果有足够多的人开始注意到让开发和运维一起合作的价值那么临时团队就实现了它的目的。至关重要的是部署和生产诊断等长期工作不应该分配给这个临时团队否则它可能会变成反例B。

适用性正例1的先导模式但是有转变成反例B的风险

潜在效率低到高

敲黑板的总结

细数了上面的反例和正例总结一下 DevOps结构的适用性取决于如下几个要素

组织的产品集如康威定理所说更少的产品会让合作更加容易隔阂也更加少。

技术领导的能力和效率开发和运维是否目标一致。

是否有能力或者意愿改变运营部门是否认真地对待产品运营特性。

在运维关键点上是否有能力起到带头作用。

当然这里提到的拓扑结构都是作为一种参考或者启发。在现实中多个模式的组合或者一个模式转换成另一个模式都是可以的毕竟适合才是最好的。

作者数人云

来源51CTO

时间: 2024-09-10 07:36:14

一份DevOps结构清单——请君慢用的相关文章

asp:DropDownList 绑定树型结构,请帮忙

问题描述 我的表(Dir)部分记录如下:IdDirNameParentId1TOP2A13B14A125B13现在我要在DropdownList里显示如下Tree格式TOP|-A||-A1||-B||-B1请各位帮忙给出asp.net参考代码,谢谢 解决方案 解决方案二:你都有这样的样式了,出应该很容易了吧,数据存储过程实现布局,是几级就在其前面加几个空格,看看效果吧解决方案三:碰到这种情况的时候我一般不用DropDownList空间,直接自己用字符串构造<select>...</sel

ssh整合中,使用sql server遇到的问题,换成mysql没有问题,但是却不能自动添加表结构,请赐教

问题描述 最近在搭建ssh框架,在最后的时刻,遇到了这个问题,我用的是sqlserver,首先,驱动包没问题,我以前一直在用这个驱动包,2013-11-0314:43:47,152ERROR[org.springframework.web.context.ContextLoader]-Contextinitializationfailedorg.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithnam

无向图 邻接表数-用邻接表作无向连通图的存储结构写一算法

问题描述 用邻接表作无向连通图的存储结构写一算法 用邻接表作无向连通图的存储结构,请写一算法,求图中一条包含所有項点的简单路径,并依次输出路径中所有结点的编号 解决方案 http://www.doc88.com/p-7894008228733.htmlhttp://www.360doc.com/content/12/0420/15/1740930_205197838.shtml

详谈SEO站点结构101

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 In SEO站点结构101,第1部分,我们开始谈论搜索引擎友好的设计基本. 在这就职,我们将继续我们的讨论. 但是,在我继续前进之前,我希望突出信息建筑学或用户经验设计的重要性. 这就其本身是我们不会详述这里的一个整体学科. 这里The常规想法是时间花费对采访或认识走向您的站点和期望他们的需要和集成这知识您的站点设计和结构的访客. 搜寻引擎提

e1-帮忙解析这个树形结构的JSON。求方法

问题描述 帮忙解析这个树形结构的JSON.求方法 [{"id":"297e1e2e44770cfc01449f43aad100bc","pid":null,"text":"华南区","isexpand":null,"classes":"folder","hasChildren":null,"expanded"

《深入分析GCC 》——第3章 GCC总体结构3.1 GCC的目录结构

第3章 GCC总体结构GCC是一个复杂的软件系统,例如gcc-4.4.0.tar.gz软件包中包含了成千上万个文件.本章主要对GCC的代码结构和目录结构进行介绍,阐明GCC的主要模块及其相互关系,并给出GCC源代码编译的主要步骤和关键问题.3.1 GCC的目录结构GCC的源代码可以从GCC的官网(https://gcc.gnu.org)上获得.该源代码包主要包括bz2和gz两种压缩形式的tar包,以gcc-4.4.0为例,分别为gcc-4.4.0.tar.bz2及gcc-4.4.0.tar.gz

php mysql数据的导入导出,数据表结构的导入导出

实现数据的导入导出,数据表结构的导入导出 ********************************************************/         //         //包含Mysql数据库操作文件         //         require_once("MysqlDB.php");          /******************************************************* **类    名:MysqlDB

谈网站优化 让SEO优化简单化(二)

上篇隐客在分享的"长沙隐客谈网站优化,让seo优化简单化(一) "中提到了如何去理解和认识seo,本篇长沙隐客就自己进行网站优化的一些思路分享给大家,声明纯属个人经验所谈,如果各位看官觉得有用,不妨拿去借鉴一下,还是希望笔者的分享能够对各位看官一定的启发. 很多人说网站优化是一个很复杂,很难的工作,其实是因为我们做网站优化缺少规划以及没有把它一一分解出来分布执行,如果你做优化之前理好一份seo优化清单,知道站内和站外该做些什么,把它一一列出来,那么对你后面提升排名的效率和网站权重都会起

参悟JavaScript

引子     编程世界里只存在两种基本元素,一个是数据,一个是代码.编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力.     数据天生就是文静的,总想保持自己固有的本色:而代码却天生活泼,总想改变这个世界.    你看,数据代码间的关系与物质能量间的关系有着惊人的相似.数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态.而代码就象能量,他存在的唯一目的,就是要努力改变数据原来的状态.在代码改变数据的同时,也会因为数据的抗拒而反过来影响或改变代码原有的趋势.甚至在某些