敏捷开发与DevOps的对比

敏捷开发与DevOps的区别

敏捷与 DevOps 之间的主要区别在于:敏捷是关于如何开发和交付软件的哲学,而 DevOps 则描述了如何通过使用现代工具和自动化流程来持续部署代码。

敏捷宣言

如果软件开发人员是敏捷的,他们的行为方式与敏捷宣言中定义的价值观和原则相一致。

敏捷宣言于 2001 年由软件开发领导者撰写并签署,它定义了敏捷从业者必须遵循的十二项原则和四项基本价值观,包括:

  • 个体和互动高于流程和工具
  • 工作的软件高于全面的文档
  • 客户合作高于合同谈判
  • 响应变化高于遵循计划

虽然敏捷宣言对软件开发社区的重要性不言而喻,但它的篇幅却非常短。 总共不到500字。

除了坚持将软件持续将会给客户是敏捷的最高优先级之外,宣言并没有提供任何简明的指导,也没有推荐任何可以遵循的具体流程。 这纯粹是一种哲学练习。

如何定义 DevOps?

与敏捷相比,DevOps 有定义文档。 DevOps 没有普遍接受的定义。

我们甚至不清楚 DevOps 是什么时候进入公共词典的,尽管许多人指出 John Allspaw 和 Paul Hammond 在 2009 年 Velocity 大会上的演讲《每天10+个部署:Flickr上的开发和运维合作》是它的开端。许多人也认为 Gene Kim 的《凤凰计划》一书也是 DevOps 普及的一个推动因素。

比较 敏捷开发 DevOps
启始时间 2001 2007
创始人 J约翰·克恩、马丁·福勒等人 Flickr 的 John Allspaw 和 Paul Hammond 以及 Gene Kim 的凤凰计划
最高优先级 软件持续交付 软件持续部署
创始神器 敏捷宣言 《每天10+个部署:Flickr上的开发与运维合作》
实施框架 Scrum、看板、ScrumBan、精益、XP CAMS, CALMS, DORA
备选方案 瀑布开发模型 竖井模式的开发与部署
团队规模 由 10 人以下的小团队使用 作为公司范围内的战略实施
范围 专注于单个应用程序的开发 公司范围内的软件部署方法

在 2009 年的 Velocity 演示中,Allspaw 和 Hammond 描述了他们对的软件测试例程的信心怎样使得在开发和运营之间建立了诸多信任,该公司甚至已经实施了一个流程,可以每天将代码自动部署到生产环境中 10 次以上。自动化这样的事情在当时被认为是石破惊天的。

自 2009 年以来,软件开发行业发生了许多变化,但 DevOps 的基石仍然是:

  • 开发和运维团队之间的信任和协作
  • 严重依赖全面的软件测试例程
  • 集成现代工具以简化开发和运营任务
  • 无需任何人工干预或检查点即可自动部署到生产中

敏捷和 DevOps 文化

尽管许多人争论 DevOps 到底是什么,但大多数定义都包含“文化”一词。这就引出了一个问题:什么是文化?

一般来说,文化可以定义为任何一群志同道合的人,他们使用一套通用的工具并遵循一套可重复的流程。

从本质上讲,文化可以归结为以下三点:

  • 流程
  • 及他们所用的工具

敏捷和 DevOps 的目标和成果是紧密相连的

DevOps 工具和流程

在 DevOps 的世界中,从业者使用的流行工具包括:

  • Git 和 GitHub
  • Docker 和容器
  • Jenkins 其他 CI 工具
  • 用于编排的 Kubernetes
  • Chef 和 Puppet
  • 静态代码分析
  • Terraform
  • 公有云

使用这些产生的过程是代码的持续集成和部署(CI/CD)。

敏捷和 DevOps 有何相似之处?

从事 DevOps 的人有什么独特之处?

数字化转型成功的先决条件是什么?

这正是敏捷和 DevOps 的交汇点。

