CI / CD比较:使用托管提供商与自托管

持续集成,交付和部署是旨在帮助团队快速生成更可靠软件的一系列实践。虽然CI / CD主要是一套原则和方法,但工具在实现哲学理想方面起着重要作用......

介绍

持续集成,交付和部署是旨在帮助团队快速生成更可靠软件的一系列实践。 虽然CI / CD主要是一套原则和方法,但工具在使哲学的理想成为一种实际选择方面起着重要作用。

CI / CD系统通过自动构建或打包每个提交到共享存储库的方式,帮助团队更加频繁地集成或将新更改整合到软件中。 他们针对每个新构建运行测试套件,并在测试通过时自动将其提升到更具选择性的环境。 遍历整个管道的构建版本可以自动部署到现场生产系统或排队进行手动部署。 由于其广泛的职责,CI / CD系统通常涉及大部分内部环境和基础设施。

选择正确的CI / CD系统可能很困难 ,但通常这些选项分为两类:通过提供商访问的管理CI / CD服务,以及可以设置和管理自己的自托管服务。 在本指南中,我们将讨论这两个主要软件组如何在不同类别之间有所不同,并提及一些尝试提供良好中间立场的混合方法。 最好的工作软件将高度依赖组织的需求以及团队的能力和优先级。

管理基础设施

基础设施管理是使用托管CI / CD服务和运行自己托管服务的主要区别之一。 CI / CD系统需要运行资源,并且与任何基础架构一样,这意味着有人必须维护服务和底层主机系统的健康状况。 贵组织的时间,金钱和价值观通常决定哪种解决方案最适合您的目标。

托管CI / CD服务

托管服务由提供CI / CD功能的外部组织完全托管和监督。 外部组织负责运行和扩展其服务,维护其服务器机群的健康状况,并以安全易用的方式提供对服务的访问。 这通常是管理CI / CD服务提供的最大价值,实际上,通过封装和抽象复杂性,可以从团队中卸载大量工作。

尽管托管解决方案委托了一部分工作,并允许您的团队专注于其他问题,但有些领域将外部控制基础架构可能不是一个好主意。 如果合规性或您自己的组织标准要求严格控制流程,严格管制对代码或数据的访问权限,或者包含外部合作伙伴无法保证的特殊要求,那么管理自己的服务可能是您唯一的选择。

自我托管的CI / CD服务

如果您自行托管您的CI / CD系统,您将负责制定基础架构决策,通过为硬件提供服务并修补软件来保持底层服务器的健康,并确保服务可用,安全并充分执行。 这是一个额外的责任范围,可能会超出您的团队的专业知识范围,超出您的预算时间。

由于CI / CD系统具有广泛的安全访问权限,对于建立对项目推动力所发生的变化的信任至关重要,因此,您的团队将其视为一个关键组成部分,而不是辅助组件至关重要。 连续系统的停机时间会影响整个团队的生产力和能力。 虽然CI / CD系统不是您的主要项目,并且本意是成为帮助您的组织的工具,但管理它的责任不应掉以轻心。

安全和信任

使用托管提供商和自行托管自己的持续集成,交付和部署服务之间的另一个主要区别是安全和信任之间的相互作用。 您的CI / CD系统将有权访问您的代码库以及部署到多个环境的能力。 这意味着您需要将重点放在CI / CD系统的安全性上。 对于托管解决方案,您还需要评估您对外部提供商的信任。

托管CI / CD服务

在许多方面,管理CI / CD服务使大多数组织的安全性变得更容易。 如果您没有任何特殊的监管要求,大多数提供商都提供强大的安全性,通过加密渠道访问您的代码库,在独立环境中运行您的测试等。由于您的提供商只关注CI / CD,他们通常会关注专业知识来充分锁定服务,以防止未经授权的访问和意外暴露敏感信息等威胁。 他们的安全足迹是明确的,并在其熟练程度内。

