0

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

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

4

1 回答 1

1

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

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

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

使用选项 1,如果您想迁移到任何依赖项的新版本,则必须执行与切换到新操作系统所需的相同工作。本质上,您将不得不进行蓝绿部署:

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

如果您希望使用 CodeDeploy 进行就地部署,那肯定会减慢速度。如果您无论如何都想做蓝绿部署,那么您唯一失去的就是不使用出售的 AMI 并且必须自己管理。

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

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

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

于 2015-09-02T17:09:00.860 回答