AWS OpsWorks vs AWS Beanstalk vs AWS CloudFormation?
我想知道使用AWS OpsWorks vs AWS Beanstalk和AWS CloudFormation有哪些优缺点?
我感兴趣的是一个可以自动扩展的系统,可以处理任何大量的Web请求(从每分钟1000个请求到1000万个转换),包括一个可自动扩展的数据库层。
理想情况下,我想分享一些硬件资源有效。 在过去,我主要使用EC2实例+ RDS + Cloudfront + S3
堆栈系统将托pipe我们从Heroku迁移的Rails应用程序中的一些高stream量ruby,还有一些python / django应用程序和一些PHP应用程序。
提前致谢。
我想知道使用AWS OpsWorks vs AWS Beanstalk和AWS CLoudFormation有哪些优缺点?
答案是:这取决于。
AWS OpsWorks和AWS Beanstalk(我已被告知)只是根据您的想法pipe理您的基础架构的不同方式。 CloudFormation只是一种对基础架构进行模板化的方法。
就我个人而言,我比较熟悉Elastic Beanstalk,但是对于每个人来说都是他们自己的。 我更喜欢它,因为它可以通过Git进行部署。 Elastic Beanstalk使用CloudFormation来公开发布其环境。
对于我的项目,我使用两个串联。 我使用CloudFormation构build自定义configuration的VPC环境,S3存储桶和DynamoDB表,这些表用于我的应用程序。 然后,我在自定义VPC内部启动一个Elastic Beanstalk环境,该环境知道如何与S3 / DynamoDB资源通信。
我感兴趣的是一个可以自动扩展的系统,可以处理任何大量的Web请求(从每分钟1000个到1000万个),包括一个可以自动扩展的数据库层。
在此基础上,OpsWorks和Elastic Beanstalk使用EC2 + CloudWatch + Auto Scaling,可以处理您正在讨论的负载。 RDS为可伸缩的基于SQL的数据库提供支持。
理想情况下,我想分享一些硬件资源有效。 在过去,我主要使用EC2实例+ RDS + Cloudfront + S3
根据“ 某些硬件资源”的含义,您可以随时在OpsWorks或Elastic Beanstalk环境中启动独立的EC2实例。 目前,Elastic Beanstalk支持每个环境一个Web应用程序。 我不记得OpsWorks支持什么。
堆栈系统将托pipe我们从Heroku迁移的Rails应用程序中的一些高stream量ruby,还有一些python / django应用程序和一些PHP应用程序。
所有这些都得到了AWS的全面支持。 OpsWorks和Elastic Beanstalk 针对一系列开发环境(Ruby,Python和PHP都在列表中)进行了优化,而EC2提供了原始服务器,您可以在其中安装任何您想要的东西。
OpsWorks是一个像Chef这样的编排工具 – 事实上,它来源于Chef – Puppet,Ansible或者Saltstalk。 您可以使用Opsworks通过指定您希望每个资源的状态(服务器实例,应用程序和存储)来指定希望networking所处的状态,并指定您希望的每个资源的状态要通过为每个状态的属性指定所需的值来进入资源。 例如,您可能希望apache服务始终运行,top始终以apache作为用户,apache作为Linux组启动。
CloudFormation是一个json模板(**),用于指定您想要部署的资源的状态,即您想在us-east-1中部署AWS EC2 micro t2实例作为VPC 192.168.1.0/24的一部分。 对于EC2实例,可以通过EC2资源的用户数据部分中的自定义bash脚本指定应在该资源上运行的内容。 CloudFormation只是一个模板。 仅当您通过适用于CloudFormation的AWSpipe理控制台运行该模板或者运行aws cli命令以获取Cloudformation(即aws cloudformation)时,才能将该模板视为正在运行的资源。
ElasticBeanstalk是一个PAAS–你可以上传专门的Ruby / Rails,node.js或Python / Django或Python / Flask应用程序。 如果你正在运行Scala,Haskell或其他任何东西,请为其创build一个Docker镜像,并将该Docker镜像上传到Elastic Beanstalk(*)。
您可以通过运行CloudFormation的aws cli或者创buildOpsworks的配方来将应用上传到Elastic Beanstalk,从而将应用上传到Elastic Beanstalk。 您还可以通过Opsworks运行Cloudformation的aws cli。
(*)事实上,AWS的Ruby应用程序示例文档非常差,我失去了耐心,将示例应用程序embedded到Docker镜像中,并将Docker镜像上载到Elastic Beanstalk。
(**)截至2016年9月,Cloudformation还支持YAML模板。
在Opsworks中,您可以通过将底层实例可能执行的特定作业相结合来共享堆栈中的“angular色”,以便使用更less的资源。
图层兼容性列表(只要安全组设置正确):
HA Proxy : custom, db-master, and memcached. MySQL : custom, lb, memcached, monitoring-master, nodejs-app, php-app, rails-app, and web. Java : custom, db-master, and memcached. Node.js : custom, db-master, memcached, and monitoring-master PHP : custom, db-master, memcached, monitoring-master, and rails-app. Rails : custom, db-master, memcached, monitoring-master, php-app. Static : custom, db-master, memcached. Custom : custom, db-master, lb, memcached, monitoring-master, nodejs-app, php-app, rails-app, and web Ganglia : custom, db-master, memcached, php-app, rails-app. Memcached : custom, db-master, lb, monitoring-master, nodejs-app, php-app, rails-app, and web.
参考: http : //docs.aws.amazon.com/opsworks/latest/userguide/layers.html
AWS Beanstalk:它是在AWS云中部署和pipe理应用程序,而不必担心使用Elastic Beanstalk运行Web应用程序的基础架构。 无需担心EC2或其他安装。
AWS OpsWorks AWS OpsWorks不过是一个应用程序pipe理服务,它使新的DevOps用户可以轻松地build模和pipe理整个应用程序
CloudFormation: AWS CloudFormation是一项服务,可帮助您build模和设置Amazon Web Services资源,从而使您可以花更less的时间pipe理这些资源,更多的时间专注于在AWS中运行的应用程序。使用模板, 模板描述资源你想和他们的设置。
弹性豆茎
借助Elastic Beanstalk,您可以快速部署和pipe理AWS云中的应用程序,而无需担心运行这些应用程序的基础架构。 在这方面,它与CloudFormation相似。 事实上,它实际上使用CloudFormation模板和脚本来…
- 创build负载平衡器和Auto Scaling组。
- 将代码复制到S3。
- 引导EC2实例从S3下载代码并进行部署。
OpsWorks
OpsWorks使您能够自动执行pipe理操作,以使其自动可靠地执行。 您可以受益于自动故障转移,软件包pipe理,EBS卷RAID设置以及基于规则或基于时间的自动缩放。
现在一些大的图片
AWS CloudFormation – 创build和更新您的环境。
AWS Opsworks – 像我们对厨师或Puppet所做的那样在该环境中pipe理您的系统
AWS Beanstalk – 创build,pipe理和部署。
但个人而言,我喜欢CloudFormation和OpsWorks,它们都是通过充分利用它们的function。
使用CloudFormation创build您的环境,然后您可以从云形成脚本中调用Opsworks来启动您的机器。 然后你将有Opsworks堆栈来pipe理它。 例如,通过使用Opsworks在Linux中添加一个用户,或使用厨师食谱来修补你的盒子。 你也可以写下厨师食谱的部署。 否则,你可以使用CodeDeploy专门构build部署。
与许多其他人评论AWS Beanstalk一样,AWS OpsWorks和AWS Cloud Formation为不同的问题提供了不同的解决scheme。
为了与之接近
I am interested in a system that can be auto scaled to handle any high number of simultaneous web requests (From 1000 requests per minute to 10 million rpm.), including a database layer that can be auto scalable as well.
考虑到您处于迁移过程中,我强烈build议您着手查看AWS Lambda和AWS DynamoDB解决scheme(或混合版本)。
两者都是以简单的方式devise用于自动缩放,可能是一个非常便宜的解决scheme。
AWS OpsWorks – 这是AWSpipe理服务的一部分。 它有助于使用脚本configuration应用程序。 它使用Chef作为这个应用程序pipe理和操作的devops框架。 有可用于configuration服务器,数据库,存储的模板。 模板也可以被定制来执行任何其他任务。 DevOps工程师可以控制应用程序的依赖性和基础架构。
AWS Beanstalk – 为Java,Node Js,Python,Ruby Go等语言提供了环境。 Elastic Bean stalk提供运行应用程序的资源。 开发人员不必担心基础设施,他们不能控制基础设施。
AWS CloudFormation – CloudFormation具有样本模板,可以按顺序pipe理AWS资源。