5. Qué es AWS Elastic Beanstalk?
• Es un servicio utilizado para la implementación y gestión de aplicaciones
• Variedad de lenguajes disponibles:
• Java
• .NET
• Python
• Ruby
• PHP
• Docker
• node.js
6. 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
7. 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
8. 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)
9. 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
27. Zero Downtime Deployment
• Actualización del código de la aplicación, sin interrumpir ni afectar el tráfico actual
• Consiste en crear un nuevo environment con la nueva versión, para luego realizar un
“swap” de URLs
• También conocido como “Blue/Green Deployment”
• Muy útil para automatizar nuevos releases con herramientas de CI
• Facilita rollbacks en caso de encontrar errores en la nueva versión, ya que la versión
anterior todavía se encuentra disponible
47. Zero Downtime Deployment
• El swap de URLs también puede ser hecho con un registro de DNS propio del
usuario
• Por ejemplo:
v1: roadshow.awsdemos.info CNAME roadshowdemo-env.elasticbeanstalk.com
v2: roadshow.awsdemos.info CNAME roadshowdemo-new-env.elasticbeanstalk.com
49. 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
54. 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
55. 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
59. AWS Command Line Interface
• Creamos una aplicación
$ aws elasticbeanstalk create-application --application-name RoadShowCLI
--description "Sample app from AWS CLI”
• Creamos una primera versión de la aplicación. El paquete .zip se encuentra en S3
$ aws elasticbeanstalk create-application-version --application-name RoadShowCLI
--version-label AWSCLIv1
--source-bundle S3Bucket=elasticbeanstalk-us-east-1-903745515320,S3Key=2014225usa-roadshowdemo_
asg.zip
60. AWS Command Line Interface
• Guardamos la configuración de un ambiente existente (podemos crear una nueva)
$ aws elasticbeanstalk create-configuration-template --application-name "RoadShowCLI" --template-name
AutoScalingCPUv2 --source-configuration
ApplicationName=RoadShowDemo,TemplateName="AutoScalingCPU v2”
• Finalmente creamos el environment
$ aws elasticbeanstalk create-environment --application-name RoadShowCLI
--version-label AWSCLIv1 --environment-name roadshow-cli --cname-prefix roadshow-cli --template-name
AutoScalingCPUv2