2012-02-01 22 views
101

¿Cuáles son las ventajas que obtenemos al utilizar Elastic Beanstalk sobre la creación de instancias EC2 y la configuración del servidor tomcat y la implementación de etc. para una aplicación web java típica? ¿El balanceo de carga, monitoreo y autoescalamiento son las únicas ventajas?Despliegue manual frente a Amazon Elastic Beanstalk

Supongamos que para mi aplicación web que utiliza la base de datos instalé la base de datos en la propia instancia de EC2. Cuando tenga lugar la Llamada automática, la base de datos se creará en la instancia recién creada o accederá a la base de datos que creé en la instancia maestra ... Si solo se crea una réplica cuando se produce la autoescala, ¿cómo ocurrirá la sincronización de datos entre las instancias?

Respuesta

128

Todo lo que ha mencionado, como el equilibrio de carga, el control y el escalado automático, son sin duda ventajas.

Sin embargo, tienes que pensarlo de esta manera: en un verdadero Platform as a Service (PAAS), el objetivo es separar la aplicación de la plataforma. Como desarrollador, solo te preocupas por tu aplicación. La plataforma se "alquila" a usted. Las "instancias" de plataforma se actualizan, administran, escalan, equilibran, etc. automáticamente para usted. Simplemente sube tu archivo WAR y simplemente funciona (al menos teóricamente).

EC2 por sí solo no es PAAS. Es más como IAAS (Infrastructure as a Service). Aún debe ocuparse de las instancias del servidor, instalar software en ellas, mantenerlas actualizadas, etc.

Elastic Beanstalk es un sistema PAAS. También lo son App Engine y Azure, entre muchos otros.

En un sistema PAAS verdadero, el DBMS es un componente separado del servidor o servidores de aplicaciones web. La razón es obvia: el DBMS no se puede instalar posiblemente en las instancias que se utilizan para el servidor de aplicaciones porque, como las instancias se crean y destruyen en función de su tráfico, ¡el DBMS se perderá! Tener el DBMS y el servidor de aplicaciones en la misma máquina/instancia generalmente no es una buena idea.

En un sistema PAAS, el DBMS es un servicio separado. Para Amazon, sería Amazon RDS. Al igual que con Elastic Beanstalk, donde no tiene que preocuparse por el servidor de aplicaciones y acaba de cargar su archivo WAR con RDS, no tiene que preocuparse por el DBMS y simplemente implementa su (s) base (s) de datos.

Elastic Beanstalk y RDS funcionan muy bien juntos, especialmente cuando se despliegan en la misma zona de disponibilidad, donde la latencia sería muy baja.

Finalmente, usar Elastic Beanstalk no cuesta nada más que los recursos desplegados (instancias EC2 y balanceador de carga). Sin embargo, RDS no es barato y definitivamente sería más costoso que usar una sola instancia de EC2 para el servidor de aplicaciones y el DBMS.

+3

Bien puesto. Solo una adición: puede especificar un AMI personalizado para servir como base para cada creación de instancia. Así que puede personalizar una imagen Apache con todas las configuraciones y aplicaciones necesarias y usarla como base AMI (hay un campo ID de AMI personalizado en la configuración del entorno Beanstalk) Aún así, los datos generados en tiempo de ejecución serían borrados en cada terminación de instancia (¡y el equilibrador de carga lo hará!). –

+1

Una cosa que me tomó por sorpresa fue el hecho de que Elastic Beanstalk crea un equilibrador de carga para cada entorno que se implementa. Los equilibradores de carga no son realmente caros de ejecutar pero cuestan aproximadamente el mismo costo que una microinstancia. –

+0

@KenLiu, Load Balancer es más poderoso que una microinstancia. – BigSack

34

Elastic Beanstalk hace mucho más que equilibrar la carga, controlar y ajustar el autoescalado.

1) Administra las versiones de las aplicaciones almacenando y administrando diferentes versiones de la aplicación, lo que le permite cambiar fácilmente de una a otra versión de sus aplicaciones.

2) Tiene el concepto de "entornos" para cada aplicación, lo que le permite implementar diferentes versiones de su aplicación en cada entorno. Esto es útil, por ejemplo, si desea configurar entornos separados de QA y DEV, y desea desplegar fácilmente una compilación primero en DEV y luego implementar la misma versión de la aplicación en QA cuando su equipo de control de calidad está listo para la siguiente compilación.

3) Externa las propiedades importantes de configuración del contenedor (configuraciones de memoria Tomcat, por ejemplo) a la consola Elastic Beanstalk y la API. Debido a esto, puede guardar fácilmente las configuraciones y copiarlas entre entornos.

4) Ver los archivos de registro de la aplicación a través de la consola y automáticamente rodar y archivar archivos de registro a S3. (Es cierto que esta característica es actualmente un poco débil.)

+0

De todos modos, en mi concepto, creo que quiere entender el rendimiento, que no me gusta en Beanstalk, mal funcionamiento en casos de implementación y desastres, y todo puede ser igual o mejor con LAMBDA. Difícil pero es una bala de plata para usted de alta disponibilidad. –

+0

Solo para agregar al último punto: puede enviar fácilmente todos los registros de la aplicación a CloudWatch. – sebaGra

Cuestiones relacionadas