首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DevOps研发模式下的8种CI / CD最佳实践

DevOps研发模式下的8种CI / CD最佳实践

作者头像
增强现实核心技术产业联盟
修改于 2020-09-10 02:09:44
修改于 2020-09-10 02:09:44
1.6K0
举报
文章被收录于专栏:AR增强现实AR增强现实

根据IDC最近的一项研究,全球DevOps软件市场在2017年达到29亿美元,预计到2022年将达到66亿美元。随着去年超过50%的组织采用DevOps,持续集成(CI)和持续交付(CD)已经成为软件开发过程中不可或缺的一部分。

本文,我们将重点讨论CI / CD最佳实践,无论企业正在处于DevOps的哪个阶段,这些实践都有助于加速DevOps采用。

从最初的瀑布模型,到后来的敏捷开发,再到今天的 DevOps, 这是现代开发人员构建出色产品的技术路线。随着 DevOps 的兴起,出现了持续集成,持续交付(CI/CD)和持续部署的新方法, 而传统的软件开发和交付方式在迅速变得过时。过去的敏捷时代里, 大多数公司的软件发布周期是每月、每季度甚至每年, 而在现在 DevOps 时代,每周、每天甚至每天多次都是常态。

我们为什么要实践DevOps?

持续集成注重将各个开发者的工作集合到一个代码仓库中,通常每天会进行几次, 主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。 持续交付的目的是最小化部署或发布过程中团队固有的摩擦, 它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。 持续部署是一种更高程度的自动化,无论何时代码有较大改动, 都会自动进行构建/部署。

持续集成和持续交付是指在以自动化为基础的构建-配置-部署-测试-发布的短周期内开发和交付软件的过程。简而言之,我们使用CI/CD来高频且可预测地交付更高质量的软件。

持续集成(CI)在软件开发中已经无处不在。因此,作为开发的基础,CI成为DevOps组织中的关键实践不足为奇。

通过持续集成,开发人员能够频繁地将其代码集成到公共代码仓库的主分支中。开发人员能够在任何时候多次向仓库提交作品,而不是独立地开发每个功能模块并在开发周期结束时一一提交。通过让开发人员更快、更频繁的做到这一点,从而降低了集成的开销。在实际情况中,开发人员在集成时经常会发现新代码和已有代码存在冲突。 如果集成较早并更加频繁,那么冲突将更容易解决且执行成本更低。

持续部署(CD)实际上是 CI 的扩展,将软件交付流程进一步自动化,以便随时轻松地部署到生成环境中。在这样的流程中, 不需要人为决定何时及如何投入生产环境。CD从CI的开发、构建、单元测试、静态代码分析(SCA)和静态分析安全测试(SAST)开始。最终,软件交付流程将自动化扩展到功能、集成、性能和安全测试,以及配置管理和部署。这些是自动化的关键要素,在DevOps环境中,它们是必不可少的。

我们甚至可以说,如果不做持续部署(CD),那么你就做不好DevOps。为什么?采用持续部署的组织可以将新功能快速传递给用户,得到用户对于新版本的快速反馈,并且可以迅速处理任何明显的缺陷。用户对无用或者误解需求的功能的快速反馈有助于团队规划投入,避免将精力集中于不容易产生回报的地方。

企业不会在一夜之间完成DevOps转变,这是一个持续改进的过程,当你掌握了一个最佳实践的时候,还会有新的实践出现,我们目标是更好的交付软件。

DevOps 8个CI/CD最佳实践

1、采取“安全第一”的方法

在一个漏洞和脆弱性持续给各种规模和能力的企业造成巨大声誉和财务损失的世界里,再怎么强调安全的必要性都不为过。

由于CI / CD系统可以访问代码库和凭据以在各种环境中进行部署,因此它通常会被作为主要目标。回想一下臭名昭著的优步入侵事件,黑客侵入了嵌入在GitHub软件库中的AWS凭证,窃取了5700万用户和60万司机的个人信息。

