让DevOps实施成功的关键有哪些?

2023-06-27 10:33:00
翰德恩咨询
原创
721
关键1:让Devops适应你的文化

DevOps不是一份规定好的实践清单,而是一个旨在将软件开发和运维工作结合起来,以最大化交付产品或服务的价值的哲学。这意味着需要实现高水平的自动化,以便实现软件系统从开发环境到生产环境的平滑过渡,同时不要求运维人员编写代码或软件工程师运维系统。

DevOps基于增量更改的理念,这要求缩短需求周期,促进自省,并进行评估和调整。DevOps还需要进行IT以外的更改,例如产品管理、安全性、工程、销售和运维等方面都可以发挥作用,因此需要整个团队的共同努力。关键在于要将DevOps视为一个永无止境的旅程,采用增量方法,从引入DevOps哲学开始制定计划,然后不断进行重新评估和调整。这种文化契合度可以帮助团队在DevOps实践中获得成功。


关键2:对速度的需求

在DevOps的频繁交付模型中,团队需要进行频繁的构建、测试和部署。然而,这可能会对计算或网络资源造成巨大压力,因此无论是私有平台还是云平台,都必须投资于流水线资源。

自动化的单元测试也是至关重要的,但如果没有自动化的集成测试,就很难真正了解系统状态。集成测试应包括端到端、安全性、负载和弹性测试,虽然它们可能是时间密集型和资源密集型的,但对于衡量交付质量至关重要。如果运行回归测试需要8个小时,那么可以考虑创建虚拟测试环境来节省时间和资源。

因此,在DevOps实践中,投资于流水线资源和自动化测试是非常重要的。这可以帮助团队更快速地发现问题,并使流程更加高效和可靠。

关键3:可用性

在实现可用性方面,与性能齐头并进是非常重要的。在持续交付中,“持续”意味着需要高可用的流水线。为了实现这一点,需要选择高可用组件,使它们能够在部分失效的情况下重新启动或继续运行。

为了实现高可用性,可以采用高度可用的系统或使用无需用户干预进行扩展和修复的云端SaaS解决方案。CircleCI和Github Actions是流行的SaaS服务,提供基于云的DevOps平台,并支持本地测试。这样,您可以根据需要将云服务与本地环境混合在一起,以实现更高的可用性。

因此,在DevOps实践中,实现高可用性非常重要,并且应该选择可靠的技术和工具。通过选择高可用组件和使用云端SaaS解决方案,可以提高团队的可用性,并帮助他们更快速地交付价值。

关键4:收集和使用DevOps指标

和任何软件系统一样,DevOps流水线本身也需要不断的发展和改进才能适应不断变化的环境。

为了确保系统能够持续交付并满足用户需求,必须经常对执行自动测试和交付的系统进行测量和改进。评估的指标包括测试时间性能(单位和回归)、故障率、成本(如果是云托管)以及实际可用性(停机)等方面。

这些指标通常与业务指标相关联,例如交货时间、部署频率和平均恢复时间(从故障中恢复)。在DevOps实践中,工具链的性能是所有这些指标的基础。

因此,团队需要始终关注这些指标,并将其纳入到持续改进流程中。通过不断地衡量和调整,可以最大化DevOps流水线的价值,提高其性能和效率,使团队能够更快速、更有效地交付高质量的产品或服务。

关键5:关注有意义的测试

在开发测试中,常见的指标是代码测试覆盖率,其目的是确定对代码中潜在逻辑路径进行了多少百分比的测试。虽然它们是一个很好的工具,可以帮助发现哪些代码需要被更正,但是它们不能告诉你应该编写什么样的代码来处理某些情况。例如,它们不能告诉你异常处理不充分或者你忽略了处理特定的返回状态。

因此,倾向于使用特定的代码覆盖率是一个错误。这会导致开发人员在承受压力时以牺牲质量为代价来提高覆盖率。测试覆盖范围并不是代码质量的实际度量,而是一种检查开发人员工作的方法。

良好的测试覆盖范围应该是一个目标,而不是一个硬性限制。为了捕获那些“遗漏错误”,强大的集成测试功能可以提供帮助。同时,需要意识到所有代码都不相等,广泛重复使用的代码或可能执行破坏性行为的代码需要更高级别的测试覆盖范围和审查。

为了提高自动化测试结果的可信度,集成测试环境应尽可能地模拟生产环境。在托管应用程序的情况下,这可能非常简单,而在本地环境中,复杂性几乎是无限的。目标环境越复杂、越多样化,就需要进行更多的测试。

因此,在开发测试中,需要注意测试覆盖率的使用,将其视为一个目标而不是一个硬性限制,并使用强大的集成测试功能来捕获“遗漏错误”。同时,还需要意识到不同代码的差异性,编写测试时要关注关键代码,并尽可能模拟生产环境以提高自动化测试结果的可靠性。

联系我们
联系人: 田老师
电话: +86 135 5227 9573
Email: clientservice@hardenx.cn
地址: 北京市朝阳区福码大厦B座17层1705

加微领1G资料