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

时间:2015-09-02 02:22:03

标签: node.js amazon-web-services heroku gruntjs aws-code-deploy

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 使用已安装的依赖项烘焙AMI,然后仅部署您的服务。
  2. 安装所有依赖项作为CodeDeploy部署的一部分。
  3. 使用选项1,如果要迁移到任何依赖项的新版本,则必须执行切换到新操作系统所需的相同工作。基本上,您将需要进行蓝绿色部署:

    1. 烘烤新的AMI。
    2. 提供新的基础设施。
    3. 将您的服务部署到新的基础架构。
    4. 用新的基础架构替换现有的基础架构。
    5. 释放旧的基础设施。
    6. 如果您希望使用CodeDeploy进行部署,那肯定会减慢速度。如果你想要进行蓝绿色的部署,那么你唯一丢失的就是不使用商品AMI并且必须自己管理。

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

      1. 创建新的部署捆绑包。 (理想情况下,这应该是使用CodeDeploy时构建过程的最终结果)
      2. 使用CodeDeploy部署新捆绑包。
      3. 这里的缺点是你必须在每个部署上重新安装你的依赖项,或者添加代码来检查现有的版本,并且冒着依赖性损坏的风险,这些依赖性不会通过重新部署相同的bundle来解决。