CI/CD :汽车软件交付性能的驱动因素

文摘   2024-10-29 07:00   上海  

虚拟原型和虚拟控制器,可以集成到公司现有的 CI/CD 流程中。为什么我们要集成到现有流程中呢?因为 CI/CD 确实是软件交付性能的驱动因素。

部署速度和频率对于现代企业的成功至关重要。随着技术的发展以及客户与企业之间联系的加深,企业需要对行业的变化做出更强的反应性反应,才能生存并保持竞争力。这适用于软件公司和使用软件与客户建立联系的任何公司。
图 1:持续创新框架 [来源:Fitzgerald 和 Stol,2014 年,第 5 页)。

这就是持续集成 (CI)、持续交付 (CDE) 和持续部署 (CD)——统称为 CI/CDE/CD(Bobrovskis 和 Jurenoks,2018)——发挥作用的地方。尽管 CI/CDE/CD 像敏捷或 DevOps 一样促进文化变革,但它包含实际的代码和工具,可简化软件到生产环境的部署。CI/CDE/CD 可以支持 DevOps 和敏捷开发,并在组织中将它们变为现实。

在这篇文章中,我们将概述 CI/CDE/CD 流程,并解释 CI/CDE/CD 如何为企业带来价值。让我们首先更好地了解 CI/CDE/CD 中的每个阶段的含义。

什么是持续集成?
持续集成 (CI) 是一种开发人员尽可能频繁地将其代码合并(集成)到其主要开发分支中的做法(Amazon Web Services,2022a);Ståhl 和 Bosch,2014 年)。将代码集成到 Git 等集中式存储库后,CI 服务会构建项目并运行自动化单元测试,以确保代码正常运行并符合内部质量标准。
持续集成的主要目的是让团队更快地修复错误并提高代码质量。如果没有持续集成,开发人员可能会在将更改提交到主分支之前继续处理他们的代码 - 几天甚至几周。在这几天或几周内,代码可能会积累一些错误,这些错误在孤立时可能并不明显,但在与其他工作相结合时可能会立即出现。
如果开发人员经常提交代码(每天最多多次)并且是小块代码,他们可以快速发现问题。不仅如此,如果他们的提交很小,开发人员将能够快速修复错误或更改他们的代码,使其与其他人的工作更加兼容。

什么是持续交付?
持续交付 (CDE) 直接跟随软件交付管道中的持续集成。CDE 可自动将代码更改从 CI 过渡到测试或暂存环境(Amazon Web Services,2022b)。CDE 是“一门软件开发学科,其中软件保持原则上可以随时发布给用户的状态”(Laukkanen 等人,2017 年,第 55 页)。CDE 服务在暂存环境中执行其他测试,并为生产部署准备代码。
CDE 阶段的测试可能比 CI 中的测试严格得多,并且可以包含集成测试、UI 测试、负载测试、API 可靠性测试和安全性测试。CDE 实质上是执行端到端测试,以确保更新的代码功能齐全并符合质量标准。
代码通过 CDE 的测试流程后,开发人员可以批准其部署到生产环境。部署可以随时完成,但 CDE 鼓励在代码经过测试和验证后立即进行部署。
CDE 还鼓励开发人员对其代码的测试过程进行标准化。标准化使开发人员能够快速为其产品开发自动化测试例程。因此,CDE 可以显著加快将代码部署到生产环境的速度。

什么是持续部署?
持续部署 (CD) 是 CDE 的扩展,因为它可以自动将代码部署到生产环境。CD“是指将软件部署到某些环境,但不自动交付给客户的做法”(Fitzgerald 和 Stol,2014 年 6 月,第 3 页)。除了持续交付所具有的自动化测试例程之外,持续部署还使代码自动提供给客户,而无需开发人员的手动批准。
持续部署不需要开发人员的干预,除非代码无法通过自动测试。发生这种情况时,开发人员可以调查出了什么问题并更改代码。与持续交付一样,持续部署通常缩写为 CD。这通常会导致混淆,而这两个过程之间的相似性会放大这种混淆。
要记住的关键是,CDE 和 CD 几乎是完全相同的,唯一的区别是持续部署会自动将代码部署到生产环境中,而无需开发人员的额外批准层。
持续部署的目的与持续交付相同,但它为软件交付过程增加了额外的自动化。虽然手动批准可以说会给软件交付带来微不足道的延迟,但如果不需要手动批准代码,则持续部署是一种很好的做法。如果每天多次将代码部署到生产环境中,则持续部署可能特别有益,因为从长远来看,它可以帮助开发人员节省大量时间。

