翻译-高效DevOps的10项实践

原文链接: http://www.drdobbs.com/architecture-and-design/top-10-practices-for-effective-devops/240149363?pgno=1, 作者Scott W. Ambler。

采用这些DevOps实践可以实现高效协作,平滑运营,更整洁的代码等目标。

DevOps已经成为了我们行业最热门的流行语之一。然而出人意料的是,在更紧密的愿景和开发团队和运营团队更有效的协作之上,很少有共识DevOps到底意味着什么。不同组织对DevOps有着不同的定义,其实DevOps有个新兴的最佳实践核心,其更进一步的目标是高度协作以生产更好的软件。在这里我考验了这些实践。但是坦白说,我并不只从开发人员角度来观察这些实践。

我按优先级从高到低列出了这些实践条目,后面的实践往往依赖于前面的实践。

实践1:利益相关者的积极参与

DevOps的根本原则是开发人员,运营人员以及支持人员必须定期紧密的工作在一起。言外之意是他们必须互相视对方为重要的利益相关人,并积极争取一起工作。敏捷社区中一个普遍的实践是“现场客户”。这个实践出自于极限编程,它鼓励开发人员应该与业务人员紧密合作。规范的敏捷团队将该实践更进一步,即利益相关的积极参与,这意味着开发人员应该与所有利益相关者一起紧密工作,包括运营人员及支持人员,而不仅仅是业务人员。这是双向的:运营人员和支持人员也必须愿意和开发人员紧密工作。

实践2:自动化测试

敏捷软件开发人员被称为质量感染者,这是因为他们关注于编写高质量的代码,渴望测试越早开始越好。结果,自动化的回归测试是敏捷团队普遍采用的实践。该实践有时又被扩展为测试先行的方式,比如测试驱动开发(TDD),以及行为驱动开发(BDD)。由于敏捷团队经常一天多次运行他们的自动化测试集,并且能够马上修复发现的问题,所以他们比普通团队能达到更高的质量。对于运营人员而言,在同意一个解决方案发布到产品环境前,坚持足够的质量审查,这是件好事情。

实践3:集成配置管理

要实现以集成的方式来进行配置管理(CM),开发团队不仅要习惯于在解决方案层级应用CM,还需要考虑自身的解决方案与组织的其余基础设施之间的
产品环境配置问题。对于一些开发人员而言这是个不小的转变,因为他们往往习惯于只考虑当前他们工作的解决方案的CM。在DevOps环境中,开发人员需要拥有企业级视角,在更高的层次看待问题。他们的解决方案如何能在产品环境结合其它资源带来优势?其它资源是否能支持被开发的解决方案?言外之意是开发团队需要了解及管理他们产品的所有范围的依赖。集成配置管理也使得运营人员了解新的发布潜在的影响,从而更容易决定进行发布的时间。

实践4:综合变更管理

从IT的角度来看,变更管理是一门确保IT基础设施的演化能对整体组织的支持成功及有意义的艺术。但是对于项目-团队层级则颇具挑战。这是因为非常多的技术,甚至相似技术的多个版本会被使用在单个解决方案的开发过程中。由于DevOps引入了与运营有关的企业级问题,综合变更管理策略会变得越来越复杂,因为需要考虑大量的解决方案能够在产品环境中同时运行和交互。为了实现综合变更管理,开发团队必须与运营团队紧密合作,来从组织层面了解任何技术的改变带来的影响。该方式依赖于前面的实践-利益相关者的积极参与,集成配置管理及自动化测试。

实践5:持续集成

持续集成(CI)是构建及验证项目的规范,当有代码更新被迁入到版本控制系统时,会进行自动化的回归测试及代码分析。CI是与DevOps相关的性感的敏捷开发实践之一(至少从开发人员角度来说是如此)。CI确保开发人员以较小的,可以对代码缺陷立即反馈的常规步骤来开发一个高质量的可以工作的解决方案。

实践6:集成部署计划

从开发团队角度而言,部署计划总是需要与该组织的运营人员交互。有些情况下,与运营人员接口的专家被特称为发布工程师。经验丰富的团队将使开发,运营及支持团队这些利益相关者一起持续的制定部署计划。当你采用了DevOps策略,你会很快意识到需要一种跨团队的方式来完成发布计划,因为需要运营人员与整个开发团队一起工作。对于运营人员来说这不是什么新鲜事,但是对于只习惯工作于孤立环境的开发团队来说却很惊奇。如果你的团队还没有这样做,你需要开始从组织层面来考虑部署时间表。更远一步,为了支持持续部署,发布工程师需要增加发布次数,因为敏捷团队已经可以持续及一致地达到发布的质量要求。

实践7:持续部署