为了使 DevOps 发挥作用,所有 DevOps 从业者都必须接受敏捷思维。

所有 DevOps 从业者都相信:

  • 手动任务的自动化和未完成工作的重要性
  • 与积极的个人组成的自组织团队合作的重要性
  • 将软件持续交付给客户作为最高优先级

这些要点中的每一个都直接映射到敏捷宣言中列出的十二条原则之一。

DevOps 无限循环显示了敏捷团队所采用的迭代开发过程

如何将敏捷和 DevOps 结合起来?

DevOps 人员必须是敏捷的。

要正确执行 DevOps,DevOps 从业者必须接受敏捷思维。

敏捷和 DevOps 从业者不仅有共同的思维模式,而且他们的目标也很一致。

DevOps 过渡的最终目标是将工作代码完全自动化部署到生产中。这代表了 DevOps 的完整启示。

敏捷宣言毫不含糊地指出,其最高优先级是持续向客户交付软件。

敏捷和 DevOps 都相信构建软件、确保透明度和促进可持续发展的最佳方式是将可工作的软件交到客户手中。

敏捷和 DevOps 有着完全相同的目标,就是让开发和运营团队使用现代工具并遵照流程,将软件尽快交到客户手中。

敏捷与 DevOps 的异同

总结一下,下面是 DevOps 和敏捷之间最常见的区别和相似之处:

  1. 敏捷由敏捷宣言定义,而 DevOps 没有普遍接受的定义

  2. DevOps 定义了一种工作文化,而敏捷是一种软件开发理念

  3. 敏捷的最高优先级是持续交付,而 DevOps 则是持续部署

  4. DevOps 坚持所有手动任务的自动化,而敏捷则重视“未完成的工作量”

  5. DevOps 从业者拥护敏捷思维,而敏捷则要求参与者自组织和激励

敏捷和 DevOps 相结合

敏捷和 DevOps 并不是相互冲突的概念。事实上,情况恰恰相反。

拥有敏捷思维并接受 DevOps 文化的人都有一个共同的目标,那就是向客户持续交付和部署有价值的软件。

要正确执行 DevOps,所有参与者都必须接受敏捷思维。只有这样,基于 DevOps 的数字化转型才会成功。


【注】本文译自:Agile vs DevOps: What’s the difference?

DevOps 发展史

【注】本文节译自:https://blog.devops4me.com/history-of-devops/

起源

  软件开发生命周期(SDLC)的发展迅速改变了组织如何将其产品发布/生产到生产环境的格局。当谈到组织如何管理产品交付时,传统的 SDLC 通常与瀑布(Waterfall)模式联系在一起。瀑布模式不能适应与组织的业务目标,他们希望为客户提供更快的速度和功能/产品。照此逻辑,他们需要一种新的方法来加快产品交付,但同时还要改善开发人员IT 运营团队。因此,DevOps 就出现了,2008 年多伦多敏捷会议上,Petrick Debois 介绍了“DevOps”一词。
  第一次会议名为 Devopsdays,于 2009 年在比利时根特举行。比利时顾问,项目经理和敏捷实践者 Patrick Debois 创立了会议。该会议现已传播到其他国家。2012年,DevOps 状态报告由 Puppet 的 Alanna Brown 起草并发布。截至 2014 年,Nicole Forsgren、Gene Kim、Jez Humble 等人发布了年度 DevOps 状态报告。在2014年,他们发现 DevOp 的采用正在加速。同样在 2014 年,Lisa Crispin 和 Janet Gregory 撰写了 More Agile Testing,其中包括有关测试和 DevOps 的章节。
  如果我将上面的时间事件放到时间轴中,如下图所示:

什么是 DevOps?

  DevOps 也是新兴技术和新兴商业文化的结合。转向 DevOps 文化的想法是建立开放的沟通,透明性和跨学科团队合作。DevOps背后的概念打破了孤岛,并为开发人员(DEV)与 IT 运营(OPS)之间的讨论和协作创造了更多空间。DevOps 的力量在于支持它的文化,使人们的思维方式从孤岛上移开了。它通常可以帮助您了解其来源、为什么变得流行以及什么使它流行。