为了实现自动化的目的,将凭证存储在私有存储库中当然并不少见。因此,我们需要考虑隔离CI / CD系统,并将其放置在安全的内部网络中。强大的双因素身份验证、身份和访问管理系统将帮助您执行最小特权原则,并限制暴露于威胁。例如,将代理容器化并将其放置在安全网络上。此外,我们还应该确保从开始到结束都将安全性考虑到开发过程中。这通常被称为DevSecOps

2、评估企业微服务架构

为了有效地实现DevOps,微服务架构是最好的方法。然而,重新架构现有应用程序可能是一项艰巨的任务,可以考虑使用增量方法来维护任务关键型系统,并围绕其构建新架构。这将有助于逐步用新的体系结构替换旧的系统。

3、执行跟踪和版本控制工具

像Jira和Bugzilla这样的工具可以帮助您更好地了解软件的进展,并轻松地与分布式团队协作。像Git这样的版本控制系统,它可以为团队创建“单一事实来源”,允许跟踪代码库中的更改,并且在需要回滚时提供帮助。通过允许团队协作并将更改集成到共享存储库中,GitOps可以显著提高MTTR。

4、每日提交,避免分歧

减少分歧的目标是花更多的时间在开发上,花更少的时间在版本控制上。然而,要充分利用GitOps,开发人员应至少每天一次直接提交到主分支或合并其本地分支中的更改。这将迫使开发人员处理更小,更小规模的集成难题,而不是在发布前将许多分支合并到主干中时发生的大规模集成难题(以及相关的返工)。

5、只生成一次

消除重复构建源代码的做法,即使必须构建、打包或捆绑软件,也应该只执行一次该步骤并升级二进制文件。大多数成功的CI实施都将构建过程作为CI / CD循环的第一步,以将软件打包在干净的环境中。这消除了疏忽,并减少了以后随时引入或遗漏错误的机会。此外,每次都应对生成的工件进行版本控制并将其上载到Git,这样无论何时提取它,构建都不会发生变化。

6、确定首先自动化哪些流程和测试

尽管采用渐进式自动化方法听起来不错,但是从手动过程过渡到自动化过程的组织经常发现很难决定首先自动化哪些过程。例如,首先将编译代码的过程自动化是有益的。由于开发人员需要每天提交代码,所以进行自动冒烟测试是有意义的。单元测试通常首先自动化,以减少开发人员的工作量。

因此,可以自动化功能测试,然后是UI测试。功能测试通常不需要在自动化脚本中频繁更新,不像UI测试需要频繁更改。其主要思想是考虑所有可能的依赖关系,并评估它们的影响,,以合理地确定自动化的优先级。

7、经常释放

频繁的发布只有在软件处于准备发布状态并且已经在类似生产的环境中测试过它的情况下才可能。这就是为什么最佳实践是在发布之前添加一个与生产环境非常相似的部署阶段。

一些发布最佳实践包括:

  • 金丝雀的部署:发布给一个用户子集,在这个基础上进行测试,如果成功,就将其推广到更广泛的人群中(如果失败,就将其撤回到迭代中)。
  • 蓝绿色部署:从两个相同的生产环境开始,一个是现场生产,另一个空闲。当推出新版本时,更改将被推到空闲环境中。然后,他们将包含新版本的环境切换为实时环境。如果出现错误,、可以立即回滚到另一个环境(不包含新版本的环境)。如果一切顺利,环境将再次趋于平等。

  • A / B测试:A/B测试在风格上与蓝绿色部署类似,但不要与之混淆。A/B测试是一种测试应用程序内部特性的方法,比如可用性。性能更好的胜出。

8、使用按需测试环境

