AWS OpsWorks与AWS Beanstalk对比AWS CloudFormation?

时间:2014-01-23 13:53:09

标签: ruby-on-rails amazon-web-services elastic-beanstalk amazon-cloudformation aws-opsworks

我想知道使用AWS OpsWorks与AWS Beanstalk和AWS CloudFormation有什么优缺点?

我对可以自动扩展以处理任何大量同时Web请求(从每分钟1000个请求到1000万转)的系统感兴趣,包括可以自动扩展的数据库层。

我希望有效地共享一些硬件资源,而不是为每个应用程序提供单独的实例。在过去,我主要使用EC2实例+ RDS + Cloudfront + S3

堆栈系统将在我们从Heroku迁移的rails应用程序上托管一些高流量ruby,还有一些python / django应用程序和一些PHP应用程序。

提前致谢。

10 个答案:

答案 0 :(得分:64)

  

我想知道使用AWS OpsWorks与AWS Beanstalk和AWS CLoudFormation有什么优缺点?

答案是:这取决于。

AWS OpsWorks和AWS Beanstalk(我被告知)只是管理基础架构的不同方式,具体取决于您的想法。 CloudFormation只是一种模板化基础架构的方式。

就个人而言,我对Elastic Beanstalk更熟悉,但对每个人都比较熟悉。我更喜欢它,因为它可以通过Git进行部署。 Elastic Beanstalk使用CloudFormation来启动其环境,这是公开信息。

对于我的项目,我同时使用它们。我使用CloudFormation来构建我用于我的应用程序的自定义配置的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支持每个环境一个webapp。我不记得OpsWorks支持的内容。

  

堆栈系统将在我们从Heroku迁移的rails应用程序上托管一些高流量ruby,还有一些python / django应用程序和一些PHP应用程序。

AWS完全支持所有这些。 OpsWorks和Elastic Beanstalk已经为一系列开发环境优化(Ruby,Python和PHP都在列表中),而EC2提供了原始服务器,您可以在其中安装任何您喜欢的东西。

答案 1 :(得分:19)

OpsWorks是一个像Chef这样的编排工具 - 事实上,它来自Chef-Puppet,Ansible或Saltstalk。您可以使用Opsworks通过指定希望每个资源(服务器实例,应用程序,存储)所在的状态来指定您希望网络所处的状态。并指定希望每个资源所在的状态。为该状态的每个属性指定所需的值。例如,您可能希望Apache服务始终启动并运行,并在启动时启动,Apache作为用户,Apache作为Linux组。

CloudFormation是一个json模板(**),用于指定要部署的资源的状态,即您希望在us-east-1中部署AWS EC2 micro t2实例,作为VPC 192.168的一部分。 1.0 / 24。对于EC2实例,您可以通过EC2资源的用户数据部分中的自定义bash脚本指定应在该资源上运行的内容。 CloudFormation只是一个模板。只有当您通过适用于CloudFormation的AWS管理控制台运行模板或者运行用于Cloudformation的aws cli命令(即aws cloudformation)时,模板才会成为运行资源:

ElasticBeanstalk是一个PAAS-您可以上传特定的Ruby / Rails,node.js或Python / django或Python / Flask应用程序。如果你正在运行Scala,Haskell或其他任何东西,请为它创建一个Docker镜像,并将该Docker镜像上传到Elastic Beanstalk(*)。

您可以通过运行适用于CloudFormation的aws cli或者为Opsworks创建配方,将您的应用上传到Elastic Beanstalk,从而将应用上传到Elastic Beanstalk。您还可以通过Opsworks运行用于Cloudformation的aws cli。

(*)事实上,AWS关于其Ruby应用程序示例的文档非常糟糕,以至于我失去了耐心并将示例应用程序嵌入到Docker镜像中并将Docker镜像上传到Elastic Beanstalk。

(**)截至2016年9月,Cloudformation还支持YAML模板。

答案 2 :(得分:15)

