¿En qué consiste Beanstalk?
Beanstalk es la forma mas rápida de tener una aplicación montada y ejecutándose en AWS. Los desarrolladores pueden de manera simple enviar el código, y el servicio manejara automáticamente los detalles como el provisionamiento, el balanceo de carga, auto scaling y el monitoreo.
La application (application)
Una application es la colección lógica de componentes de Beanstalk, los cuales incluyen ambientes, versiones y configuraciones de ambientes. En Beanstalk una aplicación es conceptualmente similar a un directorio.
La application version (versión de la aplicación)
La application version (versión de la aplicación) se refiere a una versión, con un nombre de despliegue para una aplicación web. Dicha versión apunta a un objeto de S3 que contiene el código a desplegar. Las aplicaciones pueden tener muchas versiones y cada versión de la aplicación es única. En un ambiente de ejecución, las organizaciones pueden desplegar cualquier versión de aplicación que ya hayan subido, o pueden enviar un deploy inmediatamente de una nueva versión. Las organizaciones pueden también subir múltiples versiones de las aplicaciones.
El environment (entorno)
El environment (ambiente) es la versión de una aplicación que es desplegada en los recursos de AWS. Cada environment se ejecuta únicamente en una versión de una aplicación; sin embargo la misma versión o diferentes versiones pueden ejecutar cuantos environments se requieran.
El environment configuration (la configuración del entorno)
Un environment configuration (configuración de ambiente) es una colección de parámetros y configuraciones que definen como un ambiente y sus recursos asociados se comportan. Cuando la configuración de un ambiente es actualizada, Beanstalk aplica automáticamente los cambios a los recursos existentes o borra y despliega nuevos recursos dependiendo del tipo de cambio.
Cuando un environment es disparado, el nivel del environment, la plataforma, y el tipo de environment son especificados. El nivel del ambiente que es elegido determina si Beanstalk provisiona recursos para soportar una aplicación web que maneje peticiones HTTPS o aplicaciones que manejen proceso de tareas en segundo plano. El nivel del environment en el cual la aplicación procesa las peticiones web es conocido como web server tier (nivel del servidor web). Un nivel de environment en el cual la aplicación ejecuta trabajos en segundo plano es conocida como worker tier.
Beanstalk provee soporte para las plataformas de programación Java, Node.js, PHP, Python, Ruby y Go con soporte para contenedores web Tomcat, Passenger, Puma y Docker.
¿Cuáles son las características de Beanstalk?
Beanstalk provee varias características de administración que hacen sencillo los deployments y el manejo de las aplicaciones en AWS. Las organizaciones tienen acceso a crear métricas de monitoreo en CloudWatch como uso promedio del CPU, numero de peticiones y promedio de latencia. Recibir notificaciones por correo electrónico mediante SNS cuando una aplicación cambia o los servidores son agregados o removidos. Los logs de los servidores de aplicaciones pueden ser accedidos sin necesitar de un login.
De manera adicional los desarrolladores tienen control total de los recursos de AWS empoderando su aplicación y pueden realizar una variedad de funciones simplemente ajustando las características de configuración como:
- El tipo de instancia de EC2.
- El tipo de base de datos.
- Habilitando acceso a las instancias de EC2.
- Mejorando la seguridad de la aplicación habilitando HTTPS en el ELB.
- Ajustando las configuraciones del servidor y variables de entorno.
- Ajustando las características de Auto Scaling para controlar las métricas y umbrales utilizadas para agregar o remover instancias.