敏捷与DevOps

最近看了一些项目团队的敏捷实践分享,大家都提到了采用DevOps的方式。在推广敏捷的时候,也都会推广DevOps一体化的平台。因此我也学习了一些跟DevOps相关的书籍和资料,对敏捷跟DevOps的关系有了一些理解。

什么是DevOps

从字面上看,就是开发和运维的结合。但具体是什么呢?跟敏捷一样,DevOps并没有一个确切的定义和界限,而是一套人们在软件开发实践中的经验和方法的总结。这些经验和方法是为适应当下软件开发的特点(Volatility,Uncertainty, Complexity, Ambiguity, VUCA)而产生的。它在基于敏捷增量与迭代开发,持续改进的思想基础上,倡导了持续交付。

DevOps的产生

传统的瀑布式开发方式被看做是软件开发的第一次进化,敏捷被看做软件开发的第二次进化,而DevOps被看做是软件开发的第三次进化。

敏捷的产生,主要是为了解决需求不确定的问题。因为随着项目复杂度的增高,市场的不断变化,需求在项目的早期往往是不确定的。敏捷通过迭代和增量开发的方式,尽早的向客户交付产品功能,从而不断的获得客户的反馈,进而使需求不断明确。采用敏捷的方式,在每个迭代结束的时候,都会产生潜在可交付的软件。迭代周期短,频繁的交付,这些特点使敏捷需要强大的质量保障,因此持续集成,自动化测试,这些敏捷实践也几乎成为了敏捷的标配。虽然每个迭代结束时都要产生潜在可交付的软件,但是并不是每个迭代都会交付。主要原因,一是因为部署是一个复杂的过程,时间和人力的开销很大;二是客户可能并不需要这么频繁的升级软件,他们只是希望能看到软件的最新成果,以确定是不是他们想要的,以及接下来他们又想要什么。基于这两点原因,迭代结束时,敏捷团队通过迭代评审会向客户演示软件成果,客户根据演示的情况给出反馈意见。

这种向客户进行演示软件成果的方式主要适用于客户是确定的,并且客户不需要频繁升级软件的情况。然而在互联网行业,用户是海量的,不确定的,只有在软件交付过后,才能得到不同用户的反馈。并且用户的反馈如果没能得到及时的解决,有可能会造成用户的流失。因此,持续交付应运而生。软件部署被提到了整个软件开发生命周期中的很重要的位置。人们提出了将开发和运维紧密的结合起来,形成一条完整的开发部署流水线。DevOps也由此提出来了。

由此可见,敏捷关注的是软件生命周期的前面部分:需求,开发,测试。DevOps在此基础上,又着重关注了后面的部分:部署与发布。

DevOps技术支持

DevOps提倡的是持续交付,需要高质量做保障,以及自动化的流水线做技术支撑:

  • 敏捷项目管理
  • 软件配置管理
  • 持续集成
  • 自动化测试
  • 自动化部署

持续集成和自动化测试保障了持续交付的质量。自动化部署使高频发布成为可能。灰度发布等发布策略降低了高频发布的风险。

总结

DevOps打造了端到端的持续交付流程。也体现了团队高质量的持续交付的能力。在持续交付的过程中,不断进行持续改进,从而又可以不断的提升持续交付的能力。
不过并不是所有的项目都适用高频发布。比如那些需要到客户现场去部署,或者客户并不希望频繁升级的软件项目来说,并不需要如此频繁的交付,可以根据项目的实际情况而定。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • DevOps 是敏捷应用于软件团队的成果。但真正的问题是,在一场比赛中,哪一方会获胜? 在角斗场的一头,我们有经过...
    程景天阅读 8,089评论 0 0
  • 过去一年多,本人所在公司发生了很大变化,随着敏捷开发的实施,DevOps的应用,明显感觉到开发效率的提升,人员积极...
    leitty阅读 5,084评论 0 4
  • 前言 DevOps方案实施在互联网行业中已经相对成熟了,而在游戏行业中还处在起步的初级阶段(据个人了解的身边游戏公...
    云时代构架杨彪阅读 7,521评论 0 8
  • 1 走在破旧狭窄的小巷里,君庭竟感觉陌生了好多,这里还是青石板铺就的小路,许是连日的阴雨,石缝里竟然泛着青光,那是...
    龙妮妮阅读 3,283评论 0 2
  • 作为一名英语老师,总会听到家长或者学生抱怨英语不好学,比如说:我家孩子那么懒,总不愿意记单词,怎么办喔?我家孩子从...
    終日忙碌阅读 1,720评论 0 0

友情链接更多精彩内容