DevOps vs. Agile:它们有什么共同点?
DevOps与Agile有很多不同,但它们之间仍可发现很多共同点,这篇文章为读者揭晓。
DevOps和Agile之间有着明显的关系。Agile是方法论,Scrum是框架,并DevOps随着看板也落在了Agile的“伞”下。精益,大规模的Scrum,极限编程,水晶等。例如,我们的Scrum团队是一个Agile团队,将作为DevSecOps团队运作。
DevOps和Agile都不是关于工具的。两者都是关于思维方式和文化的。如果做得正确,团队将以不同的方式思考和采取行动,并取得更大的成果,包括更快的软件交付,持续集成(CI),持续交付(CD),持续改进,工作软件,更快的解决方案,更多的协作和更少的孤岛。另外,在质量测试方面能看到的附加结果,更好的自动化以及改进的系统,过程和实践。
共同的概念
它们共有的一些Agile概念与Agile宣言相关。前12条原则中最熟悉的是前4条:
个人和交互重于流程和工具
有效的软件重于完整的文档
客户协作比合同谈判更重要
响应变化胜过遵循计划
有些DevOps概念,它们的共同点是CI / CD管道,优化软件交付和质量,一种创新文化,服务水平的目标和指标(SLO和SLI),团队之间的协作以及自动化。
DevOps和Agile的优势
DevOps加快了开发人员与运营之间的速度。此外,即使DevOps与工具无关,开发人员和操作人员团队使用相同的技术堆栈这一事实,也在两者之间创建了共享的语言和同理心。我们的Scrum团队使用Jira来跟踪所有错误,增强功能和团队绩效。
常见的DevOps工具是Jenkins,AWS,SonarQube,GitHub,Splunk和Ansible。尽管各个团队的工具有所不同,但是思维方式和文化应该在所有人之间是通用的。
DevOps还可以减少开发人员与操作人员之间的分歧,就像了解彼此穿鞋的感觉,因为现在它们可以合而为一。
Agile团队不断频繁而快速地交付,并在此过程中逐步适应。对于大多数软件或产品交付团队而言,两周的冲刺工作似乎是最佳选择。Agile团队可以在其工作中使用DevOps原则(例如,实施CI / CD管道),与运维人员一起工作的开发团队可能以相同的两周增量工作。
传统上,DevOps引导着持续的部署、交付和集成。团队合作已整合;问题和故障由开发、运营和其他实体共同拥有,例如质量保证(QA)、测试、自动化等。
我相信,Agile和DevOps同呼吸共命运,它们之间有许多概念和理论交织在一起。尽管我毫无疑问,现在仍将有对我的观点的反对意见,甚至尖锐的异议,但我认为我们都同意,Agile和DevOps致力于解决复杂性,提高质量并围绕软件设计进行创新。
写在最后
DevOps与Agile的话题几乎就像辩论iPhone与Android一样,每个人都有自己的见解,尤其是在人们不同意的情况下。
在撰写以上这篇文章之后,阅读了这篇文章的评论后,我想补充一些想法,包括我对该主题的某些看法发生了怎样的变化。
我的观点来自我现在的位置,也来自我曾经去过的地方。我曾经是系统管理员和基础架构工程师,现在是密苏里州一家大型公用事业公司的高级Scrum管理员。
我的团队由六名前端软件工程师和IT程序员分析师、一名业务分析师和两名产品负责人以及我共同组成。最近,我们了解到管理层希望我们的团队成为DevSecOps团队,因此我们的核心Scrum团队正在与DevSecOps团队合作,以帮助我们进行过渡。没有人会天真地认为这是一件容易的事情,但DevSecOps团队的经验使我们对成功充满信心。
我们团队的经理最近聘请了一位高级软件工程师,他们将推动DevSecOps目标的实现。作为一名scrum master,我将继续专注于持续改进。团队还很年轻,所以他们没有丰富的工作经验,但是他们很聪明而且有干劲,还有很大的发展空间。此外,我们整个组织都在经历着Agile转型,因此大多数人对Agile的所有事物都是陌生的,包括Agile宣言和五个Scrum价值观。
DevOps vs. Agile:它们有什么共同点?的更多相关文章
- DevOps Scrum Agile Tech Debt
从实践中长出的 DevOps 大树 - 服务管理 - CIO时代—新技术.新商业.新管理http://www.hunnatv.com/glfw/145411.html Nexus规模化Scrum框架h ...
- 【漫话DevOps】Agile,CI/CD,DevOps
随着DevOps理念的普及与扩散,可能会被一大堆名字概念搞的莫名其妙,理清它们之间的关系可以帮助团队知道DevOps如何落地,改善工作流程. Here's a quick and easy way t ...
- 如何在DevOps中实施连续测试
在过去的十年中,对软件开发的需求已急剧发展.软件已成为公司获得竞争优势的关键优势,特别是如果您的公司属于SaaS范畴.通过在SDLC中实施瀑布等传统流程,组织现在正在向敏捷过渡,以便以更快的速度在市场 ...
- 优秀DevOps工程师必会的33个面试题
DevOps面试问题 01 您能告诉我们DevOps和Agile(敏捷)之间的根本区别吗? 答:尽管DevOps与敏捷方法(这是最流行的SDLC[Software Development Life C ...
- 【9】进大厂必须掌握的面试题-DevOps面试
Q1.DevOps和Agile之间的根本区别是什么? 下表中列出了两者之间的差异. 特征 DevOps--开发运维 Agile--敏捷 敏捷 开发和运营中的敏捷性 只有发展才能敏捷 流程/实践 涉及C ...
- 深入思考软件工程,开启 DevOps 之旅
20 世纪 60 年代,软件开始脱离硬件,逐渐成为一个独立产业.至今,软件开发过程从瀑布模型.CMM/CMMI,到 20 年前敏捷的诞生,再到今天 DevOps 的火热,一代代软件人在思考和探索,如何 ...
- 读书笔记--用Python写网络爬虫02--数据抓取
抓取(scraping)---爬虫从网页中抽取一些数据用以实现某些用途. 三种抽取网页数据的方法:正则表达式.Beautiful Soup和lxml. 2.1 分析网页 通过浏览器自带选项,查看网页源 ...
- 2020 | 可替代Selenium的测试框架Top15
本文首发于 微信公众号: 软测小生 Selenium是一种开源自动测试工具.它可以跨不同的浏览器和平台在Web应用程序上执行功能,回归,负载测试.Slenium是最好的工具之一,但确实有一些缺点. 业 ...
- 认识Agile,Scrum和DevOps
If everything's under control you are going too slow. 当今的开发,要求faster and faster.所以我们要Agile,become Ag ...
随机推荐
- JAVA的synchronized写法
使用关键字synchronized的写法比较多,常用的有如下几种,代码如下: public class MyService { synchronized public static void test ...
- Java 自定义注解及注解读取解析--模拟框架生成SQL语句
假设们使用一张简单的表,结构如下: 定义注解: 表注解: package com.xzlf.annotation; import java.lang.annotation.ElementType; i ...
- Python网络爬虫:伪装浏览器
一.添加超时跳过功能 首先, 我简单地将 urlop = urllib.request.urlopen(url) 改为 urlop = urllib.request.urlopen(url, time ...
- Spark SQL源码解析(三)Analysis阶段分析
Spark SQL原理解析前言: Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述 Spark SQL源码解析(二)Antlr4解析Sql并生成树 Analysis阶段概述 首先 ...
- synchronized 的实现原理
加不加 synchronized 有什么区别? synchronized 作为悲观锁,锁住了什么? synchronized 代码块怎么用 前面 3 篇文章讲了 synchronized 的同步方法和 ...
- python实现线性回归之简单回归
代码来源:https://github.com/eriklindernoren/ML-From-Scratch 首先定义一个基本的回归类,作为各种回归方法的基类: class Regression(o ...
- Scrapy爬虫框架(1)--安装配置与常用命令
安装与配置 Scrapy有几个安装依赖,一般来说可以直接pip install scrapy,这个过程会自动下载安装其他几个依赖. 上述安装方法不成功,则需要手动安装依赖包 步骤 安装 lxmlpip ...
- DMTF 关于 CIM-XML 的幻灯片介绍
https://members.dmtf.org/data/presentations/devcon02/JimDavis-IntroductiontoCIM-XML.pdf
- c++ 更新 performance counter 数据,错误码 87
ERROR_INVALID_PARAMETER 87 (0x57) The parameter is incorrect. 很可能是该送 ULONG 的送了 ULONGLONG,vise versa
- Windows SDK 的 ctype.h 里有一些有用的函数,例如字符串的大小写转换
#define _tolower(c) ((c) - 'A' + 'a') #define _toupper(c) ((c) - 'a' + 'A')