企业运营对 DevOps 的 “傲慢与偏见”

【写在前面】笔者曾帮助多家大型企业深入了解 DevOps,帮助他们理解如何改善服务交付能力。这些公司大多听说过 DevOps,也在四处寻求一个策略来采用 DevOps 方法,从而进一步占领市场,提升产品质量。出于各种原因,并非所有人都信任 DevOps。有些人觉得 DevOps 只不过给开发者改善产品提供了一个途径而已,还有的人觉得 DevOps 是一堆悦耳的空头支票,甚至有人认为 DevOps 根本无法采用,因为其所在领域所必须的自动化工具根本不存在。

以下为原文编译内容。

通常在企业里,运维通常由一个集中且独立的团队完成,同时他们需要支撑多个应用程序组。如果网站的可用性出问题,责任就落在运维团队身上。一旦出现性能问题、宕机或故障,运维团队无疑是第一道防线,但有时问题升级会返回到应用组去修复 bug 或者帮助诊断问题。

对 DevOps 感兴趣的企业往往实践或采用了一个对运维需求非常高的敏捷技术,比如建立一个测试环境,或者测试节后发布软件到生产环境。持续加快的步伐给运维团队施加了很大的压力,因为大多时候工作集中在项目后期(例如,是时候发布到生产环境中)。迫于时间压力或者过量工作,运营团队很难完成相对请求,甚至有时听到开发者埋怨想亲力亲为。那些用户可能想重建服务器、获取 Shell 访问、安装软件、运行命令和脚本、设置虚拟机、修改网络 ACL 和更新负载平衡器等。他们认为有些事情还不如自己来做,从而不再需要高度集中的运维小组。

如何让运维团队,一直负责生产环境运行时的部门能扩展其支持的环境?他们应该如何避免成为各应用团队项目周期尾端的瓶颈?如何让业务更加稳定可靠,而不是混乱、中断或不按预期执行?

如果你身处这种企业环境,又该如何进入 DevOps?如果你身处高度集中的运营团队,又该解决采用 DevOps 的压力,这里有几个问题需要企业团队谨慎考虑,问题的答案则是一步步形成 DevOps 战略的重要步骤。

那么,一个高度集中的运营团队如何处理必要任务,使得应用程序可以在生产环境或其他环境下顺利运行?

在有些企业中,初期会创建一个名为「devops」的专业团队来解决各种「devops 问题」,这便是良好运营的开端。这个团队可能会负责接手开发团队的应用程序,使用自动化工具进行打包,进行部署并将其转交给 Site Reliability 团队。不幸的是,集中式的 devops 团队也可能变成「silo」 ,也要不断接受传统运维组所面临的「项目末期」交接挑战。同时,随着更多的开发者和开发项目涌入,devops 工程师和 devops 团队再次成为瓶颈。集中的 devops 团队和传统的 QA 部门一样,当他们尝试「添加质量检测」作为一个独立过程阶段时,也不得不面临同样的压力。

为了确保应用程序可以在生产环境以及其他环境下正常运行,devops 重点必须嵌入应用体系结构。这就意味着,让应用程序易于配置、部署和监控均在开发阶段完成。集中的运维团队必须学会开发一个共享式软件交付流程和工具链。在交付工具链内部,任务可以分布在多个团队。集中的运维组可以支持工具链,正如架构师和服务提供者提供给应用开发团队一个基础框架,而在填充所需的构件就可以驱动这个管道。

什么是合规策略(compliance policies)?

大多数企业都遵循一个修改策略,即预先指定谁可以在生产过程中做出修改。很多时候,这一策略常常被理解为除了运维组以外,其他人都不能发布更新。这种切换可能导致交付时间拖延,同时如果在传递过程中丢失信息,甚至可能导致故障发生。

这些规则都是由企业制定的,但事实上,在交付端的职员从未去认真地去理解这些政策的语义,他们通常根据想象或者习惯去判断。而随着时间推移,工具和流程往往发酵成无效率的官僚机构。

基于应用或客户类型,通常会形成不同的限制规则。当涉及到如何缩短交付周期时,这些差异应该纳入考虑,因为它能帮助你发现究竟谁可以做出更改,以及修改该如何进行。

