Introduccion a elastic beanstalk aws roadshow bogota mexico

Preview:

DESCRIPTION

 

Citation preview

México D.F.

Implementación y gestión de websites/webapps

Introducción a AWS Elastic Beansltak

Damián Traverso – AWS Solutions Architect traverso@amazon.com

Agenda • Qué es Elastic Beanstalk?

• Cómo funciona Elastic Beanstalk?

• Deployment de una aplicación PHP

• Zero Downtime Deployment

• Auto-Scaling

• Q&A

Qué es AWS Elastic Beanstalk?

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

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

Cómo funciona?

Cómo funciona? Componentes:

1. Application 2. Application Version 3. Environment 4. Environment Configuration 5. Configuration Template

Cómo funciona?

• Environment Tiers: • Web Server Tier • Worker Tier

• Environment Types: • Single Instance • Load Balancing, auto scaling

Web Server Environment Tier

Deployment de una aplicación PHP

Creación del paquete con el código fuente

$ mkdir roadshowdemo

$ cd roadshowdemo/

$ cat << EOF >> index.php

> <?php

>

> echo "<h1>AWS Elastic Beanstalk PHP Sample Application</h1>\n";

>

> ?>

> EOF

$ zip ../roadshowdemo_v1.zip -r * .[^.]*

adding: index.php (stored 0%)

Zero Downtime Deployment

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

Zero Downtime Deployment

$ cat << EOF >> index.php

> <?php

>

> echo "<h1>AWS Elastic Beanstalk PHP Sample Application</h1>\n";

>

> echo “<h2>This is Version 2</h2>\n”;

> ?>

> EOF

$ zip ../roadshowdemo_v2.zip -r * .[^.]*

adding: index.php (stored 0%)

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

Integración con RDS

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

Q&A

Gracias!!

Damián Traverso – AWS Solutions Architect traverso@amazon.com

Recommended