目的是什么?

  在实施 DevOps 文化和方法时,DevOps 可以解决您组织面临的挑战,并且组织将获得:

  • 更快的服务交付:紧跟快速需求的敏捷版本。跨数据可见性:确保合规性和数据准确性。
  • 服务效率:提高质量和性能。
  • 经验丰富的专业DevOps:教您成功所需的工具。
  • 全面迎合组织的特定需求。

    DevOps 是:

  • 概念
  • 心态
  • 个人理解和拥护的共同态度
  • 必须培育和反复改进的文化
  • 可见度
  • 指导
  • 学习
  • 包容和开放的所有想法
  • 迭代
  • 持续
  • 协同合作
  • 自信地开发和交付软件的绝佳方法

    DevOps 不是:

  • 轻松实现或实施
  • 产品或工具链
  • 职务或职位
  • 云基础架构解决方案
  • 一项技术
  • 一种编程语言
  • 营销活动
  • CI / CD 流水线
  • Kubernetes
  • 容器 / Docker
  • 开源软件
  • 基础设施即代码
  • 自动化

    简而言之

      DevOps 认为 IT 行业急需概念上的不断学习和改进。而且,IT 社区无疑可以从 DevOps 历史中学到很多东西。这场 DevOps 革命不足为奇,而且随着创新的不断发展,其重要性在未来会不断提高。我们已经看到安全性与 DevOps 结合可以如何永远改变 Infosec 行业。

    结论

      将 DevOps 描述为一个旅程或愿望,而不是定义的目标或工具是合理的。DevOps 寻求持续的改进、更多的输出、更高的效率、甚至持续部署。支持 DevOps 的自动化工具还在不断发展。

DevOps教程:什么是DevOps

【注】本文译自: https://www.javatpoint.com/devops

  DevOps 是两个单词的复合,一个是 Development,另一个是 Operations。它是一种共同提升开发和运维过程的文化。
  DevOps 教程将帮助你学习 DevOps 基础知识并带你深入了解各种 DevOps 工具,譬如:Git、Ansible、Docker、Puppet、Jenkins、Chef、NagiosKubernetes

什么是 DevOps?

  DevOps 是两个单词的复合,其一是软件开发,其二是运维。这就允许一个团队掌握整个应用生命周期,从开发测试部署以及运维。DevOps 有助于减少软件开发工程师、质量保障(QA)工程师和系统管理者之间的断层。

  DevOps 提升开发和运维团队间的协作,通过自动化和可重复的方式将将代码更快地部署到生产。
  DevOps 有助于加快组织交付应用和服务的速度。它也使得组织更好地服务客户,以增强市场竞争力。
  DevOps 也可以被定义成开发和 IT 运维更好地沟通和协作的序列。
  DevOps 已经成为企业或组织最具价值的业务准则之一。在 DevOps 的帮助下,应用交付的质量和速度已经得到了极大的改善。
  DevOps 只是使“开发人员”和“运营人员”一起工作的一种实践或方法。DevOps 代表着 IT 文化的一种变化,它完全专注于在面向系统方法的上下文中通过采用敏捷实践来快速交付IT服务。
  DevOps 就是关于运营和开发流程的集成。 已采用DevOps的组织注意到,软件质量提高了22%,应用程序部署频率提高了17%,客户满意度提高了22%。 成功实施 DevOps 后,收入增长了19%。