除了主动理解规则,规则同样需要做到快速和便捷地审校:

简单易懂的规则能清晰展现以下内容:

  • 谁做出了变动以及是否有权限
  • 改变应用在哪里
  • 具体的改变内容,这些调整是否能接受

这种查询应该能即时访问,而不是在某个事情后(比如故障发生)通过人工收集得到。当你拿到服务器过去24小时的工作报告时,便能轻而易举了解到环境中发生了哪些变化。

这些审计视图应该包含基础设施和工件信息,因为不管是开发者还是运维人员都想清楚软件和服务器的信息,一堆不明所以的修改信息和错误链接报告无论如何也无法组成一张全景图。

如何开放访问又不会失去控制?

通过审视软件交付的整个过程工作流全时监控将变得简单,在以往这个工作通常由一个独立的团队完成,他们往往以往竞争优先级导致的上下文切换而变得没有效率,这种情况通常在运维团队发生。运维团队需要平衡来源于应用开发团队的工作(例如,参与敏捷开发冲刺)、网络操作(例如,处理中断和生产问题)、企业用户(例如,收集信息用于控制策略)。最后,运维还需负责维护或改善基础设施等项目工作。

为了释放这个流程的瓶颈,企业必须发掘应该如何重新分配工作,或者建立一个自服务流程。因为部署、配置和监控都是需要设计到应用中的运维问题,一次需要将之一定程度地传递给开发人员。聚焦这一系列动作,运维团队需要维护一组基本的自动化模块,给开发人员相应方法来参与。创建一个开发环境和工具允许开发人员在自己的沙箱中将所需的改变整合到这个框架中。通过自助服务界面让开发人员可以便捷地创建托管环境,打开 VMs 或者容器,允许他们测试运维管理代码。

给运维管理框架构建合规的审计日志,便能跟踪到哪些资源被创建和使用。一旦资源发生冲突,这些日志将会有非常大的帮助,并让你了解到哪里需要更多的沙箱或者哪些更细粒度的配置需要定义。

欲速则不达,速度越快反而导致质量下降?

对于企业来说,不断提升创新速度才能保持竞争力,所以速度至关重要。因此这里需要更快的软件交付速度,也正是采用 DevOps 做法的主要动机。

许多 DevOps 成功案例都在展示其一天能部署多少次,10还是1000。但是在现实世界中,这些指标简可以称得上是神话。有些企业尽量一个月实现一次部署,还有些企业一个主要版本更新需要按年计算,而发布给用户更需要30天的时间。这三十天的滞后时间,同时生产环境处于不一致的状态,所有人都难以应付生产中出现的问题。「是新版本还是旧版本造成了这个尚未确定的问题?」操作无法加快的一个主要原因是无法确定问题究竟是发生在改变期间或改变后。

当改动导致问题,可能导致以下结果:

  • 添加更多控制过程(审批门槛更多,改动窗口更小)
  • 改变批次变大(更多的工作塞到给定的变化窗口)
  • 增加「紧急修正」(高优先级功能得到快速跟踪,才能避免正常的变化流程)
  • 因为批系统和非正常软件发布流程,应用程序快速更新将带来很大压力

鉴于以上后果,加快改变速度的想法显得不切实际,因为它确实可能诱发更多的问题。

问题是企业该如何快速给系统做更新?首先,指定更新过程中的安全策略非常重要。快速转变意味着能安全地快速改变。下面是一些常见策略:

小批量

大批量改变所带来的工作量需要耗费大量的人力和时间。

解决办法是利用这种策略:变化越少越容易实现,完成后也便于检查。

预演

这里有一个很好的谚语,「Don’t practice until you get it right. Practice until you can’t get it wrong」。当然,你不能在生产环境中实践这个途径。将更新应用到生产环境之前,你应该在非生产环境下进行多次实验。不要依赖于运气,要抱着必然存在故障的理念。

可核查的流程阶段

不管是新建立的一个网站或者是现有应用程序需要更新,请确保已经为先决条件做好了足够的检查。也就是说,如果你要部署一个应用,在这之前你就要准备好脚本测试,来证实你的外部或环境依赖性。如果你正在构建一个网站,在安装操作平台之前,保证你已经确认好硬件和网络环境。在流程阶段边界构建这种自动化测试,对于防止问题遗漏是一个巨大的安全保障。你可以使用这些验证检查来决定「stop the line」。

