什么是Devops
Devops是一种软件开发方法,专注于IT 专业人员之间的沟通协作和集成,以实现产品的快速部署。
Devops加强开发和部署团队之间的协作,更快速并且自动将代码发布到生产环境,有力的帮助组织提升应用服务的交付能力。
什么是敏捷
敏捷在SDLC(软件开发生命周期)中加入了持续迭代开发和测试。这种软件开发方法强调迭代,增量和渐进式开发。
敏捷开发流程将产品分解成小块并且在最终的测试中集成起来。它可以有很多种实现方式,包括Scrum, Kanban, XP 等等。
敏捷与Devops
我们一般这样理解干系人和IT之间的沟通流程
敏捷用于连接用户和开发人员
Devops用于开发人员和IT人员之间的沟通
主要的区别
- Devops是一种将开发团队和运营团队结合起来,而敏捷用一种迭代的方式关注合作,用户反馈和小步快速发布。
- Devops强调不断测试和发布,而敏捷过程强调不断变化
- Devops需要涉及相对大的团队,而敏捷只需要一个小团队
- Devops利用左移和右移原理,而敏捷只用左移原理。(即敏捷开发认为测试越早进行越好)
- 敏捷的目标领域是软件开发,而Devops的目标领域是提供端到端的商业方案以及快速交付。
- Devops更强调运营和商业可行性,而敏捷更强调功能性的可行性。
更详细的对比
对比项 | 敏捷 | Devops |
---|---|---|
定义 | 敏捷使用迭代的方式,关注沟通,用户反馈,以及小步快速的发布 | Devops被认为是将开发和运营团队整合在一起的一种做法 |
目的 | 敏捷帮助管理很繁杂的项目集 | DevOps的中心思想就是管理端到端的流程 |
任务 | 敏捷过程强调不断变化 | DevOps强调不断的测试和交付 |
实施 | 敏捷方法可以用一系列的框架实施,比如sprint,safe以及scrum | DevOps的主要目标是注重协作,所以他并没有统一的框架。 |
团队技能 | 敏捷开发强调通过培训让所有的团队成员都有相似的技能 | DevOps在开发和运营团队之间分配和传播技能 |
团队大小 | 小团队是敏捷的核心。团队越小,人越少,就意味着可以更快的前进 | DevOp团队规模相对较大,因为它涉及所有端的人员 |
为期长短 | 敏捷开发优一个一个的迭代“sprint”组成。一个迭代通常会比一个月要小 | DevOps通过主要版本的截止日期进行驱动。理想的目标是每天甚至每过几个小时就会发布到生产。 |
反馈 | 由用户给反馈 | 反馈来自团队内部 |
目标领域 | 软件开发 | 端到端的业务方案和快速交付 |
左移原理 | 左移 | 同时用左移和右移 |
着重点 | 敏捷开发前调在开发过程中的方法论,并不关心发布出去以后的事情 | Devops永远都在准备发布,用靠靠且安全的方法进行部署软件 |
跨职能 | 敏捷认为所有的团队成员应该为项目的进度的所有工作负责,当每个人都能做所有的事情时,就可以增进他们之间的了解 | Devops将开发人员和运维人员分开,这让沟通变得复杂起来 |
沟通 | Scrum是最常用的敏捷开发方法,用每日站会进行沟通 | Devops利用产品设计文档。对于运营团队来说,充分的了解软件版本及其对硬件/网络的影响,是正常运行部署至关重要的环节。 |
文档 | 敏捷方法认为可工作的软件优先于详尽的文档,这种理论在理想情况下是会更加的灵活应变。但是,当尝试将所有的工作转交给另外的团队是会发现困难重重 | 在Devops里,过程文档很重要,因为软件会交给运营团队去发布。即使自动化会弥补一些文档的不足,但是当开发复杂的软件时,转移所有所需的知识是非常困难的 |
自动化 | 敏捷没有强调要自动化,尽管它也认为自动化很有帮助 | 自动化是Devops最主要的目标。它在发布软件的时候最大程度的提高效率 |
目标 | 它解决了客户与开发测试人员之间的鸿沟 | 它解决了开发测试与运营人员之间的鸿沟 |
关注点 | 它着重于功能性和非功能性的准备 | 它更多的着重于运营和业务准备 |
重要性 | 开发软件是敏捷的核心 | 开发,测试和维护同等重要 |
速度与风险 | 敏捷团队支持快速变化,有强大的组织架构 | 在Devops方法里,团队必须确保所有的变化不会对整个项目带来开发上的风险 |
质量 | 敏捷开发出满足需求的更好的应用。在项目的生命周期里,可以很容易的根据变化作出实时的调整 | Devpos, 与自动化以及早期错误清楚功能一起,有助于提高质量。开发人员需要遵循编码和架构的最佳实践,以满足质量标准 |
工具 | Jira, Bugzilla, Kanboard是比较流行的敏捷工具 | Puppet, Chet, TeamCity, AWS是比较流行的Devops工具 |
挑战 | 敏捷方法需要团队更有效能,这并不是任何时候都能达到的 | Devops过程需要开发,测试和生产环境来简化工作 |
优点 | 敏捷提供更短的开发周期,并且改善了缺陷检测 | Devops对敏捷的发布周期提供了支持 |