DevOps是云计算时代的开发与运营

DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协做与整合。[1] 它的出现是因为软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工做必须紧密合做。html

如下几方面因素可能促使一个组织引入DevOps:windows

  1. 使用敏捷或其余软件开发过程与方法
  2. 业务负责人要求加快产品交付的速率
  3. 虚拟化和云计算基础设施(可能来自内部或外部供应商)日益广泛
  4. 数据中心自动化技术和配置管理工具的普及
  5. 有一种观点认为,目前占主导地位的“传统”美国式管理风格(“斯隆模型 vs 丰田模型”)会致使“烟囱式自动化”,从而形成开发与运营之间的鸿沟,所以须要DevOps能力来克服由此引起的问题。

DevOps,是一种提倡将开发机构的文化、流程和工具整合到一块儿的集成软件交付方式,跨越从业务规划、建立、交付到反馈的整个软件开发生命周期。DevOps既不只是一个工具、平台或技术,也不是简单的定义开发和运营,而是对软件开发及交付的一门哲学。DevOps里面包括四个维度:(1)计划和监控;(2)开发和测试;(3)发布和部署;(4)版本管理、反馈和分析。安全

在软件行业进入云计算时代后,在整个市场用户对软件产品以及服务的要求也跟着提升,这不只须要开发和运维人员快速实现,并且要快速部署发布上线,而且必须保证业务可靠、高效运行。正如虚拟化改变了数据中心的运营同样,云计算的兴起也预示着IT应用运维将发生重大变革。目前,IT运维团队还一直处于以服务器为中心来驱动的运维模式,而具体的应用则扮演着次要做用。另外一方面,云计算则是以应用为中心的运维模式。服务器

运行在云环境下的应用程序也须要具备高可用性、高可靠性和高灵活性,以应对更多更复杂的工做负载和监测。过去由IT运维基础架构提供的这些功能如今将成为应用程序自己的一部分,这些运维能力须要融入到开发环境中。而在这些以应用为中心的新环境,运维团队将须要与开发者协同建立这些应用程序,也就是刚才咱们所介绍的“DevOps”。DevOps团队是“一群采用新的方式实现更快、更好、更具效益和乐趣来推动开发和系统管理的人群。”架构

传统模型带来的是开发及测试的部门壁垒。随着咱们经过像敏捷,像Scrum这样的敏捷方法,在增强开发团队和测试团队之间的沟通协做以后,其实咱们不可避免地会面临到开发部门和咱们的运维,以及发布运营这样的一个瓶颈。它会取代咱们以前开发团队里面所遇到的障碍和瓶颈,咱们新的要解决这样的问题。DevOps从它的思想和实践上来看,也是随着敏捷的实践项目继续集成、自动化部署这样的一些实践成熟。app

传统的意义上讲,咱们开发团队,开发完了以后每每是打包扔给发布团队,或者说是运维团队,随着咱们对于发布的要求愈来愈高。咱们实际上是要求,就是说生产环境的运维部门和发布团队,跟开发部门坐到一块儿,双方角色互补,开发人员去学习运维的知识和工具。运维去提供我生产环境部署的约束和要求,双方融合造成一个比较一体化的DevOps这样的团队。运维

在虚拟化和云计算出来以前,每每咱们的部署和生产运维,并且都是在实体机上面,实体机上面的成本基数很高的。在虚拟化技术出来以后,我一个普通的运维人员,输入命令就能够获得几台这样的虚拟机。当这样的工具出来以后,我能够再输入命令就会拿到一个彻底同样的环境出来。因此咱们来说,随着虚拟化和云计算技术,以及周边的管理,像自动化建立工具这样的成熟后,DevOps就传统的运维技能会变得愈来愈大众化,能够被咱们开发人员所接受、所拥抱,再用到环境里面去。ide

开发和运维是分开的两个团队,项目之间经过一个发布包,作出一个FTP这样的去沟通。其余团队把包放在FTP上面,而后运维从FTP上取下包去部署。这个致使的问题就是,不少生产环境下面的环境配置,这样的一些软件要求,跟开发的时候不同。DevOps成员是做为团队的一分子参与到开发团队的平常工做里面去,它的几个主要工做职责会包括,第一,它会帮助团队把他们团队对环境的配置、对环境的要求,用一些工具把它变成代码,变成自动化的。另一个就是说,在生产环境下面会考虑到可用性、考虑到安全、考虑到运维的要求。它会把这样的约束条件灌输给团队,团队在设计系统的时候就考量这一块的约束状况,这样的时候实施就会更好一些。工具

开发和运维实际上是两种不一样的技能,开发的头脑里面就是我赶忙把代码写完,扔给运维就行了。运维的头脑就想着,我这块要是出了问题,那我就可能睡不着觉,天天晚上接到电话起来维护。其实来说,两边对对方存在一些这样的误解,很大的缘由就是,你们对于各自工做是不了解的,他不知道运维须要作什么事情,我只看到运维可能有这样的一些报表,有这样的投影,投在那里说系统实际是怎么样,有没有出现问题。运维看到开发团队在那边写代码,也不知道在作什么事情。要想在团队里面实施这样的运维,DevOps的话,其实咱们以为它从文化和技术,或者是技能两方面都要提供相应的辅导。从文化层面上面来说,就要鼓励咱们的运维和开发人员坐在一块儿,互相地分享。由于团队的目标仍是一致的,我把系统更快的部署到环境上去,让它可以稳定安全地运行。从文化上面来说,首先要让你们理解这样的一个,你们是共同的目标,不是说势如水火。性能

其次的话,要营造出双方相互协做的一个状况、一个场景。就是文化上面,而后从场景和技巧上面来说,除了双方对于各自技能的掌握和培训以外,咱们发现仍是有一些前提条件是比较知足的,好比说咱们来说企业集成。咱们须要自动化测试,只要咱们可以在团队内部把企业集成和自动化测试先作到必定程度的话,好比说咱们能够有信心地拍胸脯说,咱们这个软件没有太大的问题。在这样的状况下面,咱们再引入DevOps作这个,从软件交付的角度来说,会是比较好的一种方式。不然的话团队成天在修复缺陷,这时候咱们的运维和开发坐在一块儿可能没有太多的意义,这是第一。

第二就是说,若是咱们不是这么全局来看,咱们是从局部优化来看,咱们能够看到运维团队在系统配置、系统建立这一块的技能。它也是很是必要的,由于咱们发现开发团队,不论是开发仍是测试,它其实有一个很严重的问题,他们要想作调试、作测试的时候,环境是不够的。可能这个环境作完一套测试以后,环境就被污染了、数据被污染、个人应用包被污染。在追求环境的准备和提供方面,其实咱们的运维是能够进来,或者是咱们的DevOps团队是能够造成的,而后去作一些相对来说没有那么广的事情,仍是跟在这一块上面。而这个前提条件就多是咱们这样的一个架构也好、技术也好,可以比较好的支持咱们DevOps去作基础设施代码的工做。

DevOps相似于咱们敏捷方法,它其实也是跟思想原则和具体的实现,DevOps它的自己的这样一个思想和价值观就是说,让咱们的开发和咱们的运维也好,或者说咱们的实施也好,让他们可以更好地,双方可以消除各自领域的浪费。从原则上来说,就会有一些像基础设施代码、配置自动化等等这样的一些原则。

相关图书

相关文章:

相关文章
相关标签/搜索