持续部署是持续集成实践的扩展。对于持续部署,当集成在一个沙盒中成功完成时,变更会被自动升迁到另一个沙盒中,集成会自动的在这里进行。自动升迁一直持续,直到有人验证了所有的变更,特别是开发向运营的过渡期。

持续部署使得开发团队减少了新功能从被验证到部署到产品环境的时间,使得业务更具响应性。然而,持续部署增加了运营风险,因为如果开发团队没严格遵守规范,会增加缺陷被引入到产品环境的潜在风险。在企业级环境中成功的执行持续部署要求实现前面介绍的所有实践。

实践8:产品支持

企业级环境中,大多数的应用程序开发团队工作在已经存在于产品环境的解决方案的新的功能上。他们不仅工作于该新功能,还有解决严重的产品问题的职责。开发团队往往被称为产品的“第3级支持”,因为他们是解决棘手的产品问题的第三个(也是最后一个)团队。尽管做第三级产品支持的需要是普遍的,但是看板和规范敏捷交付(Disciplined Agile Delivery, DAD)则是例外,很多敏捷方法只解决传递这些影响。该实践的一个重要的副作用是给予了开发者发生在产品中的此类问题的鉴别能力,提供给他们一种学习机会,从而在设计解决方案时就考虑到相应的问题。

实践9:应用监控

正如其名称所示,这是一个运营实践,监控已经发布到产品的环境的正在运行的解决方案和应用程序。技术基础设施平台(比如操作系统),应用程序服务器,以及通讯服务通常提供监控功能,可以工作于一些监控工具(比如微软管理终端,IBM Tivoli 监控, 以及jManage)。然而,为了监控特定应用程序的功能,比如只给特定用户使用的用户界面,仪表化该信息需要与你组织的监控基础设施兼容,这需要构建到应用程序中。开发团队需要知道该运营要求,或者,更好的方式是可以访问一个框架,该框架可以直接提供相应的仪表化。

实践10:自动化的仪表盘

使用自动化仪表盘的实践是IT领域的商业智能(business intelligence, BI)。该实践分为两个方面,开发智能以及运营智能。开发智能需要使用开发工具来仪表化产生的指标。例如,你的配置管理(CM)工具已经记录了谁以及什么时候迁入代码。持续集成工具可能同样记录了构建发生的时间,运行了多少个测试,测试运行的时间,构建是成功还是失败,运行成功的测试数量等。这些原始数据会被分析并显示在一个自动化的仪表盘中。运营智能是之前讨论过的应用程序监控的一个方面。使用了自动化仪表盘,组织的整体指标开销将被显著降低(但是不能完全淘汰,因为不是所有的事情都能被自动化)。自动化仪表盘提供了实时的对组织的管理团队的洞察。

DevOps与文化息息相关

在讨论了这些苛刻的支持DevOps的实践之后,我需要强调主要的限制成功的因素是能否建立一个贯穿整个IT组织的相互协作的相互尊敬的文化。我的经验是,当决定采用高效的DevOps策略时,人及他们相互工作的方式是成功的主要决定因素。不幸的是,在组织中带来文化变迁比采用一些新的实践要难得多。在接下来的文章中会讨论这些。

更多信息

DevOps究竟是什么? 解释了DevOps为什么对开发人员如此重要。

正确采用DevOps:落地 描述了采用DevOsp策略相关的一些挑战。

规范敏捷变更管理 讨论了修改管理选项。

规范敏捷交付 讲述了DAA流程框架的更多信息。

Scott Ambler是Dr. Dobb’s 的长期撰稿人,也是Disciplined Agile Delivery: A Practitioner’s Guide to Agile Software Delivery in the Enterprise一书的核心作者。你可以在Twitter上follow他。

时间: 2025-01-28 07:18:01

翻译-高效DevOps的10项实践的相关文章

J2EE项目危机【翻译】 -避免这10项J2EE危机来确保你的企业JAVA项目成功

j2ee|项目   在我作为开发者.高级开发者.架构师的经历中,我遇到过好的.差的甚至是丑陋的企业级JAVA项目.当我问自己,是什么使一个项目成功而使另外的失败,我发现很难得到一个完美的答案,就好像很难用成功来定义所有的软件项目.J2EE项目也不例外.因此,项目被分为不同级别的成功或失败.在这篇文章里,我主要想为您--读者朋友--揭示影响企业级JAVA项目的最大的10项危险. 一些危险只是简单的延迟项目进度,一些却是错误的征兆,而还有一些使项目彻底没有成功的希望.尽管如此,如果具有良好的准备,征

项目DevOps研发云CI实践之路