CloudFormation: AWS CloudFormation是一项服务,可帮助您建模和设置Amazon Web Services资源,以便您可以节省管理这些资源的时间,并将更多时间专注于在AWS中运行的应用程序.it使用模板,模板描述您想要的资源及其设置。 enter image description here

Elastic Beanstalk

借助Elastic Beanstalk,您可以在AWS云中快速部署和管理应用程序,而无需担心运行这些应用程序的基础架构。在这方面,它类似于CloudFormation。事实上,它实际上使用CloudFormation模板和脚本......

  • 创建负载均衡器和Auto Scaling组。
  • 将代码复制到S3。
  • 引导EC2实例从S3下载代码并进行部署。

<强> OpsWorks

OpsWorks使您能够自动执行管理操作,以便自动可靠地执行这些操作。您可以受益于自动故障转移,包管理,EBS卷RAID设置以及基于规则或基于时间的自动扩展。

  

现在有些大图片

enter image description here enter image description here enter image description here

答案 3 :(得分:8)

在Opsworks中,您可以跨堆栈共享层的“角色”,以通过组合底层实例可能执行的特定作业来使用更少的资源。

图层兼容性列表(只要正确设置了安全组):

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

答案 4 :(得分:7)

AWS Beanstalk: 它是在AWS云中部署和管理应用程序,而不必担心使用Elastic Beanstalk运行Web应用程序的基础架构。 无需担心EC2或其他安装。

AWS OpsWorks AWS OpsWorks只是一个应用程序管理服务,它使新的DevOps用户可以轻松地建模和安装。管理整个应用程序

答案 5 :(得分:3)

AWS CloudFormation - 创建和更新您的环境。

AWS Opsworks - 管理您在该环境中的系统,就像我们使用Chef或Puppet

一样

AWS Beanstalk - 创建,管理和部署。

但我个人认为CloudFormation和OpsWorks都充分利用了它们的意图。

使用CloudFormation创建您的环境,然后您可以从云编队脚本调用Opsworks来启动您的计算机。然后,您将拥有Opsworks堆栈来管理它。例如,使用Opsworks在linux框中添加用户,或使用厨师食谱修补您的盒子。您也可以写下用于部署的厨师食谱。否则,您可以使用CodeDeploy专门构建以进行部署。

答案 6 :(得分:1)

AWS OpsWorks - 这是AWS管理服务的一部分。它有助于使用脚本配置应用程序。它使用Chef作为此应用程序管理和操作的devops框架。 有模板可用于配置服务器,数据库,存储。还可以自定义模板以执行任何其他任务。 DevOps工程师可以控制应用程序的依赖关系和基础架构。

AWS Beanstalk - 它为Java,Node Js,Python,Ruby Go等语言提供了环境。 Elastic Bean stalk提供运行应用程序的资源。开发人员不必担心基础架构,也无法控制基础架构。

AWS CloudFormation - CloudFormation提供了样本模板,可按顺序管理AWS资源。

答案 7 :(得分:0)

许多其他人评论AWS Beanstalk,AWS OpsWorks和AWS Cloud Formation为不同的问题提供了不同的解决方案。

为了实现

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.

考虑到您正处于迁移过程中,我强烈建议您开始考虑AWS Lambda&amp; amp; AWS DynamoDB解决方案(或混合方案)。

两者都是以简单的方式设计用于自动缩放,可能是一个非常便宜的解决方案。

答案 8 :(得分:0)

如果您需要部署需要更新其 EC2 实例的应用程序,您应该使用 OpsWorks 代替 CloudFormation。如果您的应用程序使用大量 AWS 资源和服务,包括 EC2,请结合使用 CloudFormation 和 OpsWorks

如果您的应用程序需要其他 AWS 资源,例如数据库或存储服务。在此场景中,使用 CloudFormation 将 Elastic Beanstalk 与其他资源一起部署。

答案 9 :(得分:-1)

只需使用Terraform和ECS或EKS。

opsworks,具有弹性的beantalk和cloudformation的旧技术。 -)