翻译-DevOps究竟是什么?

原文地址:http://www.drdobbs.com/architecture-and-design/what-exactly-is-devops/240009147
作者:Neil Garnichaud

软件开发目前的最新趋势是DevOps文化,即开发人员和运营人员一起确保软件以最低的故障率运行。

很多组织发现他们面临这样的挑战,即随着云的Web应用程序的发展,要求快速发布以便及时响应来自用户社区的问题或请求。及时响应用户需求是每个软件开发团队的目标,但是会给组织内的功能团队造成压力。压力往往导致更多的缺陷和对团队持续性的打断。DevOps通过构建一种开发和运营(这就是DevOps名字的由来)之间的关系来试图解决该问题。在该结构中,开发团队支持运营需求,比如部署脚本,异常诊断,以及从周期最开始就进行的负载和性能测试;而运营团队在软件部署前,部署时及部署后向开发团队提供知识支持和及时的反馈。

DevOps是很多软件开发团队正在前进的方向。他们之前忍受着组织给予的压力,即在QA缺少时间测试的情况下还要生产高质量的代码。而DevOps是一个新的环境,如果开发人员想要成功,就不得不有所调整。在截止期限的压缩,分为开发,QA,产品的故事墙成为了敏捷的阻碍。DevOps试图打破这个墙。现在,团队协作能力变得与技术能力一样重要。因此,单一关注最终用户的体验,来看其是如何影响业务的。DevOps并不是新的工具或组织,而是新的文化和流程。它是开发,QA以及运营相互工作来加快开发和解决问题。

为什么开发人员需要DevOps

DevOps对于开发人员来说是好事。开发人员想工作于DevOps为导向的组织中,有三个主要的原因:

  • 更好的生活质量。DevOps模式的开发人员很少会在半夜接到电话要求解决产品问题。这是因为问题在产生灾难性之前已经被发现,主动监控比被动警告要好的多。
  • 引以为豪的所有权。传统的软件流程中,一旦软件被部署,就被“甩手扔给了”QA,然后甩手扔到了产品环境。所以最终用户看到的可能与开发人员编写的完全不同。但在DevOps模式下,编写的即是发布的,因为开发人员在代码被交给QA甚至到产品环境后,仍可以继续查看和访问代码。换句话说,开发人员拥有从创建到实现的整个交付过程的代码所有权。
  • 更多相关的工作。开发人员和大多数人类一样,在真实世界中相关的工作中更容易得到满足感。因为在传统组织中的开发人员是孤立的,他们经常虚构用户场景来模拟问题。当出问题的时候他们只能尽量模拟接近这个问题。在DevOps模式中,场景是真实的。环境是经过负载测试的,比如,在软件被放入产品环境之前会测试是否能正确工作。另一个例子是测试脚本本身可以测试产品你环境,而不仅仅是模拟环境。将测试结果分享给开发人员,给予了开发人员查看在真实条件下他们编写的代码的性能的机会。

已经实现DevOps意味着什么

可能你的组织已经采用了DevOps模型。有三个问题可以让你清楚的了解DevOps的实行情况:

  • 你作为一个开发人员,能够实时获取故障信息吗?
  • 产品环境中是否使用了开发团队的测试及其它工具来验证产品环境是否能正常工作?
  • 作为开发人员,你是否视网络团队为你的合作伙伴?

如果这些回答都是“否”,那么你并未真正实现DevOps。有一些建议可以改进该情况。先从工具说起。DevOps是文化和流程高于组织,工具可以帮助执行最佳实践。特别是跨团队共享故障信息。这要求在软件中添加更多的检测信息以便查看软件在QA及产品环境中的执行情况,而不仅仅是开发环境中。这些代码会捕获错误,检查系统参数,报告功能超时,以及返回程序执行期间的其它值,并将其写入到日志文件中。

在孤立的环境中,一旦代码被发布到产品环境中,开发人员往往不能再查看这些日志文件。在DevOps世界中,开发人员可以查看任意环境中的日志文件,不管是开发环境,QA环境还是产品环境。这样不仅可以快速修复缺陷,也可以避免同样的缺陷出现在将来的发布中。这使得开发自身对业务能更快速,更具响应性,把敏捷质量引入到敏捷开发中。

打破旧习惯

DevOps也要求打破旧习惯。比如自然倾向是软件bug数量作为衡量质量的方式。但修复单个bug并不意味着能更快的创建无bug的软件。更好的衡量方式是处理bug的流程。换句话说,整个流程中是那个环节引入这个bug的?例如,是因为开发人员本地的构建环境与QA环境或产品环境不一致?或者是代码行为之所以在不同环境中表现不一致是因为某些环境中无法显示某些东西?

除非代码版本是跨环境紧密同步的,而且这些环境也是紧密同步的,否则很难搞清楚一个问题到底是个逻辑问题还是数据问题,抑或环境问题,或者其它问题。而工具能够保证其一致性。即工具能自动的将同样的代码一次性部署到多个环境中。

合作伙伴或谴责者?

开发人员需要做的最大改变可能就是与其他团队成员要有日常互动。开发人员是是主动解决软件问题(比如通过日常监控操作日志),还是等待问题报告给他们?当有问题时,又是如何被解决的?团队成员是合作伙伴还是谴责者?

很多都取决于领导力。不管管理团队如何说教DevOps愿景,请以身作则,提供必要的培训和支持,奖励开发人员的团队贡献,而不仅仅是技术能力。DevOps需要一个乐队指挥。即使当前工作并不是你的工作领域,你也应当接受它。实现DevOps环境需要理解什么对于管理是重要的;是不是发布更快了?是不是质量更高了?是不是开发人员对他们的代码更负责了?这些都与DevOps环境的方式有关。



