团队在践行敏捷的过程中,会有多种选择:Scrum、XP、Kanban、Crystal、精益生产、规模化敏捷等,其中最流行的敏捷开发方法当属Scrum。正因如此,大部分人对其产生了刻板印象:认为敏捷就是Scrum,实施敏捷就是套用Scrum方法。

而产生在敏捷之后的DevOps集文化理念、实践和工具于一身,可以提高组织高速交付应用程序和服务的能力,与传统的软件开发和基础设施管理流程相比,能够帮助组织更快地发展和改进产品,也逐渐成为衔接开发团队和运维团队的胶合剂。在这种情况下,大家反而会常常限制在一个思维困境中:团队转型,是选择Scrum还是DevOps?

在这里,有必要纠正一下人们的思维误区。首先,敏捷并非等于Scrum,敏捷作为一种软件开发运动,其发起人试图以一种更为敏捷的新方式来思考软件开发、方法论以及组织架构,从而帮助行业中的人们。Scrum作为一种方法论,并不是详细的操作规范,而是一套行为框架,在此框架基础上,各团队根据自己团队实际情况制定合适的迭代任务。

而DevOps关注的不只是开发阶段的内容,它关注的是整个系统,以促进端到端的价值流动为目的。从客户提出需求,到进入开发阶段,再到交付客户成果,价值的流动并非局限于某一阶段中。整套系统中各个单元都相辅相成,因此某一部分的改变会影响其他部分,为了使价值顺利地流动出去,需要系统中各个单元的相互配合。

因此,当人们对Scrum和DevOps并不了解时,常常会陷入二选一的误区。实际上,Scrum与DevOps并不冲突,从性质上来讲,Scrum偏向于基础框架,DevOps偏向于文化理念;从另一个角度来讲,Scrum与DevOps是局部与整体的关系:Scrum更注重每一sprint结束后的成果交付,DevOps则注重构建、开发、运维等阶段的整体运行、前后的衔接与持续交付。

在Scrum团队中,除却原Scrum团队中的开发人员,还包括架构人员、分析人员、销售人员等,团队下一步要考虑的问题是如何将将各职能成员联系在一起。部分已经意识到此问题的团队为了解决单一的Scrum方法论仅注重开发阶段这一弊端,开始寻求DevOps的支持。

1.持续交付

在Scrum中引入DevOps的持续交付概念,强调每个sprint的完成应以产品增量为目标。

  • 首先,在sprint期间,Scrum Master不会制定详实的sprint计划,而是仅制定sprint中前几日的计划,之后便随着冲刺期间的工作改进、调整灵活变动计划内容;
  • 其次,每日召开Scrum会议,同步团队中成员计划,提高成员之间的协作效率;
  • 最后,在sprint结束后,团队需要召开回顾会议来汇总这一阶段所做的工作,反思这次冲刺中的不足之处及应该注意的事项,以便在下次sprint中调整团队的整体方向。

在sprint阶段里,Scrum团队不断地进行学习、获取反馈,努力提高改进、产出速度,使产品尽可能多地发布到交付环境中。随后Scrum Master 通过这一期的目标完成情况决定下一期的sprint目标,在这一期间仍要注意的是,尽量减少过程中的人为干预,从而减少发布过程的周期。

2.扩大反馈

Scrum团队通过验收会议、回顾会议以及每日Scrum同步团队成员的任务进度,以及获取上一sprint成果的反馈。与单一的Scrum不同,应用DevOps的Scrum验收已经处于生产环境中的sprint成果,验收标准也不再是单一的性能测试,而是围绕产品本身、部署架构、市场等方面进行多方位评审,从而制定下一期sprint计划。

扩大反馈的方式有很多,总的来说首要步骤就是如何提高生产效率。有以下几种方法:可以利用结对编程来增加工作效率,使产品尽可能多地交付到环境中。也可以统一代码规范,减少额外成本的增加:当团队拥有良好且统一的代码规范时,会有效规避因某个成员的缺席造成团队工作停滞的风险,也能够提升代码的可读性,从而提高工作效率、扩大反馈。

Scrum的仪式感常常表现在迭代计划会议、每日站立会议、回顾会议等方面。而DevOps更注重在整个价值流中快速并持续交付价值,这种价值的快速流动需要产品发布过程中每个人的参与;同时,透过自动化“软件交付”和“架构变更”的流程,逐渐消除人为干预,使得构建、测试、发布软件更加地快捷、频繁和可靠。

DevOps文化倡导“共同责任”,也就是在产品发布全流程中,所有成员通过协作确保产品有价值,因此,在Scrum框架基础上应用DevOps能够帮助Scrum团队更好地进行知识学习和创新。

