了解云托管 CI

云计算对软件开发产生了巨大影响。 设计为利用可扩展云托管基础架构的云原生应用程序和服务越来越普遍。

云托管 CI 将云托管基础架构的优势扩展到软件构建、测试和部署流程。

如果您刚开始使用 CI/CD 或已有本地部署环境,本页的内容将帮助您了解云托管 CI/CD 会为您带来哪些优势。

云 CI 简介

持续集成、交付和部署可加快向用户发布软件的速度,并可提高可靠性。 每次对代码库进行更改时,CI/CD 都会通过一系列自动化步骤来验证软件是否按预期运行。 此系统可缩短从开发到发布的时间,同时可最大限度地减少生产中的错误数量,还提供一系列其他优势

虽然从手动过程转为自动化 CI/CD 可节省时间并减少工作量,但会对基础架构提出更高的要求。 CI/CD 并不是每隔几周或几个月向测试和暂存环境部署产品的新版本,而是意味着您每天要对最新代码进行数次或更频繁的测试。

使用同一代码库和参与更改的人数越多,代码执行自动构建、测试和部署流程的频率就越高。 如果您在自己的服务器上托管 CI/CD 流程,可用服务器的数量很快会成为限制因素。 在高需求时段,比如团队忙于重要修复或完成功能发布的最后工作时,您可能会发现内部 CI/CD 基础架构会成为瓶颈。

在这类情况下,在云中托管 CI/CD 流程可提供帮助。 云 CI 可涉及将管道设置为在云托管基础架构上运行,或使用完全托管的基于云的 CI/CD 服务。

两种选项均可利用云计算的可扩展性。 您可以根据需要扩缩构建场,而不用试图在高需求时段具有足够大的容量与闲置服务器的成本之间获得平衡。

云托管 CI 的优势

在云中托管 CI/CD 可按需扩展您的资源,并可提高流程的稳健性、降低维护成本并辅助完成云原生部署。

通过基础架构即代码 (IaC) 简化您的工作流程

采用云托管基础架构时,通常需要使用脚本配置环境。 通过将基础架构配置加入到代码中,您可以确保每个构建和测试环境都是相同的。 利用这一流程,还可以在需要时将更多基础架构转为在线状态。

就像处于开发阶段的软件一样,可使基础架构本身通过 CI/CD 管道,以确保其按预期运行。 利用此步骤,可轻松回滚更改。

充分利用容器化

如果您在开发云原生应用程序,那么您很有可能正在使用容器。 使用容器时,环境依赖项和配置详细信息会与软件一同打包到一个工件中,可将该工件部署到任何具有容器运行系统的机器上。

我们已开发 Kubernetes 等容器编排工具,以便更轻松地使用大量容器。 这些工具会自动执行部署、管理和扩展等任务。

在 CI/CD 工作流程中使用容器后,可以更加直接地将最新构建部署到不同的管道暂存。 构建工件属于容器映像,可在发布到生产之前一致地部署到每个测试环境。

通过云 CI/CD,容器可高效利用计算资源,并允许您利用自动化工具。 您可以在需求较高时增大容量,并在需求较低时减少容器和释放底层基础架构,以此来节约成本。

摆脱服务器维护的烦恼

将 CI/CD 流程转到云意味着在虚拟机上托管您的构建场。 如果您需要增大容量,通过设置即可实现,不必再处理物理硬件的采购、安装和管理事宜。

此举可减少团队的工作量,让他们能够专注于优化管道流程和确保管道安全。 由于成本是处理能力和时间的决定因素,因此应该尽可能并行执行任务,从而比在较长时间内使用较少机器更快地将结果提供给开发者。

保持发布路径开放并准备就绪

CI/CD 流程是任何软件开发团队的重要资产。 它是用于向用户发布软件更新的机制。 在云中托管该流程可降低因意外中断导致发布路径不可用的概率。 虽然这种弹性等级在平日看起来是一种奢侈,但当发现严重错误并必须部署紧急修复时,它会迅速成为一种要求。

