Elastic Beanstalk Usos prácticos y conceptos
by Marc Cluet (@lynxman)
Ingeniero basado en Londres
Co-Fundador de Ukon Cherry
20 años de experiencia
Miembro fundador de MAAS (Canonical)
Involucrado en DevOps durante los últimos 7 años
Contribuidor Open Source
¿Quien soy?
London DevOps Meetup
¿Que es Elastic Beanstalk?
Es un PaaS
Fácil de usar
Autoescalable
Automatizable
¿Que es Elastic Beanstalk?
Servidor Web
Servidor de aplicaciones
Interprete de Lenguaje
Sistema Operativo
Servidor
¿Que es Elastic Beanstalk?Código
Servidor Web
Servidor de aplicaciones
Interprete de Lenguaje
Sistema Operativo
Servidor
¿Que es Elastic Beanstalk?Código
¿Que es Elastic Beanstalk?Version: 0.1
Version: 0.2
Version: 0.5
Version: 1.0
¿Que es Elastic Beanstalk?Version: 0.1
Version: 0.2
Version: 0.5
Version: 1.0
¿Que es Elastic Beanstalk?Version: 0.1
PRODUCCION Version: 0.2
STAGING Version: 0.5
DEVEL Version: 1.0
¿Que es Elastic Beanstalk?
Arquitectura de Beanstalkhttps://www.flickr.com/photos/86530412@N02/14796090251
Arquitectura de BeanstalkELB
Route 53 (opcional)
Beanstalk
RDS (opcional)
Arquitectura de BeanstalkELB
Route 53 (DNS dinamico)
Beanstalk
RDS (opcional)
1. Servicio simple 2. Servicio redundado
1. RDS 2. Docker 3. EC2
Arquitectura de Beanstalk
https://www.flickr.com/photos/krystalclear/3189597813
Arquitectura de BeanstalkELB
Route 53 (DNS dinamico)
BeanstalkVersion 0.5
RDS (opcional)
BeanstalkVersion 0.5
BeanstalkVersion 0.5
Arquitectura de BeanstalkELB
Route 53 (DNS dinamico)
BeanstalkVersion 0.5
RDS (opcional)
BeanstalkVersion 0.5
Beanstalk Version 0.5
Arquitectura de BeanstalkELB
Route 53 (DNS dinamico)
BeanstalkVersion 0.5
RDS (opcional)
BeanstalkVersion 0.5
Beanstalk Version 0.5
BeanstalkVersion 0.5
Arquitectura de BeanstalkELB
Route 53 (DNS dinamico)
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
Arquitectura de BeanstalkELB
Route 53 (DNS dinamico)
Deployment con Beanstalk
https://www.flickr.com/photos/zolakoma/4118276928
Deployment con Beanstalk
• Consola de AWS
• AWS SDK
• AWS CLI
• EB CLI
Deployment con Beanstalk
• Consola de AWS
• AWS SDK
• AWS CLI
• EB CLI
Deployment con Beanstalk
$ pip install awsebcli
$ cd miapp/
$ eb init
$ eb create
Upgrade con Beanstalk
$ git add .
$ git commit -m "v2.0"
$ eb deploy
Estrategias de DeploymentTodos de golpe
Rolling
Rolling con crecimiento
Inmutable
A/B
Todos de golpe (All at once)ELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
Todos de golpe (All at once)ELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
Todos de golpe (All at once)ELB
BeanstalkVersion 0.6
BeanstalkVersion 0.6
BeanstalkVersion 0.6
RollingELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
RollingELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
RollingELB
BeanstalkVersion 0.6
BeanstalkVersion 0.5
BeanstalkVersion 0.5
RollingELB
BeanstalkVersion 0.6
BeanstalkVersion 0.5
BeanstalkVersion 0.5
RollingELB
BeanstalkVersion 0.6
BeanstalkVersion 0.6
BeanstalkVersion 0.6
Rolling con crecimientoELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
Rolling con crecimientoELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
Rolling con crecimientoELB
BeanstalkVersion 0.6
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.6
Rolling con crecimientoELB
BeanstalkVersion 0.6
BeanstalkVersion 0.6
BeanstalkVersion 0.6
BeanstalkVersion 0.5
Rolling con crecimientoELB
BeanstalkVersion 0.6
BeanstalkVersion 0.6
BeanstalkVersion 0.6
InmutableELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
InmutableELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.6
InmutableELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.6
InmutableELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.6
InmutableELB
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.6
InmutableELB
BeanstalkVersion 0.6
BeanstalkVersion 0.6
BeanstalkVersion 0.6
A/BELB 1 (Activo)
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
ELB 2
A/B
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.6
BeanstalkVersion 0.6
ELB 1 (Activo) ELB 2
A/B
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.5
BeanstalkVersion 0.6
BeanstalkVersion 0.6
BeanstalkVersion 0.6
ELB 1 ELB 2 (Activo)
Deployment con BeanstalkEstrategia Impacto Tiempo Instancias
Todos de golpe Si · Existentes
Rolling No ·· Existentes
Rolling con crecimiento No ···
Existentes y nuevas
Inmutable No ···· Nuevas
A/B No ····· Nuevas
Un paso mas alla
https://www.flickr.com/photos/marcdalio/15977984286
Configuración de Beanstalk
• Directorio .ebxtensions
Configuración de Beanstalk
• Directorio .ebxtensions
• Configuración por entorno
• Configuración instancias
• Configuración interprete
Configuración de Beanstalk
Ventanas de mantenimiento
https://www.flickr.com/photos/elsie/1500337173
Ventanas de mantenimiento
¡Muchas gracias!
https://www.flickr.com/photos/hectorgarcia/75719454
Sígueme en Twitter
@lynxman