Automatización de despliegue de aplicaciones con Elastic Beanstalk - Desde la configuración del entorno hasta el despliegue rolling
Automatiza desde la configuración del entorno hasta el despliegue rolling. Presentamos los criterios de selección de políticas de despliegue y técnicas de personalización con .ebextensions.
Posicionamiento y casos de aplicación de Elastic Beanstalk
Elastic Beanstalk es un servicio que aprovisiona automáticamente instancias EC2, balanceadores de carga, grupos de Auto Scaling, grupos de seguridad y alarmas de CloudWatch con solo subir el código de la aplicación. Soporta 7 plataformas: Java, .NET, Node.js, Python, Ruby, Go y Docker. Su mayor ventaja es poder desplegar aplicaciones web rápidamente sin necesidad de conocimientos de orquestación de contenedores como ECS o EKS. Sin embargo, para arquitecturas de microservicios basadas en contenedores o arquitecturas serverless, se debe elegir ECS/EKS o Lambda. Elastic Beanstalk es más efectivo cuando se desea desplegar y gestionar aplicaciones web monolíticas con baja carga operativa.
Selección de políticas de despliegue
Elastic Beanstalk ofrece 4 políticas de despliegue. All at once es el método más rápido que actualiza todas las instancias simultáneamente, pero genera tiempo de inactividad durante el despliegue. Es para entornos de desarrollo. Rolling actualiza secuencialmente en lotes del tamaño especificado, manteniendo siempre algunas instancias procesando solicitudes. Es la opción estándar para entornos de producción. Rolling with additional batch lanza instancias adicionales antes de la actualización y luego realiza la actualización rolling, manteniendo la capacidad completa durante el despliegue. Immutable lanza instancias con la nueva versión en un nuevo grupo de Auto Scaling y cambia el tráfico después de pasar las verificaciones de salud. El rollback es rápido y es el método de despliegue más seguro. Para producción donde se desea combinar cero tiempo de inactividad con rapidez de rollback, se recomienda Immutable.
Personalización con .ebextensions
Al incluir un directorio .ebextensions en el paquete fuente de la aplicación, se puede gestionar la personalización del entorno de forma declarativa. En archivos de configuración en formato YAML, se definen la instalación de paquetes del SO con la clave packages, la colocación de archivos de configuración con la clave files y la ejecución de scripts personalizados con la clave commands. Por ejemplo, para colocar una configuración personalizada de Nginx, se crea un archivo bajo /etc/nginx/conf.d/ con la clave files. Las variables de entorno se definen en el namespace aws:elasticbeanstalk:application:environment con la clave option_settings. Como .ebextensions se versiona junto con el código fuente, se puede rastrear el historial de cambios de la configuración del entorno y reproducir fácilmente nuevos entornos. Para ampliar conocimientos en DevOps, también se pueden aprovechar los libros especializados en Amazon.
Precios de Elastic Beanstalk
Elastic Beanstalk en sí no genera cargos adicionales. El costo es solo por los recursos de AWS aprovisionados (EC2, ALB, EBS, RDS). Un entorno de instancia única (sin ALB) puede comenzar desde aproximadamente 8 dólares al mes con t3.micro, siendo adecuado para aplicaciones web pequeñas. En entornos con balanceador de carga, se agrega el costo fijo del ALB (aproximadamente 16 dólares al mes). Comparado con ECS o EKS, Elastic Beanstalk se caracteriza por un mayor nivel de abstracción de infraestructura y un gran efecto de reducción de costos operativos (costos de personal).
Resumen - Directrices para usar Elastic Beanstalk
Elastic Beanstalk abstrae la complejidad de la gestión de infraestructura mientras ofrece la flexibilidad de controlar en detalle la configuración de EC2 y ALB cuando sea necesario. Las políticas de despliegue se seleccionan según los requisitos de disponibilidad de la carga de trabajo, recomendando Immutable o Rolling with additional batch para entornos de producción. Con .ebextensions se codifica la configuración del entorno para asegurar la reproducibilidad. Como Elastic Beanstalk no genera cargos adicionales, un enfoque efectivo es probarlo primero en un entorno de desarrollo y aplicarlo al entorno de producción una vez familiarizado con la operación.