团队转型,Scrum与DevOps要如何取舍?的更多相关文章

  1. DevOps|高效能敏捷交付组织:特性团队(FeatureTeam)+Scrum

    这是<研发效能组织能力建设>的第三篇.特性团队和Scrum,这两个定义我们在之前的文章中都详细介绍了.这两个组织模式或者说管理实践,我都用过所以有些时候特别有感触.书本上纯粹的模式很容易理 ...

  2. 关于Scrum+XP+DevOps的学习

    最近听了ECUG大会上孙敬云老师的分享感觉受益匪浅,毕竟大学课本上只讲到瀑布模型就没有下文了,工作以后一直贯彻的都是Scrum路线,一直也没有时间好好的去学习整理这部分的知识,直到近几天听到了孙老师的 ...

  3. 0502团队项目 SCRUM团队成立

    Scrum团队成立 团队名称:对不对?队 团队目标:短期目标,完成O2O模式的第一个平台 团队口号:我们都不是神的孩子 团队照: 角色分配 产品负责人: 许佳仪.决定开发内容和优先级排序,最大化产品以 ...

  4. 《团队作业第三、第四周》五小福团队作业--Scrum 冲刺阶段--Day7

    <团队作业第三.第四周>五小福团队作业--Scrum 冲刺阶段--Day7 一.项目燃尽图 二.项目进展 [20172301郭恺第七天的进展] 第七天完成的任务: 代码整合,界面调整为相对 ...

  5. 中小团队基于Docker的devops实践

    笔者所在的技术团队负责了数十个项目的开发和维护工作,每个项目都至少有dev.qa.hidden.product四个环境,数百台机器,在各个系统之间疲于奔命,解决各种琐碎的问题,如何从这些琐碎的事情中解 ...

  6. 0429团队项目-Scrum团队成立

    Scrum团队成立 团队名称:开拓者 团队目标:努力让每一个小伙伴在学会走路的基础上学会跑. 团队口号:我们要的只是这片天而已. 团队照:正面照+背影照(那就是为什么组名叫开拓者) 5.2 角色分配 ...

  7. 冰多多团队-第一次Scrum例会

    冰多多团队-第一次Scrum会议 注:由于对课程要求的不熟悉,所以本文档为周会后的补充总结文档 会议基本情况 会议时间:3.28 19:00 - 19:30 会议地点:新主楼F座2楼沙发休息处 工作情 ...

  8. 《团队作业第三、第四周》五阿哥团队作业--Scrum 冲刺阶段--Day1--领航

    <团队作业第三.第四周>五阿哥团队作业--Scrum 冲刺阶段--Day1--领航 各个成员在 Alpha 阶段认领的任务 在团队合作时任务也会动态分配,最终以实际为主,上述具有参考价值. ...

  9. 软工团队作业--Scrum冲刺集合贴

    软工团队作业--Scrum冲刺集合贴 团队 团队名称:广东靓仔六强选手 团队成员: 黄清山 黄梓浩 钟俊豪 周立 邓富荣 郑焕 博客链接 Scrum 冲刺 第一篇 Scrum 冲刺 第二篇 Scrum ...

随机推荐

  1. Beta冲刺<2/10>

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第二天(05.20) 作业正文 如下 其他参考文献 ... B ...

  2. opencv Scalar

    template<typename _Tp> class Scalar_ : public Vec<_Tp, 4> { public: //! various construc ...

  3. Linux 集群安装zookeeper

    系统:CentOs 7 环境:jdk 8 Zookeeper 下载地址:  http://www-eu.apache.org/dist/zookeeper/stable/ 上传至服务器并解压,本人放在 ...

  4. jvm基础知识—垃圾回收机制

    1.首先类的实例化.static.父类构造函数执行顺序 我们来看下面的程序代码: public class A { int a1 = 8; { int a3 = 9; System.out.print ...

  5. ant+jmeter+jenkins接口自动化测试一

    [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试集成(一) 橙子探索测试发表于橙子探索测试订阅 90 一.简介 1.什么是ant? ant是构建工具,把代码从某个地方拿来,编译,再 ...

  6. 搭建hadoop伪集群

    基础设置:jdk.ssh. 1.操作系统.环境.网络.必须软件 2.关闭防火墙 3.设置hosts映射 4.时间同步 5.安装jdk 6.设置ssh免秘钥部署配置:初始化运行:命令行使用:

  7. 收藏python开发各种资源官方文档

    http://json.cn/ https://cn.bing.com/ https://processon.com/ https://docs.djangoproject.com/en/1.11/r ...

  8. SpringBoot + MyBatis + MySQL 读写分离实战

    1. 引言 读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做.因此,一般来讲,读写分离有两种实现方式.第一种是依靠 ...

  9. 开放api接口参数 app_id, app_key, app_secret 的理解

    看到知乎上一个回答很形象: app_id, app_key, app_secret:我的身份证,银行卡号,银行卡密码 (完)

  10. NXP S32V eiq_auto tensorflow offline tool 环境配置

    NXP S32V eiq_auto tensorflow offline tool 环境配置 完成cnn模型eiq移植的第一步 1.安装conda 下载.sh bash Anaconda3-5.3.1 ...