一文说清DevOps与敏捷的区别与联系

如果要讨论敏捷和DevOps之间的区别与联系,首先看一下他们产生的背景。在软件开发的整体流程之中,存在着很多环节,这些环节之间,也都存在着很多障碍。

一文说清DevOps与敏捷的区别与联系_第1张图片

如图所示,在客户/用户、业务部门、开发部门、运维部门之间,都有各自不同的工作目标。

对于客户/用户而言,他追求的目标就是降本增效。无论是ToB还是Toc类产品,他们都希望产品使自己的业务或者生活越来越好,客户追求的是价值至上的原则。

对于业务(或者是商务)部门而言,他们的目标是快速满足客户需求,然后增加营收。所以业务部门或者商务追求的是市场文化,这种客户至上的市场文化,最终目标就是赢单。

对于开发部门而言,他的目标是要快速的高质量的交付产品功能。所以产品功能在没有bug的前提下,快速传递给运维部门,快速交付上线,是研发部门的KPI。

对于运维部门而言,他们追求的是各种环境的安全稳定,换个角度就是能持续的对外提供7*24小时的不间断服务,所以对于运维部门来说,稳定压倒一切。

基于上述各个部门的不同追求,必然导致他们之间存在着很多障碍。那么对于这些不同阶段存在的障碍,业界就提出了各种不同的解决方案。

一文说清DevOps与敏捷的区别与联系_第2张图片

对于什么是敏捷、什么是DevOps,业界也没有统一的定义。百度百科定义如下:

1、“敏捷开发”以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。

2、“DevOps”是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

DevOps有广义和狭义两种定义。就广义定义而言,DevOps包含了整个软件开发过程中的各种最佳实践。而狭义定义,DevOps则通常指代码提交以后,CI/CD部分的工程实践。如下图所示,DevOps则是指广义概念。

一文说清DevOps与敏捷的区别与联系_第3张图片

那么面对图二中的各个阶段的矛盾点,敏捷和DevOps(此处仅仅只CI/CD)解决的是不同阶段的问题。敏捷通过流程管理手段,应用一些理论框架(比如scrum、Kanban),主要解决业务/商务部门和开发部门之间的矛盾点,让双方能够快速沟通,高效协作。而DevOps主要是通过一些工程实践方法,结合自动化工具,解决开发、测试、运维部门之间的矛盾,使产品功能能够快速、稳定的上线运行。

一文说清DevOps与敏捷的区别与联系_第4张图片

所以无论精益、敏捷,还是DevOps,不用太纠结这些概念的理论含义。无论黑猫、白猫,能够抓住耗子,就是好猫。无论精益、敏捷,还是DevOps,能够以为客户为中心,实现产品业务价值,保证产品功能快速、稳定的上线运行,才是适合本企业的最佳方法实践。

你可能感兴趣的:(敏捷开发,DevOps,运维,devops,运维)