敏捷和 DevOps 有什么区别?
敏捷方法和 DevOps 是两种互补的实践,可为软件开发的各个方面带来效率和可预测性。敏捷方法是一种迭代式软件开发方法,侧重于协作、快速软件发布和客户反馈。这是一种文化和管理理念,旨在让每个团队成员专注于持续改进和向客户交付价值。DevOps 是一种软件交付方法,可消除现有开发和运营团队之间的数据孤岛。DevOps 团队使用工具和实践来自动化过去手动且缓慢的流程,例如部署代码或预置基础设施。这些工具和实践提高了组织快速交付应用程序和服务的能力。
敏捷方法和 DevOps 有什么相似之处?
敏捷方法于 2000 年问世,是对传统、更严格的软件开发方法的局限性的回应。2001 年发布的《敏捷软件开发宣言》概述了其核心价值观、原则和实践。敏捷实践侧重于客户协作、快速变革、持续交付和迭代开发。
DevOps 起源于敏捷实践,之所以开发该系统,是因为运维和开发团队之间需要更多的协同作用。Patrick Debois 在 2009 年创造了 DevOps。Debois 基于敏捷实践原则进行构建,但将其扩展到包括运维和自动化。DevOps 通过提供其他重点领域来支持敏捷实践。
接下来,我们将介绍 DevOps 和敏捷实践的更多相似之处。
目标
DevOps 和敏捷方法都侧重于改进软件开发和交付流程。它们还可以促进协作、效率和持续改进。两者都使用跨职能协作来提供反馈回路并不断改进工作,并且都使用精益原则来简化并最大限度地提高效率。
DevOps 和敏捷实践都鼓励团队实施改进、协作和减少瓶颈。这使得这两种方法都能够在保持质量的同时加快软件开发。
质量保证
敏捷和 DevOps 方法都强调测试,以确保软件的可靠性。两者都侧重于测试代码变更以尽早发现问题。单元测试、功能测试、性能测试、验收测试和集成测试都很常见。
通过在整个开发过程中专注于频繁的代码测试,敏捷和 DevOps 团队可以提供可靠、高质量的软件。
持续改进
敏捷实践和 DevOps 有助于打造学习、成长、增强流程和改进的文化。团队反复进行渐进式更改以改进产品。
敏捷方法使用诸如回顾之类的 Scrum 实践来帮助培养改进文化。例如,每次迭代后,团队都会反思自己在哪些方面做得好,哪些方面可以改进。他们确定未来的行动项目,以提高生产力、客户满意度和协作。
同样,DevOps 团队使用事后审查和监控数据来发现需要改进的地方。
主要区别:敏捷实践与DevOps
DevOps 和敏捷实践在软件交付生命周期相辅相成。两者专注于不同的原则和实践,以不同的方式满足客户的需求。
用途
敏捷方法侧重于增量软件开发。它鼓励团队与客户协作,创造价值,并快速对变化做出响应。团队使用敏捷实践来有效地应对软件开发中不断变化的客户需求和市场需求。
DevOps 包括敏捷软件开发文化中的运维团队。运维部门的作用是部署软件并将其交付给最终用户。如果软件经常更改,运维团队也必须跟上步伐。他们必须管理软件环境配置的更改,随着应用程序的扩展,这项工作会变得越来越具有挑战性。
DevOps 打破了孤岛,专注于开发和运维团队之间的协作。各种工具和技术提高了部署软件的灵活性和效率。
原则
以下是敏捷方法的四个主要原则或优先事项:
- 个人和互动优于流程和工具
- 有效的软件优于全面的文档
- 客户协作优于合同谈判
- 被动改变优于严格遵循计划
敏捷团队拥抱变革,在整个项目生命周期中提供渐进式和迭代式开发。他们尽早让客户参与整个过程,这有助于确保团队根据客户的要求进行调整。
相比之下,DevOps 有五个主要原则,首字母缩写为 CALMS:
- 开发和运维团队之间的协作,旨在共同承担责任
- 用于自动执行重复任务、减少错误和提高效率的自动化工具和技术
- 精益策略,消除任何会延长交付时间的流程
- 通过收集和分析数据来衡量性能
- 在团队之间共享信息和学习成果,以提高整体绩效和创新
实践
敏捷方法将任务分成更小的单元,称为故事。敏捷团队将在称为冲刺的短迭代期内工作。 每个冲刺期都会为软件或产品创建一个新的、可交付的增量。团队成员每天参加站立会议进行协调。同样,敏捷方法使用一系列定期回顾来改进和提高效率。
DevOps 尽可能自动执行构建、测试和部署流程。这就需要支持频繁发布新软件版本。持续集成可将代码合并到共享存储库中,这有助于确保开发人员定期测试代码。持续交付使用部署管道同时部署到多个环境。
DevOps 还使用基础设施即代码(IaC),因此团队可以将管理和配置作为软件开发任务来处理。通过监控基础设施和应用程序,开发人员可以发现潜在问题并进行故障排除,从而获得改进。
技能
敏捷的团队成员需要适应性强、灵活且善于沟通。大多数团队成员还身兼多职,可以跨多个领域工作以完成产品。沟通至关重要,因为敏捷的团队必须有效地提供和回应反馈。
DevOps 团队需要具备安全意识、监控、自动化知识和操作技能等技能。DevOps 团队成员需要编写 IaC 脚本并开发用于监控交付管道的工具。维护自动化工作流程对于 DevOps 至关重要。
DevOps 团队需要对软件部署自动化有更技术性的理解。敏捷团队包括非技术成员,例如业务分析师和项目经理。
敏捷实践和 DevOps 如何协同工作?
结合运维团队对 DevOps 的使用时,敏捷方法的协作方法甚至可以进一步扩展。当团队合作时,敏捷团队开发软件,然后 DevOps 将其交付给最终用户。敏捷开发人员提供软件增量,DevOps 通过持续交付和自动化来集成和部署这些软件增量。开发人员负责编写软件测试以及维护构建和部署管道。
差异摘要:敏捷实践与DevOps
敏捷实践 |
开发运维 |
|
目的 |
敏捷流程采用迭代方法,可快速有效地演变以响应客户需求。 |
DevOps 实践将开发和运维团队联合起来,使用自动化进行持续部署。 |
原则 |
敏捷思维有四项核心原则:人员、客户协作、工作软件和被动开发。 |
DevOps 有五项原则:文化、自动化、精益原则、衡量和共享。 |
实践 |
敏捷开发将任务分解为案例,并在日常站会上沟通。团队将为称为“冲刺”的简短期间工作,以管理复杂的项目并提高效率。 |
DevOps 软件开发方法强调持续交付、自动化、监控和持续集成。 |
团队技能 |
敏捷团队成员灵活、适应性强、身兼多职且善于沟通。他们可能是技术人员,也可以是非技术人员。 |
DevOps 团队成员使用 IaC 实现流程自动化,部署软件,而且通常是技术人员。 |
AWS 如何支持您的敏捷实践和 DevOps 工作?
Amazon Web Services(AWS)提供了一套灵活的服务,使公司可以通过 DevOps 实践快速可靠地构建和交付产品。借助这些服务,您可以更轻松地配置和管理基础设施、部署应用程序代码、自动化软件发布流程以及监控应用程序和基础设施性能。有关更多信息,请阅读有关 DevOps 和 AWS 的信息。
以下是一些可以支持您的 DevOps 工作的 AWS 产品/服务:
- AWS CodePipeline 是一种持续集成与持续交付服务,可以实现快速而可靠的应用程序和基础设施更新
- AWS CodeBuild 是一项完全托管的生成服务,可编译源代码、运行测试以及生成可供部署的软件包
- AWS CodeDeploy 可将代码自动部署至任何实例,包括 Amazon Elastic Compute Cloud (Amazon EC2) 实例和本地服务器
立即创建账户,开始使用 DevOps 和 AWS。