由于云资源具有可扩展性,因此云托管 CI/CD 流程也可更轻松地采用蓝绿部署策略。 通过蓝绿方法,如果生产中出现问题,您可以快速将流量转移到之前的版本。 这一过程意味着您可以在修复过程中保持服务。

CI 云托管的考量因素

虽然云 CI/CD 在基础架构成本、可扩展性和可靠性方面具有显著优势,但也可能存在一些缺点和陷阱,需要谨慎考虑。

系统架构

如果您的产品是围绕容器构建的,那么云托管 CI/CD 意味着您可以利用容器来简化部署到测试环境的流程。 但是,如果您使用的是单体架构,将软件封装到容器中会面临很大的挑战。

当然,容器并不是云托管的必备项。 您仍可使用云提供商基础架构上的虚拟机运行构建,并提供一致的预生产环境以供测试。 也就是说,VM 的资源消耗比容器多,并且必须单独配置环境。

知识和技能

如果您还不具备基础架构即代码 (IaC) 方面的专业知识,您的团队成员将需要一定的时间提升技能,或者您需要考虑引入这方面的知识。

但是,使用云技术方面的经验是一项值得拥有的技能。 为您的团队提供培养这些技能和使用最新技术的机会有利于人员留任和招聘。

成本

在云中,时间就是金钱,您不希望让付费的计算资源闲置。 为提高云托管的成本效益,您需要进行高效利用。 这意味着要利用工具监视使用情况,并在超时后释放空闲实例,或者自行实现这一逻辑。 后一种选择可能需要您的组织尚不具备的技能,因此这些选择值得进一步研究和权衡。

安全性

在云中托管数据和服务时,安全问题始终备受关注。 对于一些公司来说,单是将关键软件置于第三方套件上的想法就无法通过。 不过,很多组织现在使用公共云来托管他们的实时服务和部署管道,从源控制仓库到 CI 服务器和测试环境。

识别潜在的攻击途径、在 CI/CD 流程中建立相应的保护措施以及实施访问控制,这些都是缓解恶意行为者所造成风险的关键。

混合方法

虽然基础架构即代码 (IaC)、容器和容器编排均以云技术为基础,但也可以使用私有云或本地和云托管基础架构的混合将它们集成到 CI/CD 设置中。

例如,您可以为部分流程(比如运行性能测试)选择使用云托管基础架构,而将其余流程留在本地。

这种混合方法的优点如下:

  • 如果您的组织计划在未来过渡到云托管基础架构,采用云原生工具可让您提前积累专业知识,轻松完成过渡。
  • 利用 IaC,在测试运行之间刷新环境的速度会显著提升,因为您只需运行一个脚本。
  • 编写环境创建还提供了一致性,因此您可以确保生产设置和预生产环境(无论是用于安全、性能或 UI 测试,还是用于支持和销售团队的沙盒)之间的均等。
  • 通过将基础架构配置文件保存在源控制中,团队可以对引入的具体更改及更改时间进行审计跟踪,这可以简化环境问题的调试过程。

TeamCity 如何提供帮助

利用 TeamCity,您可以选择希望在云中运行的具体 CI/CD 流程。

利用 TeamCity On-Premises,您可以灵活地在现场或云中托管您的 CI 服务器和构建代理。 无论您要在云中托管所有构建、测试和部署任务,还是要在需求增加时自动扩展构建场,TeamCity 与领先的云提供商的原生集成都会提供您可能需要的所有功能。

TeamCity Cloud 提供管理型 CI 服务器,以便您能专注于简化构建、测试和部署流程,而无需维护任何基础架构。 如果选择同时使用 JetBrains 托管的构建代理和您自己的云托管或现场构建机器,您便可随意创建符合您需求的构建场。

TeamCity Pipelines 旨在通过灵活、云原生的方法提高 CI/CD 效率。 只需根据您工作流程的需求选择最合适的可视拖放编辑器或 YAML,便可轻松创建、管理和优化您的管道。 TeamCity Pipelines 既支持云托管代理,也支持自托管代理,允许您根据需求扩缩,从而可最大限度地确保您构建、测试和部署流程可以无缝衔接和自动处理。