本文讲的是项目DevOps研发云CI实践之路[编者的话]DevOps是Develop与Operations的缩写.DevOps不是凭空冒出来的,是我们持续集成思想的延伸. 使用敏捷或其他软件开发过程与方法,项目要求加快产品交付的速率,虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍,都促使我们不断向DevOps方向发展. 因此,现在的业务开发,对传统的CI提出了更新更高的要求,借助于云技术,我们可以在DesOps趋势下实现从传统CI向云化CI的演变. 一.项目痛点 笔者所在项目在敏捷推

数据科学家需要掌握的10项统计技术,快来测一测吧

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 无论你是不是一名数据科学家,都不能忽视数据的重要性.数据科学家的职责就是分析.组织并利用这些数据.随着机器学习技术的广泛应用,深度学习吸引着大量的研究人员和工程师,数据科学家也将继续站在技术革命的浪潮之巅. 虽然编程能力对于数据科学家而言非常重要,但是数据科学家不完全是软件工程师,他应该是编程.统计和批判性思维三者的结合体.而许多软件工程师通过机器学习框架转型为数据科学家时,没有深刻地思考并理解这些框架背后的

优秀Web设计10项原则:创新实用富有美感

他能够为我们使用家用电器的方式掀起一场革命,现在我们仍然把它作为现代世界的设计灵感,最好例子就是Apple.Apple的许多畅销产品的核心功能都采用了Dieter Rams的设计原则. Dieter Rams最著名的设计思想是优秀设计的10项原则,这些原则通常用来做出好的设计或对其进行归类.这些原则包含了在创建项目的时候设计师需要考虑到的问题,但是这些原则最适用于工业设计,因为Dieter Rams正是在这个领域做出了非同寻常的作品,并得出了这些灵感. 这些原则并不是古板的戒律,并不是不能变通的

8张图看懂office2016的10项新功能

  日前,微软推出了最新版本的办公软件:office2016,那么,office2016与之前的版本相比,有什么不同呢?尤其是目前来自金山wps这款办公软件同行的竞争压力,如果office2016没有几样黑科技,恐怕很难留住微软用户的心.下面,还是一起来看看office2016带来的10项新功能吧! 推荐教程:office2016怎么激活?office2016激活密钥与激活教程 office2016 1.增加智能搜索框 你会注意到在 PowerPoint 2016 功能区上有一个搜索框[告诉我您

优秀的Web设计:优秀设计思想的10项原则

文章描述:优秀Web设计10项原则:创新实用富有美感. 他能够为我们使用家用电器的方式掀起一场革命,现在我们仍然把它作为现代世界的设计灵感,最好例子就是Apple.Apple的许多畅销产品的核心功能都采用了Dieter Rams的设计原则. Dieter Rams最著名的设计思想是优秀设计的10项原则,这些原则通常用来做出好的设计或对其进行归类.这些原则包含了在创建项目的时候设计师需要考虑到的问题,但是这些原则最适用于工业设计,因为Dieter Rams正是在这个领域做出了非同寻常的作品,并得出

Java游戏开发中应始终坚持的10项基本原则

关于文章中涉及的两个杜撰概念: 一.绘图器:众所周知,Java GUI以paint进行绘图,以repaint进行图像刷新,而完成repaint及paint这一连贯过程中所用到绘图组件,我将其称为绘图器.就我个人的体会,绘图器的调用时机应始终处于repaint之后paint之前,即通过repaint触发刷新后执行,当其中的具体逻辑完成其对应的图像绘制后,再通过统一接口将其图像插入paint中,为了匹配需要,绘图器应始终以接口方式实现. 二.监听器:这里所说的监听器,并不是特指某个Listener组

excel怎么使用条件格式筛选出值最小的10项?

  excel怎么使用条件格式筛选出值最小的10项?           1.打开EXCEL档;例,如图   2.选定C3:C29单元格;例,如图 3.点击菜单"开始"."条件格式"."项目选取规则";例,如图 4.点选"值最小的10项";例,如图 5.跳出"10个最小项"对话框,选数值为"10","浅红填充色深红色文本",点击"确定";例,如图

给DevOps打上最佳实践的标签

本文讲的是给DevOps打上最佳实践的标签,越来越多的厂商开始研发DevOps产品,有的基于项目管理工具衍生,有的从运维工具或容器云过渡,不管怎样,大家都是为了给客户带来一条全新生产线,支撑其数字化运营. 记得2015年初产品刚起步时,我们也是从CICD开始.变更触发代码构建.再到自动化部署到容器云:随着不断地客户实施,普元对DevOps的定位.价值.特性等有了更多的认识,借本篇文章,与大家分享我们的持续认知和改进. 经过一段时间的实施与改进,本月底我们将正式发布DevOps的5.0版本,相比于