- ~18.000.000 de Requests por Minuto
- ~400 Deploys por dia
- ~700 Developers en 5 Centros de desarrollo
- ~20.000 Servidores Virtuales
- ~1500 Fisicos
● Flexible
● Autoscaling
● SDN (Software defined Network)
● Interoperabilidad con nuestro DC
● Servicios de automatización y control
● Seguridad
Docker permite empaquetar aplicaciones incluyendo filesystem, codigo, librerias y todo lo necesario para correrlas. Permitiendo correr estas imágenes en containers dentro del sistema operativo.
Desarrollo
Producción
● Entornos unificados (sin importar el SO)
● Mocks simplificados
● Una única herramienta
● Simplicidad para sumarse a colaborar en un proyecto
● Codigo + Entorno en un único lugar
● No hay necesidad de bootstraps on boot
● Fast build (vs crear un ami)
● Posibilidad de bajar la imagen de producción para debug
Crear una Aplicacion
● Permite definir infraestructura
● Mantiene el estado de toda la infraestructura y sus recursos
● Permite extender el funcionamiento mediante “custom-resources”
● Resuelve acciones de rollbacks y fallas
● Guarda información de logging de todas las transacciones
Crear una Aplicacion
● Creación de Repositorio (Custom)
● Creacion de subnets○ Una por AZ
● Creación de configuraciones de jenkins para CI & Build (Custom)
● Creación de configuraciones en ES y Kibana para logging (Custom)
● Creación de SecurityGroups para la aplicación
● Creación de ACL’s de las redes e interconexión de subnets
● Configuración de reglas de interoperabilidad para conectarse a la plataforma actual
Code
Dockerfile
Imagen de desarrollo y build responsable de correr la aplicación (y sus mocks), testearla y empaquetarla para producción
Los entornos de desarrollo y producción serán Dockerfile partiendo de imágenes pre-armadas que resuelvan la problemática básica
Dockerfile.runtime
Imagen de producción que será deployada en cada máquina que atienda el servicio
Create Versioncd app docker build -t app .docker run app /test.sh docker run app /package.sh -v prod-image:/package
Create Versioncd app docker build -t app .docker run app /test.sh docker run app /package.sh -v prod-image:/package
cd prod-imagedocker build -t prod-app .
Create Versioncd app docker build -t app .docker run app /test.sh docker run app /package.sh -v prod-image:/package
cd prod-imagedocker build -t prod-app .
docker push app
Deploy
● Crear Máquinas
● Crear Nuevo Autoscaling group
● Intercambiar tráfico entre versiones (swap)
● Destruir maquinas viajes (o hacer rollback)
Arquitectura
Fury
Cor
e
VPC-1Subnet A app 1
Subnet B app 1
SubnetC app 1
SubnetD app 1
Subnet A app 2
Subnet B app 2
SubnetC app 2
SubnetD app 2
VPC-NSubnet A app X
Subnet B app X
SubnetC app X
SubnetD app X
Az A
Az B
Az C
Az D
ServicesLogs DC-IN DC-OUT Others
External Traffic BalancingC
loud
Form
atio
nE
C2
Api
ELB
Oth
ers
Arquitectura
VPC-1
Subnet A app 1
Server i-0XXXXXmercadolibre/docker-meetup:0.0.1
datadogrsyslog JMX
docker-compose.yml
local-api