DevOps vs Agile
 
 
  DevOps和Agile是两个具有相似目标的软件开发方法,它们可以尽可能快,高效地获得最终产品。尽管许多组织都希望采用这些做法,但两种方法之间常常会有些混淆。 
 
 
 
 每种方法论包含什么?它们在哪里重叠?他们可以一起工作,还是我们应该选择一个?
 
 在继续之前,请看一下DevOps和Agile。
 
什么是DevOps? 
 
  DevOps是两个词的组合,一个是软件开发,另一个是Operations。这样一来,一个团队就可以处理整个应用程序生命周期,从开发到测试,部署和操作。 DevOps可帮助您减少软件开发人员,质量保证(QA)工程师和系统管理员之间的联系。
 
  DevOps促进开发和运营团队之间的协作,以自动化和可重复的方式更快地将代码部署到生产中。 
 
  DevOps有助于提高组织交付应用程序和服务的速度。它还可以使组织更好地为客户提供服务,并在市场上更强大地竞争。
 
  DevOps也可以定义为具有更好的沟通和协作的一系列开发和IT运营。
 
  DevOps已成为企业或组织最有价值的业务学科之一。在DevOps的帮助下,应用程序交付的质量和速度有了很大的改善。
 
  DevOps只是一种实践或方法让" 开发人员"和" 操作"人员一起工作。 DevOps代表着IT文化的一种变化,它完全侧重于在面向系统的方法中通过采用敏捷实践来快速提供IT服务。
 
什么是敏捷?
 
 敏捷需要在 SDLC 流程中进行不断的开发和测试迭代。与瀑布模型不同,开发和测试活动是同时进行的。这种软件开发方法强调增量,迭代和渐进式开发。 
 
 它将产品分成小块,并将它们集成起来以进行最终测试。它可以通过多种方式实现,例如看板,XP,Scrum 等。
 
 敏捷软件开发关注四个核心价值,例如: 
 
正在运行的软件超过了完整的文档。  
已响应更改计划。 
通过合同谈判进行客户协作。  
在流程和工具上的个人和团队互动。 
  以下是DevOps和Agile之间的一些本质区别: 
 
 
 
   
   | DevOps | Agile | 
 
   
   | DevOps是将开发和运营团队召集在一起的一种做法。 | 敏捷是指持续迭代的方法,它专注于协作,客户反馈,小而快速的发布。 | 
 
   
   | DevOps的目的是管理端到端的工程流程。 | 敏捷的目的是管理复杂的项目。 | 
 
   
   | 它专注于持续测试和交付。 | 它关注不断的变化。 | 
 
   
   | 它的团队规模很大,因为它涉及所有筹码持有人。 | 它的团队规模很小。团队越小,工作的人员就越少,以便他们可以更快地移动。 | 
 
   
   | DevOps在开发人员和运营团队之间分配和传播技能集。 | 敏捷开发强调培训所有团队成员以具有各种各样的相似和平等的技能。 | 
 
   
   | DevOps专注于协作,因此它没有任何公认的框架。 | 敏捷可以在各种战术框架内实施,例如安全,混乱和 sprint 。 | 
 
   
   | 理想的目标是每天或每隔几个小时将代码交付生产。 | 敏捷开发以冲刺为单位进行管理。因此,每次冲刺的时间少于一个月。 | 
 
   
   | 端到端业务解决方案和快速交付。 | 软件开发。 | 
 
   
   | 反馈来自内部团队。 | 在敏捷中,反馈来自客户。 | 
 
   
   | 它支持左右两种版本。 | 它仅支持左移。 | 
 
   
   | DevOps专注于运营和业务准备。 | 敏捷专注于功能和非功能准备。 | 
 
   
   | 在DevOps中,开发,测试和实施同等重要。 | 开发软件是敏捷固有的。 | 
 
   
   | DevOps通过自动化和尽早清除错误来帮助创造更好的质量。开发人员需要遵循编码和最佳体系结构惯例以保持质量标准。 | Agile可以根据需要提供更好的应用程序套件。它可以根据项目生命周期中按时进行的更改快速进行调整。 | 
 
   
   | Puppet,Chef,AWS,Ansible 和团队City OpenStack是流行的DevOps工具。 | Bugzilla,Kanboard,JIRA 是一些流行的敏捷工具。 | 
 
   
   | 自动化是DevOps的主要目标。它的工作原理是在部署软件时将效率最大化。 | Agile不强调自动化。 | 
 
   
   | DevOps交流涉及规格和设计文档。对于运营团队来说,充分了解软件版本及其对网络的含义至关重要,这足以使部署过程充分运行。 | Scrum是实现敏捷软件开发的最常用方法。 Scrum会议每天进行。 | 
 
   
   | 在DevOps中,流程文档是最重要的,因为它将把软件发送给运营团队进行部署。自动化可以最大程度地减少文档不足的影响。但是,在开发复杂的软件时,很难转移所有所需的知识。 | 敏捷方法比完整的文档优先考虑工作系统。当您灵活而反应迅速时,它是理想的选择。但是,当您尝试将事情移交给另一个团队进行部署时,这样做可能会有害。 |