我想知道使用AWS OpsWorks与AWS Beanstalk和AWS CloudFormation的优缺点是什么?
我对可以自动缩放以处理大量同时Web请求(从每分钟1000个请求到1000万rpm)的系统感兴趣,包括一个可以自动缩放的数据库层。
理想情况下,我想有效地共享一些硬件资源,而不是为每个应用程序单独分配实例。过去,我主要使用EC2实例+ RDS + Cloudfront + S3
堆栈系统将在我们从Heroku迁移的Rails应用程序,一些python / django应用程序和一些PHP应用程序上托管一些高流量的 ruby 。
提前致谢。
最佳答案
答案是:这取决于。
AWS OpsWorks和AWS Beanstalk(据悉)只是管理基础架构的不同方法,具体取决于您的想法。 CloudFormation只是模板化基础架构的一种方式。
就我个人而言,我对Elastic Beanstalk更为熟悉,但每个人都有。我更喜欢它,因为它可以通过Git进行部署。 Elastic Beanstalk在后台使用CloudFormation来启动其环境是公共(public)信息。
对于我的项目,我将两者同时使用。我使用CloudFormation来构建自定义配置的VPC环境,用于我的应用程序的S3存储桶和DynamoDB表。然后,我在自定义VPC内启动了一个Elastic Beanstalk环境,该环境知道如何与S3 / DynamoDB资源对话。
在后台,OpsWorks和Elastic Beanstalk使用EC2 + CloudWatch + Auto Scaling,它能够处理您正在谈论的负载。 RDS支持基于可伸缩SQL的数据库。
根据“某些硬件资源”的含义,您始终可以在OpsWorks或Elastic Beanstalk环境中启动独立的EC2实例。当前,Elastic Beanstalk每个环境支持一个webapp。我不记得OpsWorks支持什么。
AWS完全支持所有这些功能。 OpsWorks和Elastic Beanstalk已针对一系列开发环境进行了优化(Ruby,Python和PHP都在 list 中),而EC2提供了原始服务器,您可以在其中安装所需的任何内容。
关于ruby-on-rails - AWS OpsWorks与AWS Beanstalk与AWS CloudFormation?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21310125/