CI/CDE/CD 可以为企业带来的改进
持续集成、交付和部署可以极大地改变软件交付速度。概括地说,以下是 CI/CDE/CD 工作流与不使用 CI/CDE/CD 的软件交付管道的比较。
如果实施得当,并且具有尽可能高的自动化程度,CI/CDE/CD 可以将从代码集成到部署的时间缩短到几分钟。在具有自动部署的持续部署管道中,集成代码可以立即部署到生产环境中,而无需员工干预。

通过 CI/CDE/CD没有 CI/CDE/CD
集成

集成频率代码集成频繁,每天最多集成几次。
代码不经常集成,可能每周或每月集成一次。
代码兼容性
提交是增量式的,这意味着来自不同开发人员的小代码更改更有可能相互协作而不会出现问题。
出现兼容性问题的可能性更高,因为大代码段可能具有许多依赖项或与其他代码不兼容的逻辑。
调试速度可以更频繁地检测到错误,并更快地解决。
从长远来看,错误往往会堆积起来,这可能会延迟修复并使修复工作复杂化。
测试

自动化测试是标准化的,并且很容易自动化。
测试是非标准化的、完全或部分手动的,并且不容易实现自动化。
工程师和开发人员的参与
需要最少的 QA 工程师和开发人员参与。
QA 工程师和开发人员密切参与测试。
持续时间由于自动化,整个测试阶段可以在几分钟内完成。
测试可能会持续数天甚至数周,具体取决于需要完成多少手动工作。
日志记录和错误报告
CI/CDE/CD 软件通常具有高级日志记录和错误报告工具,可提供有关故障和错误的详细信息。
可能需要手动调试和代码探索来检测测试失败的根本原因。
部署

自动化部署是自动执行的(持续部署),或者只需要在测试后获得批准(持续交付)。
部署是手动完成的。开发人员可能需要手动配置、打包和发布新代码。
部署时间假设所有测试都成功,代码可以在集成后几分钟内部署。
部署新代码可能需要数小时、数天或数周,具体取决于其优先级和开发人员的现有承诺。
频率新代码可以非常频繁地部署,每天最多部署多次。
新代码的部署频率可能非常低,甚至每 6 个月一次。
考虑到所有这些,我们可以确定 CI/CDE/CD 对企业的以下 4 个好处:
  • 软件可以非常快速地更新和适应不断变化的客户需求。借助强大的 CI/CDE/CD 工作流程,在生产中发现错误和问题后,可以在短短几个小时内修复它们。开发人员还可以在最短的时间内添加新功能或修复程序以满足最终用户的需求(Virmani,2015 年 5 月)。
  • 代码的质量和安全性显著提高。这一点有两个方面。首先,频繁的集成使开发人员能够快速捕获并修复其工作中的问题。其次,开发人员可以在其 CI/CDE/CD 工作流程中添加更全面的自动化测试程序,同时将对上市时间的影响降至最低。更严格的测试可以提高内部代码质量和安全标准,促使开发人员更加关注他们的工作(Arachchi 和 Perera,2018 年,5 月)。
  • 团队可以更专注于开发新功能。CI/CDE/CD 可以节省数小时和数周的开发时间,使团队能够更好地专注于开发新功能。集成代码后,开发人员可以立即开始开发下一个计划的功能(Laukkanen 等人,2017 年)。
  • 团队和企业被迫采用更具协作性和灵活性的工作文化。没有协作、增长的愿望和快速失败的意愿,企业就无法有效地实施 CI/CDE/CD。CI/CDE/CD 的思维方式和文化要求可能会迫使组织完全重新思考他们如何开展业务并优化其所有内部流程,而不仅仅是与软件交付相关的流程。考虑到这一点,向 CI/CDE/CD 的过渡带来的不仅仅是加速软件交付(Humble 和 Farley,2010 年)。

