Introduccion a elastic beanstalk aws roadshow bogota mexico

AmazonWebServicesLATAM 1,267 views 62 slides Sep 03, 2014
Slide 1
Slide 1 of 62
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62

About This Presentation

No description available for this slideshow.


Slide Content

México
D.F.
Implementación y gestión de websites/webapps

Introducción a
AWS Elastic Beansltak
Damián Traverso – AWS Solutions Architect
[email protected]

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
[email protected]