另一方面,当使用托管解决方案时,贵组织的大部分安全将归结于您对CI / CD提供商的功能和完整性的信心。 您将责任交给外部团队,这可以减轻团队的负担,但也会放弃某种程度的责任和控制。 例如,一些缺陷包括无法实施您的提供商不支持的任何安全机制,依赖您的提供商快速修补高风险安全漏洞,以及要求相信您的提供商对他们收到的事件和安全报告持保密态度。

自我托管的CI / CD服务

自托管的CI / CD服务具有不同的安全挑战。 整个系统的安全性现在是你自己的责任。 这意味着您的团队必须为您的服务和部署配置安全,隔离的环境,快速响应CI / CD中涉及的所有技术的零日披露,实施强大的访问控制机制,以及了解系统的安全足迹。 这可能是一项非常耗时且困难的工作,可能需要全职管理或安全小组进行适当管理。 如果您还没有团队致力于您的基础设施其他部分的这些任务,那么随着项目的增长可能难以管理。

但是,管理自己的服务意味着您还拥有一定程度的灵活性并能够控制您的安全流程和工具,否则将无法实现。 您的团队可以快速响应威胁,而不是等待其他人解决问题。 您的CI / CD基础架构可以安全地部署在您自己的基础设施中,具有多层保护。 如果您自行托管代码存储库,则可以进一步最大限度地减少任何潜在威胁可能导致的表面积。 不需要走出自己的私人网络和安全边界与这样一个关键工具进行交互,有助于最大限度地减少安全漏洞的机会。

集成

由于CI / CD系统是不同环境和许多其他软件的协调点,因此重要的是要考虑不同解决方案与您正在使用的其他工具或系统的集成程度。 每个持续集成系统都有一套本地支持的不同项目。 一些系统使用插件框架构建,允许用户创建或使用扩展来增强平台的功能或互操作性。 这些都是选择CI / CD系统时要考虑的要点。

托管CI / CD服务

一般而言,管理式CI / CD解决方案通常提供一组专注于供应商的服务,以确保其兼容性和支持。 这些一流的系统通常是流行的,众所周知的存储库提供商和开发人员工具,都是可靠和可预测的。 由于集成范围相对有限,负责维护它们的团队通常能够开发紧密集成并快速响应任何依赖关系更改,以确保系统内的功能不会因突变而受到影响。

这种与流行服务的可靠紧密集成在符合项目要求时非常有效。 它可以节省您的组织时间和精力调试兼容性问题,密切跟踪依赖关系更新,以及在不本地通信的系统之间进行转换。 但是,如果您的依赖关系或软件要求超出了托管提供商支持的集合范围,则通常很难做到解决该问题。 您的其他工具的选择可能开始受到您的CI / CD提供商决定支持的项目的限制。

自我托管的CI / CD服务

自我托管的服务通常有更多不同的可能与之互动的项目。 由于大多数自托管解决方案都是开源的,因此用户和组织往往可以影响添加到系统中的支持。 虽然不是唯一的自我托管服务的功能,但大量的项目都拥有带有大量集成库的插件系统,可以帮助支持许多不同的项目和用例。 当社区积极参与产品和相关组件的开发时,发现整合的可能性要高得多。

社区参与的不利之处在于整合的质量可能会有很大差异。 与流行服务的整合可能会得到良好维护并保持良好的工作状态,但对于任何超出此范围的集成,可能需要进行密集测试以确定集成的正确性和可用性。 如果对相关项目进行更改,或者未定期更新以跟踪当前版本的CI / CD系统,则这些不太受欢迎的集成可能会停滞不前,并容易中断。 此外,使用社区提供的插件,除了通过社区论坛或IRC渠道提交关于问题跟踪器的报告或引起非正式的对等帮助之外,获得支持可能很困难。 对于关键集成,您的团队可能不得不承担内部支持和维护组件的责任。

费用

