¿AWS OpsWorks frente a AWS Beanstalk frente a AWS CloudFormation?


86

Me gustaría saber cuáles son las ventajas y desventajas de usar AWS OpsWorks frente a AWS Beanstalk y AWS CloudFormation.

Estoy interesado en un sistema que se pueda escalar automáticamente para manejar cualquier número elevado de solicitudes web simultáneas (desde 1000 solicitudes por minuto hasta 10 millones de rpm), incluida una capa de base de datos que también se pueda escalar automáticamente.

En lugar de tener una instancia separada para cada aplicación, idealmente me gustaría compartir algunos recursos de hardware de manera eficiente. En el pasado he usado principalmente una instancia EC2 + RDS + Cloudfront + S3

El sistema de pila albergará algunas aplicaciones ruby ​​on rails de alto tráfico que estamos migrando desde Heroku, también algunas aplicaciones python / django y algunas aplicaciones PHP.

Gracias por adelantado.


2
Esta pregunta está un poco fuera de tema para Stackoverflow, pero probablemente tampoco encajaría bien en ServerFault ... He propuesto un nuevo sitio para preguntas como esta, ¡síguela si está de acuerdo! area51.stackexchange.com/proposals/82757/…
Dan Ciborowski - MSFT

Respuestas:


69

Me gustaría saber cuáles son las ventajas y desventajas de usar AWS OpsWorks frente a AWS Beanstalk y AWS CLoudFormation.

La respuesta es, depende.

AWS OpsWorks y AWS Beanstalk son (me han dicho) simplemente formas diferentes de administrar su infraestructura, según cómo lo piense. CloudFormation es simplemente una forma de crear plantillas para su infraestructura.

Personalmente, estoy más familiarizado con Elastic Beanstalk, pero con cada uno lo suyo. Lo prefiero porque puede realizar implementaciones a través de Git. Es información pública que Elastic Beanstalk usa CloudFormation bajo el capó para lanzar sus entornos.

Para mis proyectos, uso ambos en conjunto. Utilizo CloudFormation para construir un entorno de VPC con configuración personalizada, buckets S3 y tablas de DynamoDB que utilizo para mi aplicación. Luego lanzo un entorno de Elastic Beanstalk dentro de la VPC personalizada que sabe cómo hablar con los recursos de S3 / DynamoDB.

Estoy interesado en un sistema que se pueda escalar automáticamente para manejar cualquier número elevado de solicitudes web simultáneas (desde 1000 solicitudes por minuto hasta 10 millones de rpm), incluida una capa de base de datos que también se pueda escalar automáticamente.

Bajo el capó, OpsWorks y Elastic Beanstalk usan EC2 + CloudWatch + Auto Scaling, que es capaz de manejar las cargas de las que estás hablando. RDS proporciona soporte para bases de datos escalables basadas en SQL.

En lugar de tener una instancia separada para cada aplicación, idealmente me gustaría compartir algunos recursos de hardware de manera eficiente. En el pasado he usado principalmente una instancia EC2 + RDS + Cloudfront + S3

Dependiendo de lo que quiera decir con " algunos recursos de hardware", siempre puede lanzar instancias EC2 independientes junto con los entornos de OpsWorks o Elastic Beanstalk. En la actualidad, Elastic Beanstalk admite una aplicación web por entorno. No recuerdo qué admite OpsWorks.

El sistema de pila albergará algunas aplicaciones ruby ​​on rails de alto tráfico que estamos migrando desde Heroku, también algunas aplicaciones python / django y algunas aplicaciones PHP.

Todo esto es totalmente compatible con AWS. OpsWorks y Elastic Beanstalk se han optimizado para una variedad de entornos de desarrollo (Ruby, Python y PHP están todos en la lista), mientras que EC2 proporciona servidores en bruto donde puede instalar cualquier cosa que desee.


3
OpsWorks también maneja las implementaciones de git, aunque de manera diferente. Cuando las implementaciones de ElasticBeanstalk git se envían desde un repositorio mediante una CLI, OpsWorks usa acceso de solo lectura a un repositorio mediante SSH (o HTTPS si es un repositorio público).
Jack Frost

@Ryan Como se mencionó, Beanstalk usa plantillas de tipo de formación de nubes en segundo plano para crear la infraestructura requerida.
Mohd Belal

22

OpsWorks es una herramienta de orquestación como Chef; de hecho, se deriva de Chef - Puppet, Ansible o Saltstalk. Usted usa Opsworks para especificar el estado en el que desea que esté su red especificando el estado en el que desea que esté cada recurso (instancias de servidor, aplicaciones, almacenamiento). Y especifica el estado en el que desea que esté cada recurso por especificando el valor que desea para cada atributo de ese estado. Por ejemplo, es posible que desee que el servicio Apache esté siempre en funcionamiento y se inicie en el arranque con Apache como usuario y Apache como grupo de Linux.