应该考虑在容器中运行测试,因为这种方法允许质量保证团队减少开发和生产环境之间的环境变量和变化。使用这种测试环境的主要优点是它们为CI/CD周期增加了敏捷性。QA团队不需要从CI服务器提取构建版本,并将其安装到单独的测试环境中;相反,它可以针对容器映像运行测试。启动容器(它们没有单独的安装或配置要求)和在不需要时销毁它们要容易得多。

DevOps或CI/CD最佳实践的主要目标是自动化构建、测试和发布软件的过程。这意味着我们将需要使用DevOps工具,这些工具可帮助简化自动化并更好地了解软件的进度。此外,应该有一种机制来跟踪DevOps在整个软件交付生命周期中的性能指标,并在发布或部署中出现错误时发出警报,以便快速恢复。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
彻底搞懂DevOps是什么,CI/CD是什么,跟敏捷开发有什么关系
从之前到现在,从敏捷开发到CI/CD,再到最近的 DevOps等各种名词层出不穷,一直是大概知道是什么意思没有细究,其实本质上就是各种理念各种想法的进步。今天彻底搞懂他们是什么以及各自之间的关系。
shengjk1
2025/05/16
2560
彻底搞懂DevOps是什么,CI/CD是什么,跟敏捷开发有什么关系
DevOps & CI/CD Top 30+ 面试问题
希望这些问题和建议的答案能使你快速掌握DevOps和CI/CD的相关知识,帮助你在面试之前对DevOps和CI/CD有系统性的概念和理解。
Peter Shen
2020/06/12
5.9K0
DevOps & CI/CD Top 30+ 面试问题
90%的开发都没搞懂的CI和CD!
据IDC统计,2017年,DevOps的全球软件市场已达到约39亿美元的水平,预计到2022年市场将达到80亿美元左右!
陈哥聊测试
2020/08/27
7260
深入解析Jenkins中的CI与CD:区别与实践
在当今快速发展的软件开发领域,敏捷开发和DevOps理念愈发深入人心。Jenkins作为一款强大的开源自动化服务器,在持续集成(CI)和持续交付/部署(CD)中发挥着关键作用。理解Jenkins中CI和CD的区别,对于构建高效的软件开发流程、提升软件质量和交付速度至关重要。本文将深入探讨Jenkins中的CI与CD,帮助读者更好地把握二者的区别与实践要点。
Front_Yue
2025/02/14
2671
深入解析Jenkins中的CI与CD:区别与实践
DevOps研发模式下CI/CD实践详解指南
借着公司今年新组建的中台研发部东风,我作为其中的主要负责人,在研发中心主导推行DevOps研发管理模式转变及质量管理创新建设,本篇文章摘取自今年9月底,笔者在公司内部针对全体研发人员的一次DevOps培训PPT中的部分内容,涉及公司敏感信息和部分章节内容顺序已经作过处理。
测试开发技术
2019/12/09
1.4K0
DevOps研发模式下CI/CD实践详解指南
打造企业级自动化运维平台系列(二):DevOps、CI、CD、CT 详解
一个软件从零开始到最终交付,大概包括以下几个阶段:规划、编码、构建、测试、发布、部署和维护,基于这些阶段,我们的软件交付模型大致经历了以下几个阶段。
民工哥
2024/01/18
3.2K0
打造企业级自动化运维平台系列(二):DevOps、CI、CD、CT 详解
什么是 CI/CD?
CI/CD 的出现改变了开发人员和测试人员发布软件的方式。本文是描述这一变化的系列文章第一篇,
LinuxSuRen
2019/04/18
17.6K0
第1章 开篇-为什么要做CI/CD?
本章阐述持续集成系统的发展历程、持续集成系统的原理,以及持续集成系统的实现过程,目的是让大家全面了解持续集成系统,更加深入的学习持续集成系统的原理,为后续章节的学习做好准备。我会分享一些个人的经验。
DevOps云学堂
2020/07/23
2.6K0
【云原生 | Devops篇】深入Devops
持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现 其中的错误。“持续集成”源自于极限编程(XP),是 XP 最初的 12 种实践之一。
Lansonli
2022/05/20
1.3K0
【云原生 | Devops篇】深入Devops
从CI/CD持续集成部署到DevOps研发运维一体化
今天整理下从传统的CI/CD到DevOps研发运维一体化的整个演进过程。类似于每日构建和冒烟测试,实际上在10多年前就已经在实践,比如当前用的笔记多的Ant+CruiseControl方式来实现自动化的编译构建和持续集成能力。
IT大咖说
2021/01/27
1.8K0
从CI/CD持续集成部署到DevOps研发运维一体化
CI&CD 体系介绍
DevOps 是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
测试加
2023/02/17
1.1K0
CI&CD 体系介绍
DevOps成功转型的最佳实践
企业领导者需要了解DevOps转型的最佳实践以及如何采用新技术和软件开发方法,以在市场竞争中保持领先。
静一
2022/04/02
4430
DevOps 流水线简介及最佳实践 | 理论篇
DevOps是一种将开发(Development)和运维(Operations)紧密结合起来的软件开发和交付模式。它将人、流程和技术结合起来,通过结合并自动执行软件开发和 IT 运营团队的工作,并强调开发团队和运维团队之间的协作和沟通,通过自动化工具和流程来加快产品的交付速度和质量。
DevOps时代
2023/08/22
6.4K1
DevOps 流水线简介及最佳实践 | 理论篇
这里有DevOps 工程师必须了解的 8 个 DevOps 最佳实践
开发软件是一个非常乏味的过程。在传统的公司设置中,软件开发过程由两个主要团队承担,即开发团队和IT运维团队。正如预期的那样,让两个独立的团队处理一个项目可能会导致团队之间的内部摩擦,从而减慢整个部署过程,从而导致软件发布延迟和利润减少。
用户1418987
2023/10/16
5250
这里有DevOps 工程师必须了解的 8 个 DevOps 最佳实践
10个您现在需要实施的DevOps Pipeline最佳实践
了解 DevOps Pipeline 十大最佳实践,您需要立即实施以实现最佳效率和简化的软件交付。
云云众生s
2024/03/28
3120
什么是CI/CD,你了解它给团队带来的收益和挑战吗?
CI/CD 的出现改变了开发人员和测试人员发布软件的方式。本文是描述这一变化的系列文章第一篇, 这些文章将提供各种工具和流程的讲解,以帮助开发人员更好的使用 CI/CD。
灵雀云
2019/07/30
1.7K0
什么是CI/CD,你了解它给团队带来的收益和挑战吗?
CI/CD的演进之路
CI/CD的发展历程体现了软件开发领域对效率、质量和灵活性的不断追求。尽管它带来了诸多优势,但也面临着一些挑战和限制。未来,随着技术的进一步发展和应用场景的不断拓展,CI/CD将继续演进,以更好地满足开发团队和用户的需求。
全干程序员demo
2025/05/20
1230
什么是CI/CD
大家好,我是洋子。CI/CD这个词大家或多或少都听过,甚至在进行软件测试面试时经常会进行考察
Bug挖掘机
2022/09/28
5.2K0
什么是CI/CD
云原生最佳实践
云原生是一种面向云计算架构和应用开发的新兴技术,它能够让企业更好地利用云计算技术来 构建高可用性、高性能、高弹性的应用系统。
37手游后端技术团队
2023/02/24
1.4K0
云原生最佳实践
敏捷开发,持续集成/交付(CI/CD)、DevOps
敏捷开发和DevOps都是一种理念。他们的理念相似,都是为了更好更快的发布产品,但又不完全相同。
PM吃瓜
2020/08/17
1.9K0
敏捷开发,持续集成/交付(CI/CD)、DevOps
推荐阅读
相关推荐
彻底搞懂DevOps是什么,CI/CD是什么,跟敏捷开发有什么关系
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档