Amazon web services 如何使用web层和工作层构建AWS Elastic Beanstalk生产和登台环境?

Amazon web services 如何使用web层和工作层构建AWS Elastic Beanstalk生产和登台环境?,amazon-web-services,heroku,amazon-elastic-beanstalk,amazon-vpc,Amazon Web Services,Heroku,Amazon Elastic Beanstalk,Amazon Vpc,我正计划将一份申请从Heroku转移到AWS Elastic Beanstalk。在Heroku上,我有两个不同的应用程序,一个用于登台,另一个用于生产,它们都有自己的web和workers动态 我想在AWS EB上设置类似的东西。我已经了解了Web层和Worker层的区别,但这里有一些问题: 我是否为生产和暂存设置了两个不同的应用程序?还是同一个应用程序和两个不同的环境?如果是这样,我必须创建4个环境,两个用于生产web/worker,两个用于暂存web/worker?正确的结构是什么?我将为

我正计划将一份申请从Heroku转移到AWS Elastic Beanstalk。在Heroku上,我有两个不同的应用程序,一个用于登台,另一个用于生产,它们都有自己的web和workers动态

我想在AWS EB上设置类似的东西。我已经了解了Web层和Worker层的区别,但这里有一些问题:

我是否为生产和暂存设置了两个不同的应用程序?还是同一个应用程序和两个不同的环境?如果是这样,我必须创建4个环境,两个用于生产web/worker,两个用于暂存web/worker?正确的结构是什么?我将为web和worker使用相同的Rails应用程序。在这种情况下,我必须单独部署它们,还是有一个命令将这两个环境部署在一起

我将为web和worker使用相同的Rails应用程序

这告诉我,你应该有一个单一的应用程序。应用程序管理应用程序版本,这基本上只是部署历史

您将需要创建4个环境。这允许您通过cname交换或部署以前部署的版本来“升级到产品”


您将必须单独部署web/worker,但您可以非常轻松地创建一个脚本,同时部署到这两个站点。

为供将来参考,AWS Elastic Beanstalk后来为该解决方案创建了一个称为环境链接的解决方案:


有了这个特性,我们现在可以用相同的代码链接两个环境(因此我们只部署一次而不是两次)。要让工作进程运行工作进程,让web运行web服务器,您可以设置不同的环境变量并自定义EB初始化脚本,以检查这些变量并运行特定进程。

我只想补充一点,您可以使用环境变量来选择要使用的“配置文件”(prod或staging)。所以你的版本和配置应该是一样的,除了环境变量。所以,如果我想更改生产环境中的任何环境变量,我必须在两个不同的EB环境(prod web和prod worker)上进行更改,对吗?AWS应该重新考虑,这不是最明智的做法。。。谢谢sap1ens@RicardoNacif我认为真正的问题是,为什么你的工人/网络使用相同的代码,为什么你希望他们总是看起来一样?@NickHumrich仅仅因为是Rails应用程序和网络/工人共享相同的模型逻辑。“在未来,我们将能够把事情分解成不同的宝石,但我刚刚加入了一家新公司,我们必须将其转移到AWS EB,所以我对此无能为力。”里卡多纳表示理解。请注意,beanstalk是一个围绕最佳实践设计的固执己见的服务。所以,除非你遵循最佳实践,否则你会有一些烦恼。我知道你是最初的海报,但你的答案并不能真正回答问题。它解释了如何让工作人员和web相互交流,但它没有回答您关于如何部署、如何拥有不同的环境的任何问题,也没有提到如何在AWS上“构建”。这是真的,尼克,我将进行编辑,以便更清楚地说明。@RicardoNacif链接这两个环境如何使相同的代码部署到每个环境?