聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士

DevOps 和敏捷是较为流行的软件开发方法论。第十四份敏捷年度报告指出, 95%和76%的受访人员分别表示其所在组织机构已采用敏捷开发和 DevOps 开发方法。耐人寻味的是,这两种方法的目标一致:尽可能有效、快速地交付最终产品。

尽管敏捷开发和 DevOps 方法论较为流行且目标一致,但人们常常对它们的区别感到困惑。虽然多数组织机构都渴望部署这些开发实践,但通常又挣扎于哪种方法才是最好的。

本文将探索这两种方法并分析其优劣之处。

什么是敏捷开发?

在软件开发中,敏捷开发是一种基于代码协作、客户满意度和小且快的发布周期的方法论。它是一种按步骤的方法,旨在通过迭代开发和测试的方法产出小型、可管理且质量增量的软件。

如“敏捷”之名揭示的那样,它提倡的是软件构建时的灵活性和适应性——快速响应客户反馈或市场变化,而非遵照严格规划。这也是为何“敏捷”符合当前的快节奏社会的原因所在,客户想要持续的技术创新。

敏捷哲学和人有关。它的目标是构建人类交互超过严格流程的企业文化。敏捷者们允许员工按经验及其共享价值行事,而不是微观管理或将他们限制于繁琐的文档中。

敏捷开发的概念诞生于2000年代早期,对应于传统的瀑布式开发。瀑布式开发是通过结构化、顺序和线性方法来开发软件。这种模型并不灵活,不符合现代世界的期望。

敏捷开发是协助指导软件开发决策的价值和原则的集合,而并非单独的某个方法。它结合了大量实践如 Scrum、Kanban、Extreme Programming (XP),而这些在敏捷开发流行之前开发人员就已经使用。这些实践集合诞生了“敏捷宣言”,它勾勒出敏捷软件开发方法论的核心价值和原则。

什么是 DevOps?

DevOps 是结合了软件开发 (Dev) 和运营 (Ops) 的方法论。它是一种文化、一种心态,通过拥抱敏捷的价值和原则,使软件稳定地、快速地、有效地创建、测试和发布。

软件在 DevOps 和敏捷环境中进行开发、测试和部署。然而,传统的敏捷方法论并未考虑IT运营,而IT 运营持续进行且是 DevOps 管道的一个重要组成部分。事实上,DevOps 旨在为新的受众集成敏捷实践,该受众即运营团队。

DevOps 旨在大伯开发团队和运营团队之间的障碍,前者负责编写代码,而或者负责部署和管理生产中的软件。它消除了这样一种陈旧技术:开发团队编写应用程序而将运行工作留给无法充分了解应用程序如何创建的运营团队。它是一种新方法,赋能这两个团队在整个软件开发生命周期内并肩工作。

通过协同这两个不同的团队,DevOps 支持软件开发中的持续集成 (CI) 和持续部署 (CD)、自动测试和透明进程。

DevOps 在2009年走到台前。此后,它历经变化,包含了其它变革性的软件开发技术。例如,DevSecOps 的实践不断增多,它从一开始就将安全集成到 DevOps 中。

对比DevOps 和敏捷开发

DevOps 和敏捷开发的目标都是增强软件开发流程,强调软件开发的质量结果、效率和速度,同时提倡更短、更频繁的发布周期。

同时渗透这两种方法论的术语是“左移”理念,它指的是通过在软件开发进程的早期阶段发现和修复缺陷,改进软件质量。

那么 DevOps 和敏捷开发的区别是什么?虽然二者目标一致但路径不同,其中的一些区别是:

1、团队构成

敏捷开发和 DevOps 对比中的一个主要争论点在于团队构成。从本质上讲,DevOps 是联合两个大型的分散团队进行协作,交付更快、更可靠的软件发布。该技能集在开发和运营团队成员内部是分开的,这就表明在开发过程中,所有人拥有具体的任务。

DevOps 方法鼓励跨部门协作并减少开发和运营团队之间的摩擦。虽然每个团队成员都是各自技能领域的专家,但可能会导致他们无法换位思考。

而敏捷开发是将更小的团队召集到一起协作,并快速满足不断变化的客户。这种方法并未向团队成员分配具体的任务,而是鼓励责任共担。这就使得敏捷开发团队成员任何时候都能处理项目。不过由于各个小组各自独立,可能会限制组织机构内部的职能交叉。

2、 战略

DevOps 和敏捷开发在战略和流程方面也存在区别。在 DevOps 方法中,自动化方法论用于提升生产力以及最大化效率。然而在敏捷流程中,自动化的重要性并未得到强调,熟练仍可被用于提升输出。

战略的另外不同之处是在敏捷项目中使用 sprints。Sprints 的理念是任务可被分为多个简短的、可重复的阶段,一般持续一到四周的时间。这些分配的职责以增量的方式完成,上一个 sprint 完成后立即启动下一个 sprint。DevOps 提供的是可持续的交付,具有具体的最后期限规定以及标杆,有的限制可能是每日或几小时之内。

DevOps 和敏捷开发在执行战略方面也倾向于使用不同的工具。其中某些流行的 DevOps 工具包括 jenkins、CircleCI 和 Azure DevOps Pipelines。而敏捷开发使用的是 MindMeister、Aha! 和 Trello。

哪个更好?

理解 DevOps 和敏捷开发争论最重要的一点是,它们并非互不包含。我们可能不必只选其一。尽管二者存在不同之处,但融合这两种方法可带来更好的结果。

敏捷开发替代了传统的瀑布模式。DevOps 并非敏捷开发的替代者。DevOps 恰恰是因为敏捷开发而鹊起。因此这两种方法论可以并存且互相赋能。

