amazon web services - servidores - ¿Cuál es la diferencia entre Elastic Beanstalk y CloudFormation para un proyecto.NET?
elastic beanstalk precios (5)
He desarrollado una aplicación .NET MVC y he comenzado a jugar con AWS y desplegarlo a través del Visual Studio Toolkit. Implementé correctamente la aplicación usando la opción Elastic Beanstalk en el kit de herramientas.
Mientras repasaba los tutoriales para implementar aplicaciones .NET en AWS con el kit de herramientas, noté que hay tutoriales para implementar con Elastic Beanstalk y CloudFormation . ¿Cuál es la diferencia entre estos dos?
Por lo que puedo decir, parece que ambos básicamente están haciendo lo mismo, lo que facilita el despliegue de su aplicación en la nube de AWS (configuración de instancias EC2, equilibrador de carga, escalado automático, etc.). He intentado leer sobre ambos, pero parece que no puedo obtener nada más que un montón de palabras que me parecen lo mismo. Incluso encontré una FAQ en el sitio web de AWS que se supone responde a esta pregunta exacta, pero realmente no lo entiendo.
¿Debo usar uno u otro? ¿Ambos?
Cloud Formation es un servicio que le permite implementar servicios de AWS. Usted crea un archivo de plantilla que describe qué servicios desea. Cuando implementa esa plantilla, Cloud Formation crea los recursos para usted como un "paquete". Todos los recursos que definió en su plantilla se inician y finalizan juntos. Algunos ejemplos de tipos de recursos que se pueden crear con la formación en la nube son: instancias S3, EC2, AutoScaling, DynamoDb, etc. Para EC2, la formación en la nube también le brinda la posibilidad de utilizar los scripts "cfn-init"; que se puede usar junto con la plantilla para iniciar la correa de tus instancias.
Elastic Beanstalk utiliza plantillas de formación en la nube y scipts para: 1. Crear un equilibrador de carga y un grupo de escalamiento automático, 2. Copiar el código a S3, 3. Arrancar una instancia de Ec2 para descargar el código de S3 y desplegarlo.
La formación en la nube no es tan fácil de usar como EB, pero es mucho más poderosa, porque puedes crear recursos distintos de las instancias EC2, controlar cómo el script cfn-init, etc.
Elastic Beanstalk maneja automáticamente la implementación, desde el aprovisionamiento de capacidad, balanceo de carga, escalado automático hasta monitoreo de estado de aplicaciones basado en el código que carga, mientras que CloudFormation es un motor de aprovisionamiento automático diseñado para implementar entornos de nube enteros a través de un script JSON.
En realidad son bastante diferentes. Elastic Beanstalk está destinado a facilitar la vida de los desarrolladores. CloudFormation está destinado a facilitar la vida de los ingenieros de sistemas.
Elastic Beanstalk es una capa parecida a PaaS en la cima de los servicios IaaS de AWS que abstrae las instancias subyacentes de EC2, Elastic Load Balancers, grupos de escalado automático, etc. Esto hace que sea mucho más fácil para los desarrolladores, que no quieren lidiar con todos las cosas de los sistemas, para que su aplicación se despliegue rápidamente en AWS. Es muy similar a otros productos de PaaS como Heroku, EngineYard, Google App Engine, etc. Con Elastic Beanstalk, no necesitas entender cómo funciona la magia subyacente.
CloudFormation, por otro lado, no hace nada automáticamente. Es simplemente una forma de definir todos los recursos necesarios para la implementación en un gran archivo JSON. Por lo tanto, una plantilla de CloudFormation podría crear dos entornos ElasticBeanstalk (producción y puesta en escena), un par de clústeres ElasticCache, una tabla DyanmoDB y luego el DNS apropiado en Route53. A continuación, cargué esta plantilla en AWS, me alejé y, 45 minutos más tarde, todo está listo y esperando. Como se trata de un archivo JSON de texto sin formato, puedo guardarlo en mi control de fuente, que proporciona una excelente manera de versionar las implementaciones de mis aplicaciones. También asegura que tengo una configuración repetible y "conocida como buena" que puedo implementar rápidamente en una región diferente.
Hay otras diferencias que vale la pena mencionar. Elastic beanstalk está diseñado como un contenedor para una sola aplicación. Tengo un conjunto de varios sitios web y servicios, pero me resultó muy difícil implementar varios sitios web con beanstalk y, después de varios intentos, AWS me aconsejó que ayudara a utilizar la formación en la nube en esta situación, ya que tiene la flexibilidad adicional. Hay un artículo realmente útil sobre cómo arrancar la formación en la nube de AWS y cómo actualizar un sitio en ejecución here es mucho más claro que las páginas de AWS. Todavía estoy tratando de averiguar si podemos implementar desde VS directamente a la plantilla de formación en la nube almacenada en S3 y hacer que se actualice automáticamente como beanstalk ...
Para comenzar a implementar rápidamente una aplicación web .NET estándar, Elastic Beanstalk es el servicio adecuado para usted.
AWS CloudFormation : "Aprovisionamiento controlado por plantillas"
AWS CloudFormation brinda a los desarrolladores y administradores de sistemas una manera fácil de crear y administrar una colección de recursos relacionados de AWS, aprovisionándolos y actualizándolos de manera ordenada y predecible.
CloudFormation (CFn) es una abstracción ligera y de bajo nivel sobre las API de AWS existentes. Al utilizar un documento estático de template JSON / YAML, declara un conjunto de Resources (como una instancia EC2 o un depósito S3 ) que corresponden a operaciones CRUD en las API AWS.
Cuando crea una pila CloudFormation, CloudFormation llama a las API correspondientes para crear los recursos asociados, y cuando elimina una pila, CloudFormation llama a las API correspondientes para eliminarlos. La mayoría (pero no todas) de las API de AWS son compatibles.
AWS Elastic Beanstalk : "Aplicaciones web fáciles"
AWS Elastic Beanstalk es un servicio fácil de usar para implementar y escalar aplicaciones y servicios web desarrollados con Java , .NET , PHP , Node.js , Python , Ruby , Go y Docker en servidores familiares como Apache, Nginx, Passenger. e IIS.
Simplemente puede cargar su código y Elastic Beanstalk maneja automáticamente la implementación, desde el aprovisionamiento de capacidad, el balanceo de carga, el escalado automático hasta la monitorización del estado de las aplicaciones.
Elastic Beanstalk (EB) es una ''plataforma como servicio'' (PaaS) administrada de mayor nivel para alojar aplicaciones web, de alcance similar a Heroku . En lugar de tratar directamente con los recursos de AWS de bajo nivel, EB proporciona una plataforma totalmente administrada en la que crea un entorno de aplicaciones utilizando una interfaz web , selecciona la platform que utiliza su aplicación, crea y carga un paquete fuente , y EB se encarga del resto.
Al usar EB, obtiene todo tipo de características integradas para monitorear su entorno de aplicaciones y desplegar nuevas versiones de su aplicación .
Bajo el paraguas, EB usa CloudFormation para crear y gestionar los diversos recursos de AWS de la aplicación. Puede personalizar y ampliar el entorno de EB predeterminado agregando recursos de CloudFormation a un archivo de configuración de EB implementado con su aplicación.
Conclusión
Si su aplicación es una aplicación estándar de nivel web que utiliza una de las plataformas compatibles de Elastic Beanstalk, y desea un hosting fácil de administrar y altamente escalable para su aplicación, use Elastic Beanstalk .
Si tu:
- Desea administrar todos los recursos de AWS de su aplicación directamente;
- Desea administrar o personalizar en gran medida su proceso de implementación o aprovisionamiento de instancias;
- Necesidad de utilizar una plataforma de aplicación no admitida por Elastic Beanstalk; o
- Simplemente no quiero / necesito ninguna de las características Elastic Beanstalk de mayor nivel
luego use CloudFormation directamente y evite la capa de configuración agregada de Elastic Beanstalk.