Qué es AWS Elastic Beanstalk?
•Con sólo subir el código, Elastic Beansltak se encarga de las siguientes tareas:
•Provisionamiento de recursos
•Instalación de paquetes necesarios del Sistema Operativo
•Deployment del código fuente
•Escalamiento automático (adicionar o remover recursos)
•Monitoreo
•Permite centralizar archivos de log en S3 y monitorear los mismos
•No se cargan tarifas adicionales, sólo se paga por los recursos de AWS que sean
necesarios para ejecutar sus aplicaciones
Qué es AWS Elastic Beanstalk?
•Con Elastic Beanstalk, los desarrolladores cuentan con el control absoluto sobre
los recursos de AWS que potencian la aplicación
•Se pueden realizar una gran variedad de funciones, entre otras:
•Seleccionar el tipo de instancia Amazon EC2 más apropiado que coincida conlos requisitos
de memoria de la aplicación y la CPU.
•Habilitar a instancias de Amazon EC2 para la resolución inmediata y directa de problemas
•Mejorar de manera rápida la disponibildiad de la aplicación ejecutándola en más de una
zona de disponibilidad
•Ajustar la configuración del servidor de la aplicación (por ejemplo, la configuración de JVM)
y pasar las variables de entorno
Qué es AWS Elastic Beanstalk?
•Algunos de los recursos AWS que pueden ser provisionados e integrados:
•Elastic Load Balancers
•Auto-Scaling Groups
•Instancias RDS
•Tablas de DynamoDB
•Nodos de ElastiCache
•SQS (Simple Queue Service)
Qué es AWS Elastic Beanstalk?
•Puede ser utilizado desde:
1.AWS Management Console
2.EB Command Line Interface (integración con Git)
3.AWS Command Line Interface
4.API usando las AWS SDKs
•Posiblidad de automatizar todo el ciclo de desarrollo
Integración con RDS
•Distintos escenarios posibles:
1.Crear una instancia RDS para cada environment
2.Usar instancias existentes de RDS
3.Usar otras bases de datos hosteadas en EC2
•Para evitar guardar las credenciales en el código, podemos pasar las mismas como
paramétros a los environments
•A continuación, mostraremos como usar una instancia RDS existente
Accediendo a los parámetros del environment
Auto-Scaling
Auto-Scaling
•Elastic Beanstalk escala automáticamente las aplicaciones
•Es posible escoger las condiciones en las cuales los eventos de escalado serán
ejecutados. Algunos ejemplos:
•Utilización de CPU
•Network Out / Network In
•Latencia
•Métricas propias generadas por la aplicación
•Control total sobre: cantidad de instancias a adicionar o remover, tiempo de espera
entre eventos, umbrales, etc
Auto-Scaling
•Usando la herramienta Apache Benchmark, vamos a demostrar como funciona Auto-
Scaling
•El siguiente comando generará 50.000 requests HTTP a nuestra aplicación
•La aplicación tiene reglas de Auto-Scaling configuradas para:
•Adicionar instancias cuando el uso de CPU sea mayor a 50% durante 1 minuto
•Remover instancias cuando el uso de CPU sea menor a 20% durante 1 minuto
$ ab -n 50000 -c 2 http://roadshowdemo-autoscale.elasticbeanstalk.com/index.php
AWS Command Line Interface
AWS Command Line Interface
$ aws elasticbeanstalk create-application --application-name RoadShowCLI \
--description "Sample app from AWS CLI”
•Creamos una aplicación
$ aws elasticbeanstalk create-application-version --application-name RoadShowCLI \
--version-label AWSCLIv1 \
--source-bundle S3Bucket=elasticbeanstalk-us-east-1-903745515320,S3Key=2014225usa-
roadshowdemo_asg.zip
•Creamos una primera versión de la aplicación. El paquete .zip se encuentra en S3
AWS Command Line Interface
$ aws elasticbeanstalk create-configuration-template --application-name "RoadShowCLI" --template-name
AutoScalingCPUv2 --source-configuration
ApplicationName=RoadShowDemo,TemplateName ="AutoScalingCPU v2”
•Guardamos la configuración de un ambiente existente (podemos crear una nueva)
$ aws elasticbeanstalk create-environment --application-name RoadShowCLI \
--version-label AWSCLIv1 --environment-name roadshow-cli --cname-prefix roadshow-cli --template-name
AutoScalingCPUv2
•Finalmente creamos el environment