CloudFormation es una plantilla json (**) que especifica el estado de los recursos que desea implementar, es decir, desea implementar una instancia AWS EC2 micro t2 en us-east-1 como parte de la VPC 192.168.1.0/24 . En el caso de una instancia EC2, puede especificar qué debe ejecutarse en ese recurso a través de su script bash personalizado en la sección de datos de usuario del recurso EC2. CloudFormation es solo una plantilla. La plantilla se completa como un recurso en ejecución solo si la ejecuta a través de la Consola de administración de AWS para CloudFormation o si ejecuta el comando aws cli para Cloudformation, es decir, aws cloudformation ...

ElasticBeanstalk es un PAAS: puede cargar las aplicaciones específicamente Ruby / Rails, node.js o Python / django o Python / Flask. Si está ejecutando algo más como Scala, Haskell o cualquier otra cosa, cree una imagen de Docker y cargue esa imagen de Docker en Elastic Beanstalk (*).

Puede cargar su aplicación en Elastic Beanstalk ejecutando aws cli para CloudFormation o creando una receta para que Opsworks cargue su aplicación en Elastic Beanstalk. También puede ejecutar aws cli para Cloudformation a través de Opsworks.

(*) De hecho, la documentación de AWS sobre su ejemplo de aplicación Ruby era tan pobre que perdí la paciencia e incorporé la aplicación de ejemplo en una imagen de Docker y cargué la imagen de Docker en Elastic Beanstalk.

(**) A partir de septiembre de 2016, Cloudformation también admite plantillas YAML.


8

En Opsworks, puede compartir "roles" de capas en una pila para usar menos recursos al combinar los trabajos específicos que puede realizar una instancia subyacente.

Lista de compatibilidad de capas (siempre que los grupos de seguridad estén configurados correctamente):

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. 

referencia: http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html


8

AWS Beanstalk: Implemente y administre aplicaciones en la nube de AWS sin preocuparse por la infraestructura que ejecuta sus aplicaciones web con Elastic Beanstalk. No hay necesidad de preocuparse por EC2 o instalaciones.

AWS OpsWorks AWS OpsWorks no es más que un servicio de administración de aplicaciones que facilita a los nuevos usuarios de DevOps modelar y administrar toda su aplicación.


1
Creo que esta respuesta es inexacta. El hecho es al revés. Si bien Elastic Beanstalk es solo una PaaS, con OpsWorks, es responsabilidad suya crear una pila con los componentes adecuados. La definición de 'Para nuevas DevOps' se aplicaría a los usuarios de EB, no a OpsWorks '.
scaryguy

3

AWS CloudFormation: cree y actualice sus entornos.

AWS Opsworks: administre sus sistemas dentro de esos entornos como lo hacemos con Chef o Puppet

AWS Beanstalk: cree, administre e implemente.

Pero personalmente, me gustan tanto CloudFormation como OpsWorks, ya que utilizan todo su poder para lo que están destinados.

Use CloudFormation para crear su entorno, luego puede llamar a Opsworks desde los scripts de formación de nubes para iniciar su máquina. Entonces tendrás la pila de Opsworks para administrarlo. Por ejemplo, agregue un usuario en la caja de Linux usando Opsworks o parchee sus cajas usando recetas de chef. También puede escribir recetas de chef para su implementación. De lo contrario, puede usar CodeDeploy compilado específicamente para la implementación.


3

AWS OpsWorks : esto es parte del servicio de administración de AWS. Ayuda a configurar la aplicación mediante secuencias de comandos. Utiliza Chef como marco de DevOps para la gestión y operación de esta aplicación. Hay plantillas que se pueden utilizar para la configuración del servidor, la base de datos y el almacenamiento. Las plantillas también se pueden personalizar para realizar cualquier otra tarea. Los ingenieros de DevOps tienen control sobre las dependencias y la infraestructura de las aplicaciones.

AWS Beanstalk : proporciona el entorno para lenguajes como Java, Node Js, Python, Ruby Go. El tallo de Elastic Bean proporciona el recurso para ejecutar la aplicación. Los desarrolladores no deben preocuparse por la infraestructura y no tienen control sobre la infraestructura.

AWS CloudFormation : CloudFormation tiene plantillas de muestra para administrar los recursos de AWS en orden.


0

Como muchos otros han comentado, AWS Beanstalk, AWS OpsWorks y AWS Cloud Formation ofrecen diferentes soluciones para diferentes problemas.

Para cumplir con

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.

Y teniendo en cuenta que se encuentra en proceso de migración, le recomiendo encarecidamente que comience a echar un vistazo a la solución AWS Lambda y AWS DynamoDB (o una híbrida).

Ambos están diseñados para escalado automático de una manera sencilla y pueden ser una solución muy económica.


-1

Simplemente use terraform y ECS o EKS.

opsworks, elástico beanstalk y la tecnología antigua de formación de nubes ahora. -)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.