最后,管理CI / CD提供商和自行托管自己的服务之间最大的区别之一就是价格。 由于提供了额外的价值,托管服务几乎总是要花费更多的时间,但这取决于项目的规模和要求以及您选择的解决方案,可以采用不同的方式。 您将不得不分析您当前和未来的需求,以确定哪些成本可能对您的项目不利。

托管CI / CD服务

在查看基本数字时,托管CI / CD服务几乎总是比自我管理成本更高。 通过托管服务提供商,您正在聘请外部机构为您处理部分CI / CD工作,因此您可以期望为您卸载的工作付费。 成本虽然,可以有很大的不同。 定价模式将因服务而异,公司根据用户数量,并发作业数量,专用计算资源的类型和规模,项目数量,每月创建分钟数以及并行数量等因素进行收费。 。

通常,托管提供商的起步相当便宜,但随着企业规模扩大,可能会变得更加昂贵。 随着项目的成熟,您可能会突然发现自己不得不使用额外的服务级别,而这些级别的服务在预算内并不容易。 在考虑提供商时,重要的是现在考虑成本,并根据不同情况预测未来的成本。 另外,请记下供应商的定价稳定性,以最大限度地降低定价更改中断计划的机会。 在进行彻底分析时,理解您正在使用的服务的定价结构和按比例的预算可以帮助您预计总体运营成本比自助托管服务时可能容易得多。

自我托管的CI / CD服务

乍一看,自行托管的CI / CD系统通常是更便宜的选择,但可能会有一些应该评估的隐藏成本。 自托管选项需要运行资源,因此最初的最大成本是采购可运行连续系统的基础架构。 随着基础架构即服务云计算平台的普及,这已经成为一种具有成本效益的选择。 自托管的CI / CD往往比管理服务更加线性地扩展成本,因为随着需求的变化,可以为可预测的成本配置和配置额外的基础架构。

但是,基础设施的价格只是运行您自己的CI / CD服务的运营成本的一个组成部分。 通过选择运行自己的系统,您的团队正在承担大量的额外工作和责任。 随着您的扩展,负责管理测试和部署的内部团队可能需要发展并开发更复杂的流程。 这既有招聘和培训内部人员的直接成本,也有间接机会成本,因为这些人将重点放在管理您的CI / CD系统而不是从事产品功能或其他工作。 总的来说,自我托管的服务在基础设施方面通常要简单得多,但在总运营成本方面更困难。

有一个中间地带吗?

我们提到了托管和自托管CI / CD服务之间的一些差异,但也有一些混合方法可能更适合某些组织。 一些托管服务提供商提供本地服务版本,作为他们基于网络的软件即服务产品的替代方案。 如果贵组织的要求难以与外部提供商连接,这可以帮助缩小自托管和外部管理之间的差距。

例如,如果您的安全要求规定您的代码不会离开您的内部网络,则付费或企业CI / CD解决方案的内部部署可能是您需要考虑的选项。 这可以控制您的网络和系统使用的基础架构,而不会牺牲外部合同可能能够保证的支持和问责制。 内部部署付费CI / CD可以帮助解决使用托管服务的一些潜在挑战,但这不是一个完美的解决方案。 虽然这可能有助于解决一些合规性,安全性和信任问题,但这可能非常昂贵,并且可能需要您自己的员工承担一些管理责任。 混合解决方案具有其他两个类别的一些优点和一些缺点。

结论

管理式CI / CD提供商和自托管解决方案都可以帮助您改善开发和发布实践,从而更自信地提供更可靠的产品。 我们已经介绍了这两个主要选项之间最重要的差异,可能影响您决策的一些因素以及您在每次选择时必须克服的潜在挑战。 我们还简要介绍了试图跨越自托管和托管解决方案之间的产品。 最终,您组织的独特需求,预算和管理带宽将帮助您决定哪个选项提供了正确的折衷。


分享按钮