Neil Garnichaud是SmartBear公司的Host Solutions Business经理,负责产品开发及软件研发。

时间: 2024-12-25 22:32:56

翻译-DevOps究竟是什么?的相关文章

【转】DevOps的前世今生

转自:http://www.infoq.com/cn/news/2016/09/learn-devops-from-reports 目前在国外,互联网巨头如Google.Facebook.Amazon.LinkedIn.Netflix.Airbnb,传统软件公司如Adobe.IBM.Microsoft.SAP等,亦或是网络业务非核心企业如苹果.沃尔玛.索尼影视娱乐.星巴克等都在采用DevOps或提供相关支持产品.那么DevOps究竟是怎样一回事?在Puppet.RightScale分别DevOp

你所不了解的DevOps

本文摘自人民邮电出版社异步社区<DevOps开发运维训练营>一书,点击查看http://www.epubit.com.cn/book/details/7709关注微信公众号[异步社区]每周送书 DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人--诗人.演员.记者--也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他们不会反对科学,也不会反对技术. --Neil deGrasse Tyson 在本文中,我们讨论如何快速

DevOps 在2018年的五个趋势

刚刚过去的2017年对于 DevOps 来说是里程碑式的一年,各个行业都开始结合自身的业务特点,在落地 DevOps 这件事情上有了一些规划.探索.虽然大家对于 DevOps 究竟是什么依然未能完全达成一致,但每个企业确实又能找到符合自身能力需求的部分.DevOps 带有很强的实践色彩,解决实际问题才是王道,既然那么多的 DevOps 工具.流程和方法无法一次性落地,那么先解决一部分问题总是好的,这也很符合 DevOps 的实践精神. 2018年,容器技术和 DevOps 这对好兄弟会联手上演一

分布式技术一周技术动态 2016-10-02

searcher 分布式纵向方向主要涵盖的范围包括分布式系统理论和设计实践, 资源管理和虚拟化技术, 大规模服务稳定性技术, DevOps和自动运维技术等方面, “分布式方向一周技术动态"是我每周总结和整理的关于分布式方向的精选技术文章, 希望以此让大家能够跟踪业界相关的技术动态, 培养大家对分布式系统的兴趣, 学习分布式系统理论和设计思路, 辅助大家的日常工作. 每周的技术动态会在hi群和邮件组里同步发布, 欢迎大家阅读. 对于后续 分布式技术动态 有任何意见或者建议, 大家可以随时联系我.

一分钟告诉你究竟DevOps是什么鬼?

历史回顾 为了能够更好的理解什么是DevOps,我们很有必要对当时还只有程序员(此前还没有派生出开发者,前台工程师,后台工程师之类)这个称号存在的历史进行一下回顾. 如编程之道中所言: 老一辈的程序员是神秘且深奥的.我们没法揣摩他们的想法,我们所能做的只是描述一下他们的表象. 清醒的像一只游过水面的狐狸 警惕的像一位战场上的将军 友善的像一位招待客人的女主人 单纯的像一块未经雕琢的木头 深邃的像一潭幽深洞穴中漆黑的池水 程序员开发了机器语言,机器语言又产生了汇编语言,汇编语言产生了编译器,如今的

年度十佳 DevOps 博客文章(前篇)

如果说 15 年你还没有将 DevOps 真正应用起来,16 年再不实践也未免太落伍了.国内ITOM 领军企业 OneAPM 工程师为您翻译整理了,2015 年十佳 DevOps 文章,究竟是不是深度好文,大家一起来看看吧! 本文译自 Hasan Yasar 的文章 the Top 10 Devops Posts of 2015. 2015 年 8 月,DevOps 博客 推出了自己的平台.DevOps 博客针对越来越多采用 DevOps 的企业(自 2011 年来占比高达 26%),提供各种指

开源的DevOps开发工具箱

DevOps是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的沟通.协作与整合.在DevOps的整个流程中,使用一些开源工具可以促进开发与运维之间的沟通,有利于项目的管理,甚至可以达到事半功倍的效果. 虽然很早就接触过持续交付和DevOps的概念,不过最近又重新重点关注起来.却发现一个好东西--Richard Kraaijenhagen做了一个页面把常用的一些DevOps工具整理出来. 这些工具按照大类分为如下几个方面(其中包含的工具默认是按照

异步编程系列第05章 Await究竟做了什么?

p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提高下英文,用我拙劣的英文翻译一些重要的部分,纯属娱乐,简单分享,保持学习,谨记谦虚. 如果你觉得这件事儿没意义翻译的又差,尽情的踩吧.如果你觉得值得鼓励,感谢留下你的赞,愿爱技术的园友们在今后每一次应该猛烈突破的时候,不选择知难而退.在每一次应该独立思考的时候,不选择随波逐流,应该全力以赴的时候,不选择尽力而

Async in C# 5.0(C#中的异步编程Async) 蜗牛翻译之第一章

p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提高下英文,用我拙劣的英文翻译一些重要的部分,纯属娱乐,简单分享,保持学习,谨记谦虚. 如果你觉得这件事儿没意义翻译的又差,尽情的踩吧.如果你觉得值得鼓励,感谢留下你的赞,祝各位爱技术的园友在今后每一次应该猛烈突破的时候,不选择知难而退.在每一次应该独立思考的时候,不选择随波逐流,应该全力以赴的时候,不选择尽力