node-grunt-compass Heroku 的 AWS CodeDeploy 的 Buildpack 类比?

node-grunt-compass Heroku's Buildpack analogy for AWS CodeDeploy?

我们正在尝试将我的 nodejs 应用程序从 Heroku 迁移到 AWS CodeDeploy。

在 Heroku 部署中,我们使用 nodejs-compass-g运行t buildpack 来安装依赖项和 运行 compass。 AWS 中是否有类似的东西可以与 CodeDeploy 一起使用,或者我们应该只安装一个安装了所有东西的 AMI 吗?

与 Heroku 不同,CodeDeploy 不是 PaaS。它是一项帮助您管理部署到云基础设施的软件的服务。 CodeDeploy 与您要部署的软件类型及其依赖关系无关。这使它非常灵活,但这也意味着您必须做更多的工作来告诉 CodeDeploy 如何部署您的软件。

如果您想将框架部署到您的主机,然后部署依赖于该框架的软件,您有两种选择:

  1. 使用已安装的依赖项烘焙 AMI,然后仅部署您的服务。
  2. 安装所有依赖项作为 CodeDeploy 部署的一部分。

对于选项 1,如果您想迁移到任何依赖项的新版本,则必须执行与切换到新版本 OS 相同的工作。本质上,您必须进行蓝绿部署:

  1. 烘焙新的 AMI。
  2. 提供新的基础设施。
  3. 将您的服务部署到新的基础架构。
  4. 用新的基础架构替换您现有的基础架构。
  5. 释放您的旧基础架构。

如果您希望使用 CodeDeploy 进行就地部署,那肯定会减慢速度。如果您无论如何都想进行蓝绿部署,那么您唯一损失的就是没有使用公开的 AMI 而不得不管理自己的 AMI。

对于选项 2,您需要将所有依赖项捆绑为部署档案的一部分。您还需要为 install/reinstall 创建脚本。然后,您可以在 BeforeInstall 生命周期步骤中调用这些脚本。当你想更新或回滚依赖项时,你需要做的就是与正常代码更改相同的事情:

  1. 创建一个新的部署包。 (理想情况下,这应该是使用 CodeDeploy 时构建过程的最终结果)
  2. 使用 CodeDeploy 部署新包。

这里的缺点是您必须在每个部署上重新安装依赖项或添加代码来检查现有版本,并且存在依赖项损坏的风险,而这种依赖项不能通过重新部署相同的包来修复。