6 种应避免的 DevOps 错误实践

阅读数:1294 2018 年 9 月 22 日 18:20

随着 DevOps 作为数字化转型过程中支柱地位的思想受到越来越多的认可,CIO 们对于了解 DevOps 与开源思想如何转变企业文化的热情也在不断升温。 DevOps 是一系列概念的组合,这些概念未必都是新出现的,但他们正在快速地带动技术社区的热情。只需看看市面上已经有多少这方面的书籍和资源就可以了解一二,而这些资源能够帮助你的 DevOps 启动与实践,使你进入 DevOps 的下一个阶段。

不过,仍然有许多人并不完全理解 DevOps 的意义,而对于 DevOps 不充分的认识与理解,使许多 DevOps 实践无法真正落地。本文列举了 6 种最常见的错误,以及避免这些错误的方式,让你能够更顺利地开始 DevOps 之旅。

1. 设立一个独立的 DevOps 团队

软件组织有一个最常见的失误,就是创建一个全新的团队,让他们负担起整个 DevOps 的工作。对于开发与运维工作来说,让一个全新的团队负担起与所有人进行交流沟通的工作实在过于复杂。DevOps 的原意是改进整个软件开发过程中各个团队的沟通,包括安全、测试与数据库管理团队,而不仅仅是开发与运维方面的工作。如果你为实施 DevOps 设立了一个全新的团队,只会让事情变得更加复杂。

团队成功的秘诀在于简单化,我们应该专注于培养自动化、质量与稳定性思想的文化。打个比方,你可能需要让所有相关人员参与某个会议,在会议中讨论架构,或是在生产环境中发现的某些常见问题。在这样的场景下,每位与会者都需要意识到他们的工作会对他人产生怎样的影响。DevOps 的秘诀不是设立一个专门的团队,而是让整个组织作为一个 DevOps 团队进行决策。

2. 对于工具投入过多精力

在 DevOps 的启动过程中有大量的工具可以帮助你的实施,没必要在启动 DevOps 策略的初期将时间浪费在选择不同工具的争论上。你很快会发现,要为团队与组织流程找到正确是非常困难的,因为每个团队(开发、IT 运维、安全团队等等)都会为自己的 DevOps 实践选择特定的工具,哪怕这种工具会让他们与其他团队的沟通变得更困难。此外,总会有新的工具不断浮现,其中可能会有一些工具能够承担起与其他工具相集成的任务。

当然,你必须为敏捷软件开发、持续集成发布、版本控制等工作找到适合的工具。一旦缺乏这些工具,团队就难以发掘出在 DevOps 方面投入的精力所带来的最大价值。但是,如果仅是购买一些持续部署工具,或是将应用作为容器发布,是无法为组织实现 DevOps 转型的。

某些软件供应商可能会宣称能够为你的 DevOps 实践提供完美的工具,但请你以一个不可知论者的眼光来看待这种宣传,并牢记一点:没有任何工具能够完全满足你的所有需求。

3. 专注速度,却忽略了安全与质量

许多组织在 DevOps 实践中会将 CI/CD 策略作为一个重要部分,他们希望能够尽量缩短开发与部署新代码的时间。不过,DevOps 的实践者表示,以安全和质量为代价换取交付速度是一个巨大的错误。即使你能够更快地构建、测试,并将新的应用发布至生产环境,但如果这些应用不能像你期望中那样工作,又有什么用呢?

为了保障软件的高安全性与高质量,开发团队应该尽早让测试进入整个开发流程。更重要的是,能够在实际部署之前确认候选发布版本是能够进行持续交付的。

4. 创建过多的代码分支

在敏捷软件开发与 DevOps 实践中,软件(主干)应该始终保持可部署的状态,让开发人员至少每天都能够往主干分支,而不是特性分支提交代码。如果构建失败,在 10 分钟内就可以修复。如果有新的开发入职,也应当能够快速地在工作机器上安装一份类似于生产环境的代码。

对于熟悉传统瀑布式开发环境的开发者来说,打破他们使用分支的习惯或许很难,但控制分支的使用的确能够带来很多益处。如果你倾向于基于主干的开发方式,那么开发者就能够在一个具备最大连续性,单一的代码库上进行开发了。

Puppet 在 2017 年的 DevOps 现状 报告中表示:“根据我们的发现,在合并至主干之前,让分支与 fork 保持非常短的生命周期(少于一天),并且保证活跃的分支总数少于 3,这对于持续集成交付来说非常重要,并且能够带来更好的效率。因此,请做到每日都将代码提交至主干或 master 分支。”

DevOps 为你处理开发者机器上与生产环境中的代码之间的关系提供了许多自动化的能力。如果代码库产生过多不同的版本,会给整个 DevOps 过程的复杂度带来几何级数的增长。

5. 忽略安全团队的参与

DevOps 并不仅是将开发与运维团队整合在一起这么简单,这是一种持续性的软件开发与自动化过程,其中包括了安全、审计与合规等因素。许多企业常犯的一个错误就是没有从一开始就遵循他们的安全实践。

事实上,在一次 CA Technologies 的问卷中显示,安全问题是 DevOps 实践所面临的最大障碍,有 38% 的回复选择了这一项。同样,在 Puppet 的一次问卷中也显示出,高效能的 DevOps 团队 “在处理安全问题上,比起低效能的实践者所花费的精力减少了 50%”。很明显,这些高效能团队已经摸索出一套方法,能够有效地满足安全目标,并且在软件流程的早期就构建出扎实的安全基础。

DevOps 实践者需要理解整个流程,对控制能力进行评估,并且发现风险所在。最终而言,安全始终是 DevOps 实践当中的一部分,正如 DevSecOps 实践一样。举例来说,如果你的生产环境遇到任何安全问题,那么都应当通过安全团队使用的工具,在你的 DevOps 流水线中解决这些问题。DevOps 与 安全实践必须严格遵守,不能有任何妥协。

6. 没有为文化的改变做好准备

当你拥有 DevOps 实践的工具之后,很可能会遇到一个更基本的挑战:如何让你的团队利用这些工具实现更快的开发、自动化测试、持续交付以及监控。你的开发与运维文化是否已经为这些变化做好了准备?

打个比方,敏捷方法论通常会要求你每周一次,甚至每日一次发布新代码,这会导致对敏捷实施的各种尴尬、缺陷,乃至错误。而在 DevOps 策略中,你也会面临到同样的概念性问题。这就像是把一辆已经耗光汽油的车拖到一条新的马路上一样困难。

为了避免发生这样的问题,应当计划一个切换的过程。为开发与运维团队预留足够的时间,让他们能够消化这些新的实践。请确保让他们能够动手体验这些新的流程与工具。总之,在拥抱 DevOps 之前,请确信你已经让 Dev 与 运维的文化做好充分准备。

总结

一旦你克服了这些挑战,开始全面实施 DevOps 实践,你的组织就能够充分享受到更高的敏捷性、更好的客户满意度、更高的团队士气,提升你的生产力。以上这一切会让你的业务发展更加顺利。

英文原文由 Opensource.com 的 Daniel Oh 提供

查看英文原文 6 DevOps mistakes to avoid

感谢张婵对本文的策划和审校。

DevOps

评论

发布