CI/CD 在现实世界中的优势
CI/CDE/CD 在纸面上的好处是显而易见的,但 CI/CDE/CD 能在现实世界中带来什么实际结果呢?GitLab 或 Semaphore 等 CI/CDE/CD 服务提供商分享了其客户采用 CI/CDE/CD 的大量成功案例和案例研究。虽然采用 CI/CDE/CD 的实际好处因企业和行业而异,但这些案例研究仍然可以很好地说明预期结果。

以下是 GitLab 和 Semaphore 分享的一些成功案例。
  • 空客。使用 GitLab CI,航空航天公司 Airbus 将功能发布的部署时间从 24 小时缩短到 10 分钟。该公司的项目在五年内从 50 个增长到 850 个,而合并请求平均每年达到 10,000 个。空中客车公司按时发布了 98% 的项目,而其余 2% 的项目仅延迟了几个小时就发布了。CI 还大大提高了对公司项目的可见性,消除了部署中的猜测。
  • 高盛。投资和金融服务公司 Goldman Sachs 选择 GitLab 来简化和加强其工作流程。Goldman Sachs 设法将其其中一个重要项目的发布周期从每 1-2 周一次缩短到每隔几分钟一次。许多团队的功能部署时间降至 24 小时以下。一些团队开始每天创建超过 1,000 个 CI 功能分支构建。
  • INDEED。通过从 CircleCI 和 Jenkins 切换到 Semaphore 2.0,在线雇佣公司 Indeed 将构建时间从 30 分钟缩短到 10 分钟。Indeed 还将其失败率从 25% 降低到 2.5%,同时将每日部署次数从 3 次增加到 10 次。
  • 西门子。技术公司 Siemens 通过使用 GitLab SCM(源代码管理)、CI/CDE/CD 和 DevOps 转变了其协作和组织工作流程。西门子的主要目标和挑战是建立统一的 DevOps 文化,这种文化将在其拥有 20,000 多名开发人员的多个子公司中发挥作用。为了实现其总体目标,Siemens 将其 IT 基础设施迁移到 AWS,以简化其团队之间的协作。借助 CI/CDE/CD,该公司开始每月生产超过 640 万个版本,并每月部署到生产环境中超过 4 次。
  • Zoopla。英国房地产公司 Zoopla 采用了 GitLab Self-Managed Premium for CI/CDE/CD,包括版本控制,并改善了开发人员协作。因此,Zoopla 设法将其变更失败率从 40% 降低到 0%。同样,交货时间从 5 天缩短到 2 小时,而功能部署的频率从每周一次变为每天一次。

后续步骤
与数字化转型计划一样,CI/CDE/CD 需要谨慎的方法。企业可能应该先将 CI/CDE/CD 部署到几个本地化团队。根据初始部署的结果,CI/CDE/CD 可以扩展到组织中的其他部门。
使用 CI/CDE/CD 要记住的一个关键点是,它不仅与工具有关,还与思维方式和文化有关。如果没有成长型思维模式和协作文化,企业可能无法最大限度地发挥 CI/CDE/CD 的优势。考虑到这一点,企业可以使用 DevOps 和敏捷开发来构建变革的文化基础。在那之后,CI/CDE/CD 将允许他们在现实世界中实现新的文化。
为了更好地了解 CI/CDE/CD 如何使软件交付受益以及如何实施它,企业可以尝试软件交付模拟。仿真可以帮助企业重新创建其当前的软件交付流程,并构建目标 CI/CDE/CD 管道,以便于进行左右比较。他们可以进一步调整目标系统,以观察微小的配置更改如何影响软件交付时间表。

软硬件协同设计 HW-SW Co-Design
欢迎后台留言,AI 客服全天在线。脱离物理硬件,开发测试和调试软件。基于虚拟原型的软硬件协同设计,提前一年实现产品上市创收,降低一半开发时间。
 最新文章