流程规则

是什么导致了环境中布满了特殊定制的服务器和网络?缺少规则。如果企业无法统一管理变动,每个人都会按自己的方式行事。那如何对流程进行管控?搜寻所有不同的版本。如果流程在两个版本中不同,那么就意味着这里存在一个 variation。流程 variation 意味着流程失控。有两个简单的度量可用于了解你对流程控制的程度:交货时间和报废率。交货时间代表改变所需的时间。废品率是返工频率。预演和可核查的流程可以通过降低废品率和稳定交货时间帮助获得控制过程。流程管控的最大好处是提高可预测变化的能力。业务依赖于这种可预测性。可预测性的业务可以提前规划移动速度的快慢。

更多途径进入运维管理环境?

每个人都更好地了解生产中各部分是如何执行的,可以帮助企业设计更好的系统来支持业务。如果开发人员或测试人员都难以发现服务运行的问题,只会耽搁有利于用户操作的改进。让任何人都能容易地了解到应用版本在主机是如何部署的,以及主机配置和应用程序的性能。

有时数据隐私规则使得数据访问并不那么直接。一些日志包含客户数据和规则可能限制有限的用户访问。不要说「没有」或手动地去收集和清洗,这里需要存在一个自动化的自服务,从而让开发者或审计人员可以自己获取。

生产环境的可见性对于开发人员来说是至关重要的,从而他们可以建立一个类似的环境。模拟声场环境建模开发和测试环境是减少变数并让一切都在控制中的有效手段。

这是否意味着允许开发者进行 Shell访问?

这个问题是传统企业运营团队的弊病。通常这个问题是另一个问题的征兆。为什么一个开发者要 Shell 访问运维支持的环境?在开发或早期的测试环境下,开发人员可能需要Shell访问来实验开发部署和配置代码。这的确是申请 Shell 访问的一个合理理由。

这是临时或生产环境中 Shell 访问的请求吗?Shell 访问请求可能是即席改变方法的一个标志,从而改变一个环境的稳定性。因此,对改变方法进行自动化封装非常重要。

归根结底,Shell 访问生产环境确实有很大的风险。

本文作者:OneAPM 工程师

来源:51CTO

时间: 2024-12-22 10:16:13

企业运营对 DevOps 的 “傲慢与偏见”的相关文章

中国企业必须通过 DevOps 加速数字化转型:以应用生命周期管理数字化为起点

中国企业必须通过 DevOps 加速数字化转型,以应用生命周期管理数字化为起点. 那么问题来了:传统企业该如何与在数天之内就能够完成新服务项目开发的互联网企业竞争呢?数字化企业在必须为客户提供相应的数字化体验之外,同样需要做到实现自身的高效数字化运营.Forrester 认为,中国企业的科技管理层和企业架构师们必须将 DevOps 和持续交付(Continuous Delivery) 设为其企业数字化发展战略的两大基石. Forrester 将 DevOps 定义为: 企业的开发与运维部门与业务

VC的傲慢和偏见(二)

