是什么让你的CI/CD流水线变慢?

简介: 是什么让你的CI/CD流水线变慢?

目录

缓慢的软件交付:人为决定会减慢CI/CD流程

缺乏监控

孤立的可见性和洞察力


会使CI/CD流水线变慢的原因可以分为三大类:软件交付速度慢,缺乏治理以及孤立的可见性和洞察力。


在实施CI/CD流程后,许多组织面临着三个重大挑战,这使他们无法始终如一,安全,快速地交付软件。

  1. 软件交付速度慢:即使使用自动流水线,对生产服务和应用程序的更改仍需要很长时间才能从开发环境过渡到生产环境。
  2. 缺乏治理:难以监控。
  3. 孤立的可见性和洞察力:缺乏对软件交付过程的可见性,并且很少在团队之间共享最佳实践。

为了解决这些问题,你需要添加一层智能,以在整个团队和工具的CI/CD流程中提供帮助。这些工具能够执行自动验证,风险评估,诊断,决策和治理。


缓慢的软件交付:人为决定会减慢CI/CD流程

“我们实施了现代的CI和CD工具,但是我们的过程仍然很慢且成本很高。”

一家大型企业(《财富》100强)的DevOps负责人,领导着一个工程师团队,负责提供世界上最受欢迎的网站之一,每月有2亿以上的访问量,但他们仍在快速交付软件上面临挑战。

我们来考虑一个简单的软件交付流水线(如上图所示)。即使部署了自动部署,该过程也会在特定决策点停止。这些会在流程等待决策的流水线中造成瓶颈:是继续进行部署还是重新开始该部署。

在每个决策点,工作人员通过分析收集的数据以评估风险并将其与以前的类似更改进行比较。此外,他们验证是否遵守了所有策略,并建议是否将其提升到产品开发的下一个阶段。

每个阶段的决策过程在概念上相似,但功能不同。例如,在“测试阶段”之后,数据将来自自动测试和手动测试,并且可能包括基本系统指标,决策者可能是质量检查领导者。在“部署阶段”之后,数据来自Jira,性能测试工具,APM工具甚至其他工具,通常,DevOps或运营负责人会评估数据。

如果在每个决策点上,都要权衡进行变更的风险与变更的收益,对于部署少量更改时,此延迟很小,并且该过程运行正常。当你进行许多更改时,等待对于发布过程来说是致命的。

谨慎而明智的决策至关重要,因为生产系统中的错误会损害公司的品牌和形象。但是,缓慢的软件交付也会影响公司的效益。组织应该根据具体情况具体分析,在持续交付中不是越多的审查越好。


缺乏监控

必须遵守治理规则。如果没有智能系统来自动化管理和执行过程,则几乎不可能遵守当前的软件交付策略。

大型组织可以制定成千上万的策略。某些合规性规则因地理位置,应用程序或团队而异。一些准则和法规经常更改,从而使合规变得困难。

合规的类型包括:

  • 建议采用最佳实践(Best practices),以减少错误或提高成本效益。示例包括针对特定云中特定应用程序的正确基础架构模板的准则,或要部署的系统软件版本的配置规范。
  • 操作限制(Operational constraints),例如,在停电期间无法部署。
  • 安全性约束(Security constraints),例如,在部署到灰度环境或生产环境之前需要进行安全扫描,或者对可以使用的开源库的限制,或者有关谁可以将系统部署到生产环境的策略。
  • 外部法规(External regulations),例如,SOX要求的职责分离,其中的更改必须由实施更改的人以外的其他人批准。

除了遵守必需的策略外,组织还必须证明遵守了这些策略。除了使治理规则本身自动化之外,这还强制要求进行审核。


孤立的可见性和洞察力

除了加快将每个变更交付给每个应用程序的速度外,运行良好的自动化的持续交付解决方案还具有整体性。通过对比使用的所有CD工具,可以发现CD过程中的趋势(好的和坏的),并在整个组织中共享最佳实践。

如果没有建立可提供最高级别可见性的系统,则组织将在单个级别上进行优化,并且会错过大幅改善的机会。由于大多数组织都将使用多个CD系统,因此挑战变得更加困难,并且跨所有工具收集数据更加困难。

任何解决方案中,通常都以仪表板显示高级视图,该视图使团队能够随着时间的推移识别给定流水线中的特定问题,发现团队和工具之间的趋势,并找到可以在团队之间共享的最佳实践。


译文链接: https://dzone.com/articles/what-is-slowing-down-your-cicd-pipeline



目录
相关文章
|
2月前
|
JavaScript 前端开发 持续交付
Prettier 高级应用:集成 CI/CD 流水线与插件开发
【10月更文挑战第18天】Prettier 是一款流行的代码格式化工具,它能够自动将代码格式化成一致的风格,从而提高代码的可读性和维护性。对于希望进一步发挥 Prettier 潜力的高级用户而言,将 Prettier 集成到持续集成(CI)和持续部署(CD)流程中,确保每次提交的代码都符合团队标准,是非常重要的。此外,通过开发自定义插件来支持更多语言或扩展 Prettier 的功能也是值得探索的方向。本文将详细介绍这两方面的内容。
54 2
|
2月前
|
jenkins 测试技术 持续交付
Docker最佳实践:构建高效的CI/CD流水线
【10月更文挑战第17天】在现代软件开发实践中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)已成为提高开发效率和软件质量的重要手段。Docker作为一种容器技术,为构建一致且隔离的开发环境提供了强有力的支撑。本文将探讨如何利用Docker来优化CI/CD流程,包括构建环境的标准化、镜像管理以及与CI/CD工具(如Jenkins、GitLab CI)的集成。
71 5
|
2月前
|
运维 jenkins 持续交付
自动化运维之路:构建高效CI/CD流水线
在软件开发的快节奏中,持续集成和持续部署(CI/CD)流水线是提升效率、保障质量的关键。本文将引导你理解CI/CD流水线的重要性,并手把手教你如何搭建一个高效的自动化运维系统。通过实际代码示例,我们将一步步实现从代码提交到自动测试、部署的全流程自动化,确保软件交付过程既快速又可靠。
|
3月前
|
Kubernetes 持续交付 Go
创建一个基于Go程序的持续集成/持续部署(CI/CD)流水线
创建一个基于Go程序的持续集成/持续部署(CI/CD)流水线
|
4月前
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
86 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
4月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之怎么设置流水线中的全局参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
运维 Java Devops
阿里云云效操作报错合集之在流水线增加单元测试报错,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4月前
|
缓存 运维 前端开发
阿里云云效操作报错合集之如何解决在使用流水线构建net8应用时遇到无法构建的报错
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。

热门文章

最新文章