APP下载

事故不断的DevOps

消息来源:baojiabao.com 作者: 发布时间:2024-05-12

报价宝综合消息事故不断的DevOps

作者:CloudBees公司的DevOps宣传官,IT外媒《信息周刊》的特约撰稿人。

DevOps方面有什么样的坑?好多坑,不过你好歹可以从别人犯的错误中汲取教训。

在DevOps圈子,失败根本就不受鼓励。企业组织希望成功。它们希望每次构建、每个项目和每项长期计划都实现其目标。不过,DevOps方面的失败却是不争的事实。常言道,如果你眼看要失败,就确保尽快叫停,从中汲取教训,并利用刚获得的教训改进流程和产品。

以这个理念为背景,我们剖析了业内人士提到的几个常见的DevOps故障,尝试从每个故障中汲取一些教训。

第一个坑:不可预见的锁定

讲述者:首席软件工程师Carlos Sanchez

当你使用配置即代码实现部署自动化时,确保已落实了适当的保护措施(即验证配置)。否则,很容易把自己锁在外面,迫使你自己手动登录到每台计算机,以便推送错误的变更并部署到所有计算机上后进行修复。

教训:你将质量融入流程并提前做好自动化时,需要确保尽早并经常验证所有变更。

这种情况表明了企业需要如何实施正确的流程,不仅仅针对应用程序代码变更,还针对管理环境的基础设施即代码变更。实现自动化以追求DevOps时,有必要针对DevOps和生产系统的访问许可权的登录信息和秘密管理制定一项策略。

第二个坑:部署不合拍

讲述者:工程技术主管Laura Frank Tacho

在持续集成/持续交付(CI/CD)期间并行开展工作可加快自动化测试,并缩短反馈周期。务必确保部署不是作为一个并行步骤来执行。错误配置会导致你的代码在测试运行的同时进行部署,无论其退出代码如何,部署前自动化测试的意义几乎丧失殆尽。

教训:这个故事强调了在部署到客户之前确保已通过某些关卡有多么重要。你需要构建CD管道,以便并行测试作为生产关卡来加以管理,确保经过适当测试和验证的变更并没有自动部署。

另一件事:虽然DevOps坚持认为你应该能够随时轻松部署,但需要将部署视作一个受管理、谨慎的事件。管道中的所有流程结束时再进行部署,任何变更部署到客户之前已完成了所有必需的测试、验证、检查和审批。

第三个坑:SCM冲突

进述者:解决方案架构师Will Refvem

DevOps方面的最大挑战之一是源代码管理(SCM)。在我职业生涯的早期,有权访问Git代码仓库有点像将一把用弹药带的机枪交给喝醉酒的小孩。我在DevOps方面出的最大 糗事就是,我在一个使用Git子模块的项目中试图掌握Git的基础知识,有一系列bash脚本实施了一套基本的CI/CD工作流程,却直接在我们部署变更的环境中运行。我记不得遇到了多少次合并冲突和分离的HEAD。幸好,我们当时使用的是fork-PR模型,所以我没有造成严重破坏。

教训:需要一种适当的分支和合并模型,确保你将适当的输入馈送给DevOps管道,好让你可以持续集成、测试和最终部署变更。

第四个坑:定义不明确的KPI

讲述者:产品营销人员Juni Mukherjee

我们如何定义关键绩效指标(KPI)很重要。比如说,一个质量工程团队将每个迭代开发周期(sprint)执行的测试数量定义为一个成功指标。人会受到激励的驱使,团队的天性是增加越来越多的测试,甚至没有考虑归档过时的内容。想一想,我们可以做到测试较少,但影响力较大;更重要的是,测试越少,测试周期时间越短。因此,我们应关注测试的覆盖范围和有效性,而不是纯粹的数量。

与之相仿,发布工程团队将每个迭代开发周期的发布数量定义为一个成功指标。发布的数量势必体现了速度,然而版本发布只是将代码从A点移到B点,并没有评估给业务增添的价值。因此,将业务KPI(比如获得的新客户数量和收入增长百分比等)与发布速度联系起来至关重要,那样我们就知道自己力求有价值的速度,而不是自杀的速度。

教训:这是DevOps方面一个很重要却常常被忽略的教训。不能仅仅为了表明你在搞DevOps而实施。你需要为计划制定目标,并确保两者相一致。一旦我们定义了这些目标,就需要将KPI和成功指标与这些目标保持一致。合理定义这些成功指标和KPI将决定构建管道时哪些方面会优先考虑。

第五个坑:未能消除组织阻碍

讲述者:顾问Viktor Farcic

一大障碍是文化,因孤立的部门而导致。我们开始分析整个系统、找出哪些方面要改进时,答案往往是“这不是我们的部门,我们不了解,他们不会与我们沟通。”那些孤岛正是使用DevOps的主要理由;DevOps试图消除这些孤岛。但是实际上,大多数公司带来了另一种孤岛,这回是DevOps部门。实践中的DevOps直接有悖于DevOps的想法。

教训:围绕产品和功能等主题来组织你的团队,并让软件开发过程中的所有利益相关者进入这些产品或功能团队。这让利益相关者更好地参与其中,并防止常常困扰传统软件开发的“对立”的部落心态。

DevOps方面的文化完全与流程、实践、工具和技术一样重要,但它是最难改变的方面之一。

结论

与任何复杂的流程一样,DevOps同样会遇到失败。一路上会有交接不顺、沟通不畅。企业组织还会在实施整体DevOps计划方栽跟斗。

DevOps方面的这几个坑表明了DevOps转型如何难以实现。会有种种问题,但它们是可以解决的。你需要将转型当作一次学习和改进的迭代过程。如果你偶尔失败,继续前进,长远来看你会成功的。





2018-09-12 00:31:00

相关文章