我们不必二选一,而是可以一箭双雕。而这是克服其各自弱点并物尽其用的最佳方法。例如,赋能各自团队在更广阔的 DevOps 文件中拥抱敏捷开发方法。如此,可通过互补的方法同时利用二者的优势。

敏捷开发和 DevOps 安全的关系如何?

高效地执行 DevOps 和敏捷开发实践要求将安全性考虑在内;否则所有的努力都会付诸东流。将安全性集成到敏捷开发和 DevOps 周期能够交付健壮的应用程序,提升用户满意度。

推荐阅读

SWAP Detector:GrammaTech 开源 DevOps 应用安全测试工具

微软推出 Azure DevOps 漏洞奖励计划,最高赏金2万美元

DevSecOps系列文章第8篇《安全专业人员需要知道的DevOps术语》

DevSecOps系列文章第7篇《DevOps和安全:改变文化凝聚开发、安全和运营》

原文链接

https://www.whitesourcesoftware.com/resources/blog/devops-vs-agile/

题图:Pixabay License

本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

 觉得不错,就点个 “在看” 或 "赞” 吧~

DevOps 和敏捷开发的区别是什么?相关推荐

  1. 瀑布式开发与敏捷开发的区别是什么

    摘要:瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求.分析.设计.编码.测试的步骤顺序进行.敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.我们将在文章中详细说明两者各 ...

  2. 五分钟理解瀑布开发、敏捷开发和Devops

    瀑布开发.敏捷开发.Devops概述 无论是瀑布式开发.敏捷开发还是DevOps,整个流程都分为设计.开发.测试和部署四个部分,只不过各个部分的开始和结束时间节点不同而已!下图很好地解释了这一点. 上 ...

  3. 【华为云技术分享】敏捷开发落地不实际?原因可能在于你的 IDE 工具

    对于企业来说,效率就是一切.开发效率的工程化建设已经开始被各大企业提到技术管理日程中.而且现阶段,无论是框架也好.模板也好,目的都是在为提升代码开发效率而努力.随着云计算的深入,端 + 云的开发模式以 ...

  4. 敏捷开发、DevOps和云计算(四)

    1.4敏捷实践 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 为什么说是以人为核心? 我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在 ...

  5. DevOps笔记-06:什么是CI/CD?它们与敏捷开发和devops的关系?

    什么是CI/CD?它们与敏捷开发和devops的关系? 现在某些大型公司中软件的开发和发布已经形成了一套标准流程,其中敏捷开发和DevOps是更好更快发布产品的常用的两种理念,而CI和CD是实现这两种 ...

  6. DevOps是敏捷在软件开发团队的另一应用

    DevOps是敏捷在软件开发团队的另一应用.那么相比之下,哪个更胜一筹? 一边,有业界认可的scrum master,它的朋友极限编程者,以及由其衍生的 LeSS.SAFe.DAD等,是敏捷. 另一边 ...

  7. 敏捷开发,持续集成/交付/部署, DevOps总结

    文章目录 敏捷开发入门教程 一.迭代开发 二.增量开发 三.敏捷开发的好处 3.1 早期交付 3.2 降低风险 四.如何进行每一次迭代 五.敏捷开发的价值观 六.十二条原则 七.参考链接 持续集成/交 ...

  8. 腾讯云开放DevOps敏捷开发套件,助开发者驶入开发快车道

    更多腾讯海量技术文章,尽在腾讯云技术社区:https://cloud.tencent.com/community 开发者如何在云计算时代更好的提升开发效率?8月23日,在腾讯"云+未来&qu ...

  9. 开发模式(敏捷开发,瀑布式开发,螺旋型开发,迭代开发,devOps开发)

    一. 敏捷开发 以人为核心.迭代.循序渐进的开发方式 简化文档,提取文档重点,主要在于人与人之间的沟通, 对开发产品进行迭代,最终完成开发. 迭代:迭代是指把一个复杂且开发周期很长的开发任务,分解为很 ...

最新文章

  1. 西部985,进军北京!
  2. 为啥辣椒会辣得人嘴巴疼?这个问题竟然和今年诺奖有关
  3. C#线程、前后台线程
  4. 【S操作】我的云存储工具选择,供您参考——总结云存储云办公云笔记工具
  5. 如果添加1条数据会等待10秒,你愿意等吗
  6. SQL—— Create table as select 与 使用select查询结果创建新表
  7. Java基础编程题(API阶段测试)
  8. 排队论系统仿真c语言,排队论仿真程序
  9. Android安卓自带的 WebView 浏览器内核更新
  10. 推荐10款实用必备的Windows10软件
  11. from_tensor_slices
  12. JDK 1.8 中的 Timer 类
  13. 泰然金融牵手快公益 花儿计划国学课入畲乡
  14. uniapp使用第三方字体
  15. 朴素贝叶斯分类(python实现)
  16. ubutun 滑动 触控板_Ubuntu下触控板手势调节软件xSwipe
  17. 【代码审计-JAVA】javaweb代码审计思路
  18. 使用windows钩子捕获进程的启动和关闭消息
  19. Oracle 19c rac 存储迁移
  20. PHP短视频聚合无水印在线解析源码

热门文章

  1. linux C(hello world)最大公约数和最小公倍数
  2. Centos/Linux桌面偏移
  3. Proxmox VE2.2虚拟化安装配置学习笔记(三)
  4. 接口开发规范 restful接口开发规范
  5. 如果要学习web前端,需要学习什么
  6. 亚马逊EC2构建代理服务器心血历程
  7. Linux常用命令3
  8. 27个提升效率的iOS开源库推荐
  9. 考虑用静态工厂方法代替构造器
  10. 经典仿句100例_(完整版)精美句子仿写100例