中介交易 SEO诊断淘宝客 站长团购 云主机 技术大厅 我在与VC接触中,被问到最多的一个问题是:"你目前网站的流量是多少?注册会员有多少?"面对VC的问题,我都不好意思开口回答.虽然我也准备了这个问题的答案,但是我的答案,我的解释不适合短暂的3分钟.VC需要的是简单的数据答案,没耐心听你的解释,因为他们每天面对太多如你一样"优秀"的项目.(你如果参加一个僧多粥少的创投对接会,你和一个VC的交流只有10分钟,你对核心问题的解释时间最多3分钟.你如果是致电或者唐突的&

开发者不开发WP应用?微软亲身体会“傲慢与偏见”

谈到 Windows Phone,许多人脑海中都会莫名其妙地飘过一个词:人权.人权,在大多数人的印象中,并不是一件很好的事情,因为当这个词出现的时候就意味着已经有很多人看到了不如意的地方.而人们谈到 Windows Phone 在脑海中蹦出的"人权"说的却是:"Windows Phone 应用程序短缺,与其他智能手机操作系统相比应用程序落后一个或者几个版本号,别人有的,WP 用户没有." 本文不会讨论 Windows Phone 这个生态系统的质量如何,只讨论开发者

VC的傲慢与偏见(原创连载一)

写此题目是源于前不久,参加了一次投融资大会,面见了一些VC,也通过各种渠道接触了一些VC.此文有感而发,也由于感想颇多,欲以连载呈现. 此次融资之行,本人面谈了15个VC,累计发送200余封邮件,截至目前,共收到18封回复,其中包括2封系统退信!此次融资失败的结局在我意料之中,正如我在给VC的回信中写的一样:"如我所料,我的项目受到了太多的质疑和众多的婉拒!为什么会这样?是因为我用种子期的项目,用最初级的平台计划书和天使级别的融资额度在找VC.我很早就知道VC对于项目要求的苛刻,他们永远只会锦上

企业建立成功 DevOps 模式所需应对的5个挑战

[编者按]本文作者为 Kevin Goldberg,主要介绍要想成功部署 DevOps 模式,企业所需应对的5大挑战与问题.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 要给 DevOps 下个简明.准确而又恰当的定义真不是件容易的事儿.不过,以前看到过一句话,似乎能较好地解释什么是 DevOps--"DevOps 是一种文化.运动或者实践,它强调软件开发人员和其他 IT 专业技术人员之间的沟通与协作,以共同促进软件交付流程和基础设施变更的自动化." 现在,你明白了什么是

互联网企业运营基础关:七大常用数据库推荐

中介交易 SEO诊断 淘宝客 云主机 技术大厅 众所周知,甲骨文.IBM.微软,数据库领域的三巨头,并依然在孜孜不倦地推出新的产品,并不断强化其功能,尽管数据库都只是它们众多产品线的一部分,但数据作为IT的基础,对于数据所作的一切努力都显得那么重要. 数据库(DataBase,DB),是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合.从传统意义上讲,数据库这一软件更多地担任了数据管理的角色,它与其他软件系统的关系更多的是与管理软件的融合.在现如今IT体系里,数据库运用早已是企业

企业运营中枢神经直面挑战 四类服务器功能详解

中介交易 SEO诊断 淘宝客 云主机 技术大厅 近日消息得知, 互联网数据中心(IDC)逐渐成为企业运营的一个中枢神经.随之而来,高品质高效率的数据中心及IDC服务,将会直接推动着下一代数据中心的高效以及其可持续的发展.业界数据表示,在未来3年国内IDC产业市场将以25%的复合增长率增长,到2011年市场规模将达到80亿元.如此高速的发展中,如何洞悉形势把握商机成了客户以及运营商的头等大事.今天,IDC评述网跟大家一起识别服务器的功能分类. 根据服务器在互联网应用中的层次,作为服务器最为普遍的一

企业如何从DevOps中获益

本文讲的是企业如何从DevOps中获益[编者的话]作者是ServiceNow的CTO,他负责为公司制定长远的技术路线与规划:这是他从DevOps的实战经验中总结出来的4个准则,值得参考. [上海站|3天烧脑式微服务架构训练营]培训内容包括:DevOps.微服务.Spring Cloud.Eureka.Ribbon.Feign.Hystrix.Zuul.Spring Cloud Config.Spring Cloud Sleuth等. 多数企业都知道DevOps的重要性,但是只有少数知道如何实施D

10年亚马逊:云计算改变企业运营模式

IaaS于2004年从一个单纯的理念起步,于2006年进入初创阶段,而目前即将成为一项规模10亿美元的业务. 曾几何时,亚马逊只是一家".com"时代的科技公司,以在线销售图书而知名.2003和2004年,亚马逊希望简化程序员和硬件工程师之间交互的内部流程.许多企业也曾采取类似举措,但亚马逊有着更聪明的想法:为何不在同一个项目中设计一款应用,将亚马逊多余的计算资源租赁给用户? 2006年8月24日,亚马逊"基础设施即服务"(IaaS)的公测版上线.该服务帮助企业租赁