DevOps是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。 它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而现在却需要极其紧密的多部门协作。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协作问题的流程和方法。[6]
需要频繁交付的企业可能更需要对DevOps有一个大致的了解。Flickr发展了自己的DevOps能力,使之能够支撑业务部门“每天部署10次”的要求[7]──如果一个组织要生产面向多种用户、具备多样功能的应用程序,其部署周期必然会很短。这种能力也被称为持续部署[8],并且经常与精益创业方法联系起来。[9] 从2009年起,相关的工作组、专业组织和博客快速涌现。[10][11][12][13]
DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出问题的地方。
以下几方面因素可能促使一个组织引入DevOps:
使用敏捷或其他软件开发过程与方法
业务负责人要求加快产品交付的速率
DevOps对应用程序发布的影响
在很多企业中,应用程序发布是一项涉及多个团队、压力很大、风险很高的活动。然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下:
与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位)
减少变更范围与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。加强发布协调靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。自动化强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。
现状
很多组织将开发和和系统管理划分成不同的部门。开发部门的驱动力通常是“频繁交付新特性”,而运营部门则更关注IT服务的可靠性和IT成本投入的效率。两者目标的不匹配,就在开发与运营部门之间造成了鸿沟,从而减慢了IT交付业务价值的速度。
开发人员在自己的机器上手工修改配置,而没有记录所有需要的步骤。想找到必要的配置参数,通常需要尝试很多不同的参数;在得到一个可工作的状态后,往往很难识别出通过哪些最小步骤就能到达该状态。
开发是由功能性需求(通常与业务需求直接相关)驱动的。
运营是由非功能性需求(例如可获得性、可靠性、性能等)驱动的。
运营人员希望尽量避免修改功能,从而降低满足非功能性需求的风险
如果拒绝了小的修改,但给定时间段内需要修改的总量不变,那么每次变更的规模就会变大
变更规模越大,风险也越大,因为其中涉及的区域越多
运营人员可能对应用程序内部缺乏了解,从而难以正确地选择运行时环境和发布流程。
开发人员可能对运行时环境缺乏了解,从而难以正确地对代码进行调整。
诉求
更小、更频繁的变更──意味着更少的风险
让开发人员更多地控制生产环境
更多地以应用程序为中心来理解基础设施
定义简洁明了的流程
尽可能地自动化
发布管理问题很多企业有发布管理问题。他们需要更好的发布计划方法,而不止是一份共享的电子数据表。他们需要清晰了解发布的风险、依赖、各阶段的入口条件,并确保各个角色遵守既定流程行事。发布/部署协调问题有发布/部署协调问题的团队需要关注发布/部署过程中的执行。他们需要更好地跟踪发布状态、更快地将问题上升、严格执行流程控制和细粒度的报表。发布/部署自动化问题这些企业通常有一些自动化工具,但他们还需要以更灵活的方式来管理和驱动自动化工作──不必要将所有手工操作都在命令行中加以自动化。理想情况下,自动化工具应该能够在非生产环境下由非运营人员使用。
要开始优化发布流程,可以从问题识别开始:看看上面提到的哪种问题在你的团队中具有最高的优先级。
发布协调人
发布频率上升(由于敏捷和迭代式开发的引入)
发布协调人的角色(也被称为部署协调人或集成协调人)源自发布管理或发布工程团队。这个角色与航空交通管制有些类似──实时协调不同团队的行动,有效使用共享的资源(空域、航道、跑道、航站门),达到组织的总体目标(安全起降)。
传统意义上的发布管理往往只关注软件变更的计划与管理,发布协调则需要控制“将特定软件变更发布至生产环境”的整个过程。这项工作需要系统地管理所有与“将代码构建并部署到生产环境”相关的技术任务,也被称为“发布工程”。
对DevOps的批评
有IT博客对“DevOps”这个标签进行了批评,认为它不过是系统管理员的精英至上论俱乐部在老调重谈一些现有的问题(参见“对此运动的批评”)。
相关推荐
DevOps 五大理念及其落地实践 研发运维一体化(DevOps)成熟度模型 中国DevOps现状调查报告及解读 构建企业DevOps的度量体系 DevOps实践指南精要 分布式敏捷和DevOps实践案例 AWS DevOps 助力爱乐奇大规模业务扩展 ...
DevOps 基础课程讲义 DevOps 是一种实践,旨在将开发和运维团队紧密合作,以提供高效、可靠的服务。它涵盖了从设计和开发过程一直到生产支持的整个服务生命周期。 DevOps 还要求运维人员在他们的系统工作中使用...
DEVOps成熟度模型是一系列旨在评估组织在软件开发和交付过程中实施DEVOps实践有效性的标准。本模型分为七个章节,每个章节关注DEVOps流程的一个方面,其主要目的是为组织提供一个明确的成熟度路径,帮助它们从初始级...
DevOps是一种旨在促进开发(Development)和运维(Operations)团队之间协作与沟通的软件工程实践。随着敏捷开发的普及,DevOps应运而生,它强调快速交付高质量的软件产品,通过自动化流程来提高效率,确保软件在...
devops主题系列演讲一共有14个部分,这是第11部分,每个部分里有10个大佬演讲的PPT,每个PPT都是独立的。 龙井-龙门阵之DevOps门外汉须知 罗伟-蘑菇街基于容器的全生命周期 DevOps 运营平台建设 牛晓玲&景韵-转型...
DEVOPS 概述 DEVOPS 的历史可以追溯到计算机刚刚出现的时期,当时软件开发还是少数人通过高学历才能够掌握的技能。那时只有程序(Program),但没有软件(Software),所以那个时候编写程序的人员被称为程序员...
《DevOps实践:驭DevOps之力强化技术栈并优化IT运行》是一本深入探讨DevOps理念、工具和技术的著作,旨在帮助企业提升IT运营效率,优化技术栈,促进开发与运维团队之间的协作。这本书中文高清版包含了完整的PDF内容...
DevOps Master认证考试是针对那些希望深入理解和实践DevOps理念的专业人士的一项专业资格认证。这份样题涵盖了DevOps的关键概念,包括精益管理、轻量级IT服务管理、知识体系以及团队多元性的价值。 1. 精益管理:在...
DevOps是一种旨在促进开发(Development)和运维(Operations)团队之间协作与沟通的软件工程实践,以实现更快、更高质量的软件交付。随着数字化转型的推进,DevOps已经成为企业提升IT效率、敏捷性和创新能力的关键...
DevOps 统一研发体系建设方案 本文档旨在介绍 DevOps 统一研发体系建设方案的整体架构和实施过程。该方案的目标是构建一个统一的研发平台,实现敏捷和 DevOps 的转型,提高应急管理能力和业务响应速度。 在 DevOps...
在“Go/Golang DevOps运维开发实战集训营”中,我们主要探讨的是如何利用Go语言,也称为Golang,进行DevOps实践以及与Kubernetes(k8s)的集成应用。这个集训营课程专注于2022年5月29日的最新技术趋势,旨在帮助...
在本“Python DevOps运维开发实战集训营【高级班】冲刺班”中,学员将深入学习Python在DevOps领域的应用,以及与之相关的k8s(Kubernetes)技术。这个课程面向的是已经有一定基础的开发者,旨在通过实战训练提升其在...
在2020年的中国DevOps现状调查报告中,我们可以看到DevOps在中国的落地实践现状,包括DevOps的成熟度、应用现状、企业对于DevOps工具和技术的选择、DevOps转型现状以及面临的问题和挑战。报告基于1858份有效问卷,并...
标题“07-DevOps开发运维一体化.pdf”和描述“DevOps开发运维一体化”所要传达的核心知识点涉及DevOps的概念、价值、工具链和流程,以及它在企业中实施的优势和挑战。这些知识点是当代IT行业特别是软件开发和运维...
当前DEVOPS的发展变化情况. The Accelerate State of DevOps Report is the largest and longestrunning research of its kind. It represents five years of work surveying over 30,000 technical professionals ...
### DevOps for Web Development #### 知识点一:DevOps 概念及核心原则 - **定义**:DevOps 是一种文化和实践方法,旨在通过自动化软件交付过程和基础设施变更来缩短系统变更从构建到生产的时间,同时保持高质量...
"DevOps开发运维一体化平台建设解决方案" DevOps(Development and Operations)是指将软件开发(Dev)和运维(Ops)两个领域结合起来,实现软件的快速交付和高质量的运维。DevOps 的出现是为了解决传统的软件开发...
分享一套Python DevOps运维开发的视频教程——《Python DevOps运维开发实战集训营【中级班】》,2021年12月底结课,提供课程配套的全部文档代码资料下载! 课程一共12周: 第1周、开班仪式 第2周、第一阶段:Python...