兵败DevOps!一个Bug损失4.6亿美金,不得不看的惨痛教训!

发表于:2018-2-11 09:08

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈峻    来源:51CTO

  缺乏最佳实践的 DevOps,会给你的企业带来缓慢的发布周期,甚至是灾难性的错误。本文向你介绍一些能够充分使用 DevOps 的小技巧。
  本文会分享一些有趣的 DevOps 原则,并通过应用展示它们给高效的项目交付与转化所带来的好处。
  这里所提及的概念都源于 John Willis,他有着丰富的 IT 管理经验,同时也是 DevOps 运动的最初倡导者。
  当一个组织考虑去实践 DevOps 的时候,他们需要掌握一些相关术语和实用方法。
  本文会谈及如下几个方面:
  · 骑士资本的故事
  · DevOps 的术语
  · 价值流(value stream)/交付(lead) 时间/周期时间(CycleTime)
  · 高绩效组织与低绩效组织
  · 对精益模型的学习
  · 持续交付模型
  · DevOps 的实践
  骑士资本的故事
  在开始讨论 DevOps 的最佳实践之前,让我们先来看看 IT 流程和技术的失败是如何导致企业的各种业务问题与损失的。
  为了深入理解这一点,我们会引入一个发生在 2012 年的骑士资本的失败案例。
  骑士资本集团曾是一家美国本土的全球金融服务公司,它的业务涉及到开拓市场、电子交易、机构销售和交易。
  2012 年 8 月 1 日,骑士资本在系统的生产环境中部署了带有倒退功能、且未经测试的软件。
  该事故的发生是由于技术人员忘记将新的零售流动性计划(Retail Liquidity Program,RLP)代码拷贝到八台 SMARS 服务器中的一台之上,而这台服务器正是骑士用于处理股权订单的自动路由系统之一。
  当代码被发布到生产环境中以后,导致了 154 只股票的 4 百万宗交易,在大约 45 分钟内有超过 3.97 亿的换手,造成直接损失 4.4 亿美元。
  骑士资本的这一异常交易行为被定性地描述为“技术故障。”这充分地表明了:将带有 Bug 的软件部署到生产环境中所能够造成的严重程度。
  反观此事,如果他们当时遵循了 DevOps 的基本原则,该事故是完全可以避免的,而且无用功也会降低许多。
  这里的无用功意味着他们完全可以使用自动化的部署,来取代引发人为错误的手动部署。接下来我们看看 DevOps 的各种实践。
  DevOps 的术语
  Chef 的创始人 Adam Jacob 将 DevOps 定义为一种文化和专业的运动。
  通常,影响一个项目的三个因素分别是速度(时间)、可靠性和成本。开发需要有按时交付的速度,而运营需要有可靠性。DevOps 可以保证以低成本的方式实现速度和可靠性。
  DevOps 会涉及到各种模式,包括:持续改进、组织文化、学习曲线、持续交付、持续学习、持续协作和自动化。
  与 DevOps 相关的术语有:
  · 价值流,它指一个组织针对客户的需求所执行的各项交付活动的顺序。也就是指你如何把一个想法最终变现的过程。
  · 交付时间,它指价值流从开始到结束,全程转化的耗时。一般情况下,交付时间是指呈现到客户眼前所花费的时间。
  · 周期时间,它始于按照需求所开展的工作,终于准备好交付项目的时候。
  · 交付时间的掌控能力,意味着我们对 DevOps 的运用水平。
  · 部署交付时间,反映了我们在自动化方面的水平。
  由此可见,组织应遵循 DevOps 的模式和实践方式,以减少交付的时间。他们完全可以从中选取诸如:放大反馈或加强持续学习文化等一个或多个适合自身的 DevOps 方法。
  高绩效组织与低绩效的区别
  在 2016 年的 DevOps 状况报告中,有着关于如何区分出高绩效与低绩效的组织研究。
  该研究指出:高绩效的组织更接近于 DevOps 的文化,而低绩效的组织则不太适合。
  以下是从那些高绩效组织中所观察到的 DevOps 文化和实践:
  · 更高的员工参与程度。
  · 内部质量方面的建设。
  · 遵从精益产品的管理原则:注重客户反馈意见的收集、传播与实施;分解整体工作成各个小的部分,并使交付流程的工作流可视化。
  · 在计划外的工作和返工上花费的时间最少。
  总结起来,他们具有如下的实践和文化:
  · 更高的部署频率
  · 更短的变更交付时间
  · 更短的平均恢复时间(Mean Time To Recover,MTTR)
  · 更少的变更故障率
  下面是有关此类高绩效组织的详情:
  · 范例:亚马逊谷歌Facebook、Etsy 和 Netflix。
  · 在 2015 年,谷歌已经表示:他们每天会提交 5000 行代码,75 万次用例测试;亚马逊,每天会进行 13.6 万行代码的部署,平均每年 1500 万行;Netflix,每天部署 500 行代码;Etsy 则每天数百行以上。
  · 相对于低绩效的组织来说,他们的部署频率多了 200 倍以上、交付时间快了 2555 倍、恢复时间快 24 倍,而故障率则只有三层以下。
  · 他们往往有更多的合作、培训、风险信息分享、并且更鼓励沟通,同时他们面对各种故障也有着健康的心态。
  而对于低绩效的组织来说:
  · 此类组织只能努力实现一年两次以上的部署,并只有一种瀑布式的部署模型。
  · 他们的执行力缓慢、且不太可靠。在合作方面,他们的水平较低,沟通并不顺畅,对失败常会产生消极和畏难情绪,且不愿意尝试新鲜的事物。
  对精益模型的学习
  与精益模型有关的术语包括:无用功、资源流和压力。
  无用功:通过对精益模式的学习能够消除无用功。这里的无用功是指对于实现交付时间毫无用处的、不必要的步骤。就 DevOps 而言,我们应该多采用一些自动化来完成工作。
  资源流:资源流就是在开发成品时所用到的资源的平衡。我们必须保持它们的一致性,而且坚持全局优化会优于局部优化的理念。
  压力:在我们减少无用功和平衡资源流时,其实就是在给系统减少压力。这是一种系统的思维:在我们观察资源流的全局性能时,应确保各路资源能尽快地流向最终的产品。
  改善(Kaizen):这是一个有关持续改进的日语词汇。我们以丰田生产系统为例,它能够通过优化资源流,来消除无用功,并通过持续改进来减少对系统的压力。
  规程(Kata):通过对规程的执行,公司里的各个角色员工能够以系统性的方法开展工作。而且通过可重复的方式,学习者可以用非常自然的、自发的方式,来提高技术和执行能力。
  DevOps 中的精益模型影响,旨在消除任何可能出现的无用功,从而实现对资源流的优化与平衡。
  此外,通过减少压力,以确保各路资源能够尽快地流向最终的产品。因此我们需要持续改进,并且通过遵循规程,以自然、自发的方式,来提高技术和执行能力。
  持续交付模型
  DevOps 的一个重要部分就是持续交付模型,也被称为 CI/CD - 持续集成/持续交付。
  它们的基本原则就是要内置到质量保障之中,这可用通过在软件上建立全方位的测试来实现。
  高绩效的组织一般会做非常严谨的测试,他们会认真地对待各种流程中的功能性代码、集成测试、冒烟测试(smoke test),并且贯穿到他们最终的软件交付阶段。
  DevOps 的实践
  从较高层次上说,有三种方法可用来实现 DevOps,你可以从中挑选出一到两个最适合本企业的方法进行尝试:
  · 缩短交付周期
  · 放大反馈
  · 持续学习
  第一种是从左(始)到右(终)的方式。为了能够在较高的层次上实现对交付周期的缩短,我们需要有一个面向客户与交付的、整体交付时间的规划。
  该方法的实现方式有:
  · 使工作可见化,如使用看板(译者注:Kanban board 是在看板系统中用塑料或纸制成薄板,将产品名称及数量写于其上,故此得名)。
  · 切分成小批量的处理工作。
  · 自动化可重复的任务。
  · 运用精益软件的原则,消除无用功,减少各种瓶颈。
  · 设置对正在进行中的工作的各种约束。
  第二种是从右(终)到左(始)的方式,或称为放大反馈。我们使用多种工具来进行监控。
  一般情况下,通过赋能各种获取反馈的能力,我们就能够在流程中更早地发现各种缺陷、或是无用功。
  该方法的实现方式有:
  · 遥测法。
  · 故障注入。
  · 同等评审,所有的变更都被同等地进行评审。
  · 监控各种提交日志。
  相对于第一种的从左(始)到右(终)、和第二种的从右(终)到左(始)来说,第三种方法是一个闭环。我们通过使用上述提到的改善和规程来进行持续的学习。
  各个组织对它的具体实现方式有:
  · 持续学习。
  · 沟通反馈。
  · 以目标为导向的反馈。
  · 学习的目标应可信、且能不断改进。
  · 反馈不应针对个人,应当针对的是交付过程中的行为,且必须是可行的。
  · 反馈方法,在低信任度的环境中使用海豚式反馈,在中信任度的环境中使用三明治式反馈,以及在高信任度的环境中使用基层人员式反馈。
  · 无抱怨式的企业文化。
  结论
  从骑士资本的故事中,我们已经能够看到:严重的软件问题能够引起多么大的灾难。
  根据 DevOps 的状况报告,DevOps 的文化和实践不但能够让企业受益,还能够让他们在成本节省和价值上提高投资回报率:
  · 成本节省,包括宕机的成本和过剩的重复劳动上的成本。
  · 价值,包括从更快速的发布中,所收获的潜在收入与更多的客户。
  我们希望通过本文的分析和引导,你的组织可以更好地领悟 DevOps 的实施潜力,并能创造出更多的价值。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号