为什么需要 DevOps?

  接下来,我们需要了解为什么我们需要 DevOps 而不是其他方法。

  • 运营和开发团队完全孤立地工作。
  • 在设计-构建之后,分别进行测试和部署。 这就使得他们比实际构建周期花费更多时间。
  • 在不使用 DevOps 的情况下,团队成员花费大量时间在设计,测试和部署上,而不是构建项目。
  • 手动代码部署会导致生产中的人为错误。
  • 编码团队和操作团队有各自的时间表、并且不同步,从而导致进一步的延迟。

    DevOps 历史

  • 2009年,第一届名为 DevOpsdays 的会议在比利时根特举行。 比利时顾问和 Patrick Debois 共同创立了此次会议。
  • 2012年,Puppet 的 Alanna Brown 提出并构思了 DevOps 状态报告。
  • 2014年,Nicole Forsgren、Jez Humble、Gene Kim 等人发布了年度 DevOps 状态报告。他们发现,DevOps 的采用也在 2014 年加速发展。
  • 2015年,妮可·福斯格伦(Nicole Forsgren)、吉恩·金(Gene Kim)和杰兹·汉布尔(Jez Humble)创立了 DORA(DevOps研究与任务)。
  • 2017年,妮可·福斯格伦(Nicole Forsgren),吉恩·金(Gene Kim)和杰兹·汉布尔(Jez Humble)发表了“加速:建立和扩展高性能技术组织”。

    DevOps 架构特性

      以下是 DevOps 架构的一些关键功能,例如:

1)自动化

  自动化可以减少时间消耗,尤其是在测试和部署阶段。 生产率提高了,并且自动化使发布更快。 这将导致迅速捕获错误,因此可以轻松修复它。 对于持续交付,每个代码都是通过自动化测试,基于云的服务和构建来定义的。 可以使用自动部署来促进生产。

2) 协作

  开发和运营团队作为 DevOps 团队进行协作,随着团队生产力的提高,生产力不断提高,从而改善了文化模型、增强了责任感和所有权。 这些团队分担责任并紧密同步工作,进而加快了生产部署速度。

3)集成

  应用程序需要与环境中的其他组件集成。 集成阶段是将现有代码与新功能结合起来,然后进行测试。 持续的集成和测试可以实现持续的开发。 发布和微服务的频率导致重大的运营挑战。 为了克服这些问题,就要实施持续集成和持续交付,以便以更快,更安全和可靠的方式交付。

4)配置管理

  配置管理确保应用程序仅与那些与其运行环境有关的资源进行交互。 在将应用程序的外部配置与源代码分开的情况下,不会创建配置文件。 配置文件可以在部署过程中编写,也可以在运行时加载,具体取决于运行环境。

DevOps 的优点和缺点

  以下是DevOps对业务可能具有的一些优点和缺点,例如:优点

  • DevOps 是快速开发和部署应用程序的绝佳方法。
  • 对市场变化做出更快的响应,以改善业务增长。
  • DevOps通过减少软件交付时间和运输成本来提升业务利润。
  • DevOps 清除了描述过程,从而使产品开发和交付更加清晰。
  • 改善了客户体验和满意度
  • DevOps 简化了协作,并将所有工具都放置在云中供客户访问。
  • DevOps 意味着集体责任,可以提高团队参与度和生产力。

缺点

  • DevOps 专业人士或专家的开发人员较少。
  • 使用 DevOps 进行开发非常昂贵。
  • 行业在短时间内很难采用新的DevOps技术。
  • 在自动化项目的持续集成中,缺乏DevOps知识可能是一个问题。

前提条件

  要学习 DevOps,您应该具有 Linux 的基本知识和至少一种脚本语言。

受众

  我们的 DevOps 教程旨在帮助初学者和专业人士。

三大业界大佬的DevOps解决方案

  DevOps 在商业界的一些解决方案,主要包括:

  1. 微软公司的 Azure DevOps
  2. 亚马逊公司的 Aws DevOps
  3. 阿里云的 云效 DevOps

