为什么DevOps的必然趋势是BizDevOps
简介: 从精益思想出发,我们可以看到DevOps的必然发展方向,那就是向业务侧延伸。业务是产品开发和运维的源头,完整的价值流必须从源头开始。这不是预测,而是正在发生的事。
编者按:本文源自阿里云云效团队出品的《阿里巴巴DevOps实践指南》,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电子书,了解阿里十年DevOps实践经验。
本文作者:何勉,阿里云云效资深技术专家
谈到DevOps,就必须从敏捷和精益开发说起。DevOps在它们基础上发展而来,借鉴了其中的方法、理念,并发展和完善了它们的实践体系。
敏捷软件开发的兴起
敏捷软件开发的实践最早出现在上世纪90年代。当时,一批轻量的软件工程方法和框架相继诞生,它们共同的特点是,相对传统软件工程,都遵循演进和迭代的模型,过程更加轻量灵活。其中Scrum和极限编程(ExtremeProgramming)在实践上最为成功,影响最大。它们都是迭代和增量的软件开发框架,区别是Scrum只包含管理实践,而极限编程则同时涵盖工程和管理实践。
上世纪90年代,PC软件流行和第四代编程语言的出现,面向对象和设计模式运动的兴起,让小型项目的开发蓬勃发展。同时,互联网应用和开源社区兴起,有别于传统的开发模式不断涌现,优秀个人在程序开发中的作用得到凸显。
这些因素都让非传统开发方法有了实验的土壤。其结果是,一方面质量问题层出不穷,这部分促使了源自全面质量管理体系的CMM/CMMI在这一时间的繁荣和推广;另一方面也产生了许多不同于传统方法的有效实践,让业界看到了新的可能。敏捷运动这时已经呼之欲出,它既是对传统的反叛,也是对野蛮生长的规范。
2001年2月,17位轻量级软件工程方法的代表人物,齐聚美国犹他州的雪鸟滑雪胜地,其中也包括Scrum和极限编程的几位发明人。在两天的会议之后,发布了后来产生巨大影响的敏捷宣言(参见 http://agilemanifesto.org/),敏捷宣言陈述了他们共同认可的关于软件的开发方法的理念,同样重要的是他们找到了敏捷这个词来总领这些理念。
敏捷概念在2001年出现,可以说适逢其时。当时,一方面传统方法变得越来越臃肿笨重,却没有解决软件危机;另一方面,人类正在进入互联网时代,软件业对响应变化和创新的要求迅速升级,这是更根本的原因,毕竟需求才是行业发展的最好助推剂。
敏捷宣言发布后,敏捷成为了一场运动,被迅速地推广和应用。但是,早期的敏捷专注的还是研发交付阶段,站在业务的角度,它的目标是帮助产品和研发团队提升敏捷响应能力,也就是:“更早地交付价值,更灵活地应对变化”。然而,在企业数字化转型的背景之下,IT不仅要保证产品的开发和交付,系统部署和运行同样重要。DevOps继承了敏捷开发的理念,又补上了运维的部分,但DevOps绝不是开发和运维的简单叠加,这个我们后面还会说到。
精益产品开发的出现
精益思想最早源自生产制造领域,根源于丰田在产品制造中管理和工程实践。1988年《斯隆管理评论》的一篇论文《精益生产系统的胜利》比较了西方的生产方式和丰田生产方式在效率和质量上巨大差距,挑战了规模生产带来效益的神话。从此,精益开始进入西方的视野,逐渐成为现代管理学的重要组成部分。
《精益思想》一书将精益定义为:有效组织人类活动的一个新的思维方法,目标是消除浪费,以更多地交付有用的价值。书中进一步总结了精益的5个原则,同时也是精益的5个实施步骤:
- 定义价值:站在用户的视角定义什么是价值,并把它描述为具体产品或服务;
- 识别价值流:识别和映射创造价值的流程步骤,消除不增加用户价值的步骤和活动;
- 让价值持续流动:让用户价值在流程步骤中流动起来,使它们持续、顺畅地流向最终用户;
- 用户价值拉动:由用户价值拉动流动,避免不带来用户价值的浪费;
- 精益求精:不断重复1到4步。追求完美的价值和价值流动,消除过程中所有浪费。
在这个抽象层次上,精益思想超越了其诞生的制造业,深刻影响了各个行业,如精益政务、精益医院、精益领导力、精益服务业、精益供应链、精益教育等,这其中也包含产品开发。事实上,主流的敏捷开发方法都直接受到了精益思想的影响,遵循精益的基本原则。
与此同时,精益产品开发作为独立的实践体系也快速发展,它聚焦两个方面的目标——价值交付过程和价值本身。
第一,关注价值交付过程。其中比较有代表性的是“精益看板方法”,它由David Anderson在2006年左右基于自己的实践发展而来,并在2010年出版的《看板方法》一书中加以系统总结。“看板方法”是精益思想在软件开发中具体应用。它从可视化需求交付端到端的价值流开始,通过系统的实践提升需求的流动效率,并确保流动的过程质量,从而实现端到端的系统改进。
“看板方法”为代表的这一类精益实践的本质改变是:从关注资源的使用效率,转变为关注价值的流动效率。这也带动使用者从过去的局部优化转向端到端的全局优化。
第二,关注价值本身。其中比较有代表性的是“精益创业”。精益创业的实践最初由Steve Blank基于自己和其他硅谷的创业实践发展而来,Eric Ries在《精益创业》一书中对精益创业的理念和实践,做了系统的总结,并让精益创业的理念迅速普及。
精益创业认为创业是一个巨大不确定的过程,其最大的浪费是交付没用的(不能解决用户问题,或带来业务成功)的东西。为此它把价值的探索和发现融入产品交付过程,提出了著名的“开发-测量-学习”循环。循环从关于市场和产品的待检验概念开始。接下来,循环的第一步是开发用以验证这一概念的最小可行产品(MVP,Minimal Viable Product);第二步:基于最小可行产品收集市场、用户的反馈,并获得测量数据;第三步:用数据验证假设,证实或证伪它们,并加以调整,产生经实证的认知。然后,进入下一循环,持续探索商业模式和产品功能设计。
精益创业的影响远超初创公司,事实上“精益创业”一书中把“创业”定义为在不确定的环境下,开创新的业务和产品。而“不确定性”似乎已成为今天IT领域身处环境的共性,也因此,MVP、“开发-测量-学习”循环等理念已成为IT创新领域公认的实践,并且围绕精益创业发展出一套完整的创新实践体系,如精益数据分析、精益客户开发、精益交付设计等。
探索和发现有效的价值,并让价值顺畅流动。围绕这两个目标,并遵循精益思想,精益产品开发已经发展成为系统的实践。精益思想对DevOps的影响也非常根本,DevOps三原则就完全遵循了精益思想。
DevOps的诞生
最初,敏捷和精益社区都还只是关注开发侧的实践和行为,运维并没有成为他们关注的重点。但是,光有系统开发是不够的,开发完的系统必须即时顺利部署,并连续稳定运行才能够实现价值。而传统上,这部分是由运维负责的。
从价值的角度,开发加运维才构成相对完整的IT价值链。当然更完整的还应该包含业务,这是后话了,这还不是早期DevOps社区关注的重点。DevOps诞生之初,解决的问题还是开发和运维之间的问题,这是影响IT价值链的最突出问题。
在传统的IT组织下,开发团队(Dev)和运维团队(Ops)之间诉求不同——开发团队(尤其是敏捷团队)追求变化,运维团队追求稳定。双方往往存在利益的冲突,比如,精益和敏捷的团队把持续交付作为目标,而运维团队则为了线上的稳定而强调变更控制。部门墙由此建立起来,这当然不利于IT价值的最大化。
2009年,在美国举行的第二届Velocity大会上,来自Flickr公司的John Allspaw和Pauk Hammond发表了一个演讲《10+ Deploys Per Day: Dev and Ops Cooperation at Flickr》。在这个演讲中,Allspaw和Hammond以角色扮演的方式,生动地表现了开发与运维之间的各种冲突。演讲中出现很多金句,如“It's not my code, it's your machines!”,这深刻反映了Dev和Ops关系的现状。接着,他们又展示了如何通过消除开发团队(Dev)和运维团队(Ops)的壁垒,双方通力合作,借助工具和文化的改变让软件的发布和运维变得持续和高效。
这次演讲是DevOps发展历程中的标志性事件。它提出了正确的问题——为了更快交付和实现价值,必须弥合开发和运维之间的鸿沟,并给出了解决方案——为了弥合开发和运维之间的鸿沟,需要在文化、工具和实践方面的系列变革。
同一年,比利时独立IT咨询师Patrick Debois看到这个演讲,受到启发,组织了第一届DevOpsDays,DevOps正式登上舞台,DevOps的理念开始流行,其相关的工具和实践也快速发展。期间以容器化和自动编排调度为代表的云原生技术的出现也极大加速了这一进程。今天,DevOps已成为企业数字化的核心能力之一,是对IT交付和运行的基本要求。
其后,在《凤凰项目》和《DevOps实践指南》两本书中,Gene Kim等人总结了DevOps实施的三步工作法,它们分别是:
流动原则:聚焦IT系统的整体价值流,全局优化,保证价值从左(上游)到右(下游)的快速流动。
反馈原则:创建从左到右的反馈循环,并缩短反馈周期和放大反馈效果。这样,就可以更快的响应和理解内外部客户,并即时获取改进所需要的知识。
持续的实验和学习原则:创建承担风险、持续实验并从错误中学习的文化,在不断的尝试中精进能力,并提高系统的韧性。
Kim等人认为,这三步工作法是其他一切DevOps流程、实践的价值和哲学根基,所有DevOps模式都可以从这三个原则派生而来。
稍作探究,就能够觉察,DevOps三步工作法是精益原则的翻版。更确切的讲,是精益原则在IT开发和运行上下文中的具体实例。事实上,DevOps的基础部分,体现了精益原则的影响和应用。
总结
回顾敏捷、精益和DevOps的发展,我们可以得出如下两个结论。
第一,DevOps 是敏捷开发实践的自然发展。敏捷开发的目标是“更早地交付价值,更灵活地应对变化”。敏捷运动始于开发侧,但运维侧如果不做改变,就一定会成为瓶颈,最终敏捷的目标还是无法达成。为了让敏捷实践发挥真正的价值,开发运维的联动就势在必行了。
第二,DevOps是精益思想应用在IT领域的必然结果。精益产品开发的目标是:“顺畅的交付有效价值”,精益思想则要求端到端的系统优化和持续的改进。而开发和运维是系统的两个重要组成部分,缺一不可。DevOps三原则,正是精益思想在IT开发运维领域的具体实例。
最后,从精益思想出发,我们可以看到DevOps的必然发展方向,那就是向业务侧延伸。业务是产品开发和运维的源头,完整的价值流必须从源头开始。这不是预测,而是正在发生的事实,大部分DevOps的实施都已经将业务侧包含在内,成为BizDevOps,只不过DevOps的称谓已经深入人心,我们也将延续DevOps的说法,但缺省情况下,它包含了业务在内。
DevOps发展的同时,数字化转型也成为了企业界的共识,大部分企业数字化框架都把DevOps作为最核心的能力之一,DevOps的影响范围也不断扩大,成为力求提升数字化能力的企业必然选择。下一节我们将在数字化转型这一背景下,分析DevOps要解决的根本问题。
本文为阿里云原创内容,未经允许不得转载。
为什么DevOps的必然趋势是BizDevOps的更多相关文章
- 五种团队的组织方式落地 DevOps
原文链接:https://blog.matthewskelton.net/2013/10/22/what-team-structure-is-right-for-devops-to-flourish/ ...
- devops 下测试组织管理面临的挑战及应对
导读 先从引发的5个问题讲起,再简单回顾一下devops 简介和兴起背景 ,再从itest 测试管理团队的视角提出应对办法 DevOps后,测试面临的挑战 敏捷开发必然是迭代开发管理模式 ...
- 什么是低代码(Low-Code)?
阿里云 云原生应用研发平台EMAS 彭群(楚衡) 一.前言 如果选择用一个关键词来代表即将过去的2020年,我相信所有人都会认同是"新冠".疫情来得太快就像龙卷风,短短数月就阻断了 ...
- CI Weekly #15 | 据说新版 flow.ci Dashboard 界面很酷
好久不见 :) 最近工程师们卯足了劲,全新的 flow.ci dashboard 页面 已经与所有用户见面了.更快捷地创建项目,构建列表页面新增分支,Pull Request 界面:侧边栏新增构建任务 ...
- 微软正式发布VS2015和.Net为开发者提供数百个新功能
今天,我很高兴地向大家宣布:Visual Studio 2015 和 .Net 4.6 的正式版本现已提供下载! 自去年十一月我们提出了微软开发技术的愿景:让所有开发者,无论他在什么平台,开发哪种应用 ...
- 2023年 DevOps 七大趋势
随着时间的推移,很明显 DevOps 已经成为最高效的敏捷框架中的无人不知晓的名字.越来越多的企业(包括各类规模企业)正在采用 DevOps 方法来简化其运营效率.DevOps 的新时代趋势已经见证了 ...
- 2021年的十五个DevOps趋势预测
DevOps已经走过了很长的一段路,毫无疑问,它将在今年继续闪耀.由于许多公司都在寻找围绕其数字化转型的最佳实践,因此了解领导者认为该行业的发展方向非常重要.从这个意义上说,下面的文章收集了DevOp ...
- 阿里巴巴如何进行测试提效 | 阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
- 业务驱动的全景监控体系在阿里的应用 | 阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
- 给 DevOps 初学者的入门指南
当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...
随机推荐
- 4项关键技术提升 XR 扩展现实体验-XR应用云流化
无论是使用户能够协作设计电动赛车,还是帮助观众通过数字世界与自然互动,越来越多的企业利用XR扩展现实为用户提供沉浸式逼真的虚拟环境. 下一代沉浸式技术的应用越来越广泛,图形和人工智能的最新突破正在扩展 ...
- uniapp中引入Leaflet
1. 引言 uniapp中自带有map组件,并且自带的map组件有常见的显示地图.绘制点线面的功能 但是,它存在以下问题: 收费,自带的map组件使用的是高德.腾讯的地图,无论使用什么样的功能,即使只 ...
- JAVA去掉字符串前面的0、去掉字符串后面的0
//去掉字符串前面的0 String str1 = "00123400"; String newStr1 = str1.replaceAll("^0+", &q ...
- [apue] 书中关于打印服务代码的一个错误
在看 apue 第 21 章 与网络打印机通信一章时,发现一段关于链表操作的代码有问题,现在摘出来让大家 review 一下.先上代码: printd.c 这是打印服务的源代码,在打印时,用户通过 ...
- Java日期、字符串、毫秒值格式转换
1 /** 2 * 3 */ 4 package study.reliable; 5 /** 6 * @author : Administrator 7 * @date :2022年4月21日 下午9 ...
- MybatisPlus的那些坑
1.实体类属性会被错误解析,需要加上注解@TableField @TableField("front_of_id_card") //身份证正面 private String fro ...
- #交互,鸽笼原理#CF1776C Library game
题目 有一个长度为 \(m\) 的书架,以及 \(n\) 个长度 \(a_1,a_2,\dots,a_n\) Alessia 和 Bernardo 从书架上取书.每次由 Alessia 选择一个之前没 ...
- #单调栈#CodeChef Meteor
METEORAK 分析 设 \(dp[l][r]\) 表示第 \(l\) 到 \(r\) 行的答案,可以发现它由 \(f[l][r],dp[l][r+1],dp[l+1][r]\) 转移而来. 关键就 ...
- FindBugs问题EQ_COMPARETO_USE_OBJECT_EQUALS的解决方法
本文记录的是2016年4月初发生的事情. 前几天,标准CI的静态检查页面发现一个项目组同事引入的FindBugs问题,EQ_COMPARETO_USE_OBJECT_EQUALS,CI对这个问题给出的 ...
- 面向OpenHarmony终端的密码安全关键技术
本文转载自 OpenHarmony TSC 官方微信公众号<峰会回顾第17期 | 面向OpenHarmony终端的密码安全关键技术> 演讲嘉宾 | 何道敬 回顾整理 | 廖 涛 排 ...