IaC 的分支策略 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

IaC 的分支策略

典型的 Git 方法使用主干基础(例如main)用于生产的分支、开发分支和功能分支。许多组织会立即采用同样的基础设施即代码 (IaC) 设计。但是,Git 方法与常见的基础架构设计模式并不直接兼容。请考虑以下几点:

  • 应用程序有多个环境。

    • 环境示例包括沙盒、开发、暂存和生产。

  • 环境不是紧密耦合的。

    • 生产通常与成功的分阶段部署紧密结合。

    • 生产和暂存通常与开发环境完全脱钩。

    • 开发通常与沙盒环境完全脱钩。

  • 每个应用程序都有自己的一套环境标准。

    • 许多应用程序不使用沙盒环境。

    • 有些应用程序不需要暂存环境,而是使用蓝/绿部署策略。

想象一下这样一个场景:应用程序存储库提供三个使用基于主干的方法的环境。开发环境与分支相关联,暂存与develop分支相关联,生产环境与stagingmain支相关联。对于此应用程序,需要一项新功能来连接解决方案中的公交网关,该网关由另一个团队和存储库管理。开发人员在功能分支中编写基础架构代码,准备就绪后将其合并到该develop分支。一切看起来都很好。

但是,挑战出现了。另一位开发者为单独的功能创建了单独的用户故事,将其写在功能分支中,然后将其合并到该develop分支。第二部功能现已准备就绪,可以合并到舞台和制作中。但是,由于组织中的风险标准,最初的公交网关功能尚未准备就绪。现在,所有功能都无法升级到生产,并且应用程序代码实际上已被冻结或损坏。

在这种情况下,请考虑以下可能的解决方案:

  • 最常见的解决方案:通过在存储库中设置单独./environments的文件夹,增加目标代码结构位置的代码重复(减少 DR Y)。这允许环境的代码位于同一个存储库中,但可以分离。

  • 设置具有复杂变量管理功能的 CI/CD 流程。

  • 将环境分成不同的存储库。

  • 最不常见的解决方案:使用多个主干分支。