Azure DevOps


  Azure DevOps 也称为 Microsoft Visual Studio 团队服务(VSTS)。它是为云构建的一组协作开发工具。 VSTS 通常被用作独立术语,Azure DevOps 是一个由几种不同产品组成的平台,例如:

  • Azure 测试计划
  • Azure 看板
  • Azure 存储库
  • Azure 流水线
  • Azure 制品

  Azure DevOps是将创意转化为工作软件所需的一切。您可以使用 Azure 工具计划项目。

  Azure 流水线是 Azure DevOps 的 CI 组件。Azure 流水线是微软的云原生连续集成服务器,它使团队可以从云中连续构建、测试和部署所有组件。Azure 流水线可以连接到任意数量的源代码存储库,例如 Azure Repos、GitHub、Tests,以获取代码和制品以进行应用交付。

Azure DevOps 服务器

  Azure DevOps Server 是微软的一个产品,提供版本控制、需求管理、报告、软件库管理、项目管理、测试、自动生成和发布管理功能。它涵盖了应用的整个生命周期,并启用了 DevOps 功能。
  Azure DevOps 可以用作众多集成开发环境的后端,但针对 Microsoft Visual Studio 和 Eclipse 的所有平台上进行了定制。

Azure DevOps 服务

  微软宣布在 Microsoft Azure 平台上发布该软件即 Visual Studio 的服务产品,当时微软将其称为在线Visual Studio。

  微软为 Azure DevOps 服务提供了 Visual Studio,基本和利益干系人访问级别。基本计划是免费的,最多可容纳五个用户。订阅了 Visual Studio 的用户可以免费添加到项目中。

AWS DevOps

  AWS 是最好的云服务提供商,DevOps 是软件开发生命周期的实现。

  以下是使 AWS DevOps 成为非常受欢迎的组合的一些原因,例如:

  • AWS CloudFormation
  • AWS EC2
  • AWS CloudWatch
  • AWS CodePipeline

  让我们简要地看一下这些,例如:

AWS CloudFormation


  与开发团队相比,DevOps 团队需要更频繁地创建和发布云实例和服务。诸如 EC2 实例,ECS 容器和 S3 存储桶之类的 AWS 资源模板使您可以设置整个堆栈,而不必将所有内容放在一起。

AWS EC2

  您可以在 EC2 实例中运行容器。因此,您可以利用 AWS 安全和管理功能。

  Amazon EC2 提供最广泛、最深入的实例选择,这些实例构建于最新的计算、存储和网络技术,进行了高性能和安全设计。

AWS CloudWatch


  该监控工具可跟踪 AWS 必须提供的所有资源。轻松使用第三方工具进行监视,例如sumo logic 等。

AWS CodePipeline


  代码流水线是 AWS 的一项重要功能,它极大地简化了你管理 CI / CD 工具集的方式。它与 Jenkins、GitHub 和 CodeDeploy等工具集成,使你可以直观地控制从构建到生产的应用更新流程。

云效 DevOps


  阿里云云效,云原生时代新 DevOps 平台,支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现 10 倍效能提升。

项目

一站式项目管理

  以项目为维度,管理需求、任务、缺陷、迭代、里程碑、风险和文档。大型项目管理
  支持父子项目以分级管理战略专题项目,支持项目集合以联合管理双十一等大型协作项目。

快速迭代项目管理

  支持Scrum、看板等多种敏捷实践。

应用

应用全生命周期管理

  以应用为单位,申请、创建和配置软件运行所需资源、环境和中间件服务,提供变更、发布、监控和运维等应用全生命周期管理服务。

多种部署运行方式

  支持Docker等多种部署运行方式

交付

持续交付流

  多人协作开发集成、多种编程语言构建打包和分布式集群部署发布等服务。

质量与安全保障

  轻松搭建从代码提交、集成、构建到测试环境、预发环境、线上环境部署发布验证的持续交付流水线,质量和安全层层把关。

运营

用户反馈跟踪

  用户反馈秒级必答,产品知识智能回复。

产品动态监测

  问卷调查和舆情监测,把握产品动态。

数据驱动优化

  分析研发和运营数据,数据驱动效能提升和产品优化创新。