前6个CI/CD最佳实践
前6个CI/CD最佳实践
最近的DevOps状态报告谷歌的DevOps研究和评估(DORA)团队发现,“精英”执行者从事故中恢复的速度比“低”执行者快2604倍,故障率低7倍。在DevOps持续集成/持续开发(CI/CD)的世界中,这些统计数据显示了那些做得好的人和那些做得不好的人之间的极端差距,这是很常见的。
考虑到这一点,难怪跟随一个DevOps CI/CD介绍, DevOps专业人士想知道的下一件事是如何成为优秀的执行者之一。幸运的是,CI/CD的很大一部分好处是遵循精英执行者所遵循的最佳实践。
在这里,我们将看看6个CI/CD最佳实践,它们可以帮助您获得自动化的好处并跻身于“精英”之列。
1.从你所在的地方开始迭代
实现DevOps CI/CD实践中最难的部分之一是知道从哪里开始。对于开发现代应用程序的团队来说,您可以做的事情太多了,以至于变得令人生畏。试图从最低限度的自动化到全面的自动化是一个过于剧烈的转变,可能会使您的团队走向失败。
相反,确定适合自动化的业务流程,并从那里开始。从小事开始,你可以快速取得成功并从中学习。当你积累了CI/CD和自动化的经验——并看到了行动中的好处——你的组织文化也将开始转向DevOps思维模式,扩大你的努力将变得更容易。帮助您轻松进入CI/CD的优秀候选人包括:
自动化您的构建过程
自动化单元测试
自动化功能测试
当然,每个团队都是不同的,所以一定要查看您的端到端开发流程,并为您的团队确定正确的领域。例如,也许您已经自动化了构建和单元测试,然后您的质量保证(QA)团队运行手动测试。将部分或全部QA测试转换为在构建之后立即运行,这可能是迈向完全自动化的CI/CD管道的下一步的最佳选择。或者,也许您已经达到了软件持续集成的点,并且可以开始向持续交付迭代。
2.保安左移
将安全性向左转移意味着在开发过程中尽可能早地识别安全问题,并将安全性集成到管道中。实际上,将安全性向左转移意味着遵循以下最佳实践,例如:
扫描依赖关系以查找漏洞(例如使用x光分析工件)
将安全扫描集成到集成开发环境中
自动化与安全相关的测试
对团队的所有成员进行安全原则教育
实施变更管理和遵从性监控过程
3.使用异步管道
大多数团队都有一个一体化的CI/CD管道,它包含了他们所有的开发、测试和应用程序交付过程。理论上,这是个好主意。在实践中,它通常会导致不必要的复杂工作流和管道,这些工作流和管道的效率和性能都不如它们本来的水平。
要避免这个问题,请遵循我们的第三个CI/CD最佳实践,使用异步管道和多个专门构建的管道。使用异步管道仅仅意味着使用多个管道,每个管道都专用于特定的工作流。
举个简单的例子,许多团队都有很长的CI/CD管道,有多个测试和批准阶段。等待批准和测试完成会产生相互依赖和延迟,这会减慢事情的进展。将管道分解成更小的独立管道(例如,1个构建和单元测试,1个QA测试,1个部署)可以消除不必要的工作流依赖并提高性能。
通过使用多个异步管道,可以消除流程中不必要的摩擦和复杂性。每一条专门建造的管道都将有效地完成自己的工作。当然,您仍然需要能够管理所有这些管道,以确保您的流程端到端工作,跟踪工作流的进展,并存储记录和工件。这就是专门建造的地方DevOps管道解决方案(例如JFrog管线)-它使您能够构建和管理“管道中的管道”-进来了。
JFrog管道是一个DevOps管道解决方案,允许你在一个地方管理和编排所有的管道。
4.选择端到端解决方案
复杂是效率的敌人。当您刚刚开始使用CI/CD策略并意识到有多少工具可供使用时,很容易忽略这一点。然而,随着您在DevOps之旅中的进步,您将很快意识到,管理一个使用几十个供应商的工具拼凑而成的环境可能会使性能陷入困境。
当然,有这么多流行的CI/CD工具的原因是它们中的许多都能很好地完成一些特定的事情。困难的部分是制定策略,使您能够获得所需的功能,而不需要管理几十个工具的拼凑。
选择端到端解决方案可以帮助您两全其美:所有的功能,而不需要所有不同的供应商。例如,在JFrog平台上,您可以构建、测试和部署软件、存储工件、管理所有管道、实现安全性和遵从性扫描等等。
然而,虽然端到端解决方案是理想的,但大多数团队已经在使用多种工具,而提升和转换到单一解决方案是不实际的。如果您发现自己处于这种情况,请寻找具有丰富的集成生态系统的解决方案。通过与现有基础设施集成,您可以迭代使用长期的端到端解决方案。
5.不要忘记可观察性
尽管有一个常见的误解:监测不是可观察性。监视是您对系统所做的事情(例如,定期轮询API),而可观察性是系统的一个特征。简而言之,可观察性描述了在给定输出(例如syslog消息、对轮询的响应等)的情况下,如何推断系统的健康状况。如果监视工作做得好,就可以提高系统的可观察性。
解决了这些问题之后,让我们讨论第5个最佳实践。为了确保可用性并帮助优化性能,您需要在设计管道时考虑到可观察性。这意味着使用能够主动监控组成基础设施的组件的运行状况的解决方案,并在出现问题时帮助您自动化响应和了解根本原因。
6.以代码形式实现配置
作为代码的配置是在存储库中使用托管配置文件的过程,其方式与存储源代码的方式相同。采用配置作为代码是CI/CD的最佳实践,因为它:
使自动化:通过将配置存储为代码,您可以消除对重复和容易出错的手动工作流程的需要,并启用自动化和GitOps.
提高了可靠性:版本控制允许您确保跨环境使用相同的配置,从而实现可重复的、可预测的和可靠的性能。
执行标准化:通过将配置作为代码,您可以轻松地执行缓存策略、命名约定等方面的标准化。
通过将配置实现为代码,您可以降低人为错误的风险,并提高自动化工作流的能力。因此,您可以构建更高效和性能更好的管道。
最后的想法:开始行动
这里介绍的每个最佳实践都可以帮助您提高管道的整体性能,这就是为什么它们是最佳实践。管道性能是交付业务价值的关键。您的管道性能越好,您在一天中能够进行的部署就越成功。
当然,您不可能一次实现每个最佳实践,这也没关系。我们将“从你所处的地方开始并迭代”作为最佳实践是有原因的。尽早开始是到达你想要的地方的最好方式。
如果你想要现代的CI / CD平台,在你选择的公共云上使用你自己的永久免费托管实例。
