fury - docker meetup

66
Fury Mercadolibre’s platform on top of AWS + Docker

Upload: gabriel-eisbruch

Post on 16-Apr-2017

1.057 views

Category:

Technology


9 download

TRANSCRIPT

Page 1: Fury - Docker Meetup

FuryMercadolibre’s platform on top of AWS + Docker

Page 2: Fury - Docker Meetup

Gabriel [email protected]/[email protected]@geisbruchArchitecture Team

Page 3: Fury - Docker Meetup

Un poco de Historia

Page 4: Fury - Docker Meetup

Inicios

Viejo Mundo

Page 5: Fury - Docker Meetup

Viejo Mundo

▸ Código Monolítico▸ Base de datos únicas▸ Deploys semanales▸ Entorno dificil de configurar▸ Dificultades para innovar▸ Respuesta a errores lenta

Page 6: Fury - Docker Meetup

Nuevo Mundo

Viejo Mundo Nuevo Mundo(Melicloud)

Page 7: Fury - Docker Meetup

Nuevo Mundo

▸ Posibilidad de innovación total▸ Plataforma migrada a micro-servicios▸ Deploys diarios▸ Infinidad de entornos▸ Infinidad de configuraciones▸ Caos (controlado?)▸ Soporte de caídas parciales de servicios

Page 8: Fury - Docker Meetup
Page 9: Fury - Docker Meetup
Page 10: Fury - Docker Meetup

Nuevo Mundo

▸ Más de 17500 virtuales

▸ Más de 1200 pooles con tráfico

▸ Más de 1400 maquinas deployadas por dia

Page 11: Fury - Docker Meetup

Por que Cambiarlo?

Page 12: Fury - Docker Meetup

Nuevo Mundo

▸ El equipo crece▸ Dificultad en el uso del sistema▸ Entornos caóticos▸ Diferencias grandes entre develop, build y producción▸ Requiere mucho conocimiento de meli hacer cualquier cosa▸ A veces lleva mas tiempo poner algo en prod que hacerlo !!!

(bueno casi)▸ Requiere mucho tiempo y recursos hacer nuevos servicios

para todo el cloud

Page 13: Fury - Docker Meetup

Fury

Viejo Mundo Nuevo Mundo(Melicloud) Fury

Page 14: Fury - Docker Meetup

Fury

▸ Cambio de plataforma, no de idea (seguimos con microservices)

▸ Plataforma unificada▹ Infraestructura▹ Build▹ Deploy▹ Metrics▹ Services

▸ Entornos simples y repetibles (gracias docker)▸ Simplicidad para desarrollar y administrar producción▸ Menos requerimientos operativos

Page 15: Fury - Docker Meetup

Fury en ACCIÓN

Fury

Page 16: Fury - Docker Meetup

Llegó la hora Creemos una Aplicacion

Page 17: Fury - Docker Meetup

Place your screenshot hereque paso creando la Aplicacion ?

▸ Se creó un repo

▸ Se configuró jenkins

▸ Se creó la infraestructura de red

Page 18: Fury - Docker Meetup

Genial... Quiero codear algo !!

Page 19: Fury - Docker Meetup

Fury command

fury get docker-meetup

Page 20: Fury - Docker Meetup

Fury command

fury init nodejs

Page 21: Fury - Docker Meetup

Ok... Y Docker ?

Page 22: Fury - Docker Meetup

Dockerfile

Imagen de desarrollo y build responsable de correr la aplicacion (y sus mocks), testearla y empaquetarla para producción

Los entornos de desarrollo y produccion serán Dockerfile partiendo de imagenes pre-armadas que resuelvan la problemática báisca

Dockerfile.runtime

Imagen de producción que será deployada en cada máquina que atienda el servicio

Page 23: Fury - Docker Meetup

Fury command

fury run

Page 24: Fury - Docker Meetup

Fury command

fury rundocker build -t fury-dev .

docker run -v $(pwd):/app -p 8080:8080 fury-dev

Page 25: Fury - Docker Meetup

PerfectoVamos a Produ

Page 26: Fury - Docker Meetup

Fury command

fury create-version 0.0.1

Page 27: Fury - Docker Meetup

Jenkins build PROCESS Resumen

Development Image

Page 28: Fury - Docker Meetup

Jenkins build PROCESS Resumen

Development Image Production Image Build

ROOT.war

Node folder

Page 29: Fury - Docker Meetup

Jenkins build PROCESS Resumen

Development Image Production Image Build

ROOT.war

Node folder

Page 30: Fury - Docker Meetup

Jenkins build PROCESS Resumen

Development Image Production Image Build

ROOT.war

Node folder

Page 31: Fury - Docker Meetup

Jenkins build PROCESS Dockerfile

docker build .

Page 32: Fury - Docker Meetup

docker build .

docker run -v $(pwd):/app /commands/test.sh

Jenkins build PROCESS Dockerfile

Page 33: Fury - Docker Meetup

docker build .

docker run -v $(pwd):/app /commands/test.sh

docker run -v $(pwd):/app -v /package:/package/commands/package.sh

Jenkins build PROCESS Dockerfile

Page 34: Fury - Docker Meetup

Jenkins build PROCESS Dockerfile.runtime

ONBUILD ADD ./ /package

Page 35: Fury - Docker Meetup

Jenkins build PROCESS Dockerfile.runtime

ONBUILD ADD ./ /package

docker build -t mercadolibre/<app>:<version> .

Page 36: Fury - Docker Meetup

Jenkins build PROCESS Dockerfile.runtime

ONBUILD ADD ./ /package

docker build -t mercadolibre/<app>:<version> .

docker push mercadolibre/<app>:<version>

Page 37: Fury - Docker Meetup

Jenkins build PROCESS Dockerfile.runtime

ONBUILD ADD ./ /package

docker build -t mercadolibre/<app>:<version> .

docker push mercadolibre/<app>:<version>

Page 38: Fury - Docker Meetup

Ya tenemos la version!Subámosla

Page 39: Fury - Docker Meetup

que esta pasando Creando el scope ?

▸ Se crea un balancer (ELB)

▸ Se crea un ASG para los equipos

▸ Se crean los equipos pedidos

▸ Se inicializan servicios de logs, metrics, etc

▸ Se descarga la version en equipo

▸ Se le envía tráfico

Place your screenshot here

Page 40: Fury - Docker Meetup

Tengo muchas cosas nuevas en mi AppDeploy...

Page 41: Fury - Docker Meetup

que esta pasando En el deploy ?

▸ Se crea un ASG para los equipos nuevos

▸ Se crean tantos equipos como habia antes

▸ Se inicializan servicios de logs, metrics, etc

▸ Se descarga la version en equipo

▸ Se cambia el tráfico de forma progresiva

Place your screenshot here

Page 42: Fury - Docker Meetup
Page 43: Fury - Docker Meetup
Page 44: Fury - Docker Meetup
Page 45: Fury - Docker Meetup
Page 46: Fury - Docker Meetup
Page 47: Fury - Docker Meetup
Page 48: Fury - Docker Meetup
Page 49: Fury - Docker Meetup
Page 50: Fury - Docker Meetup
Page 51: Fury - Docker Meetup

Que pasa dentro de mi App?Logs

Page 52: Fury - Docker Meetup
Page 53: Fury - Docker Meetup
Page 54: Fury - Docker Meetup

Necesito mas dataMetrics

Page 55: Fury - Docker Meetup
Page 56: Fury - Docker Meetup
Page 57: Fury - Docker Meetup

Houston I have a problem!Troubleshooting

Page 58: Fury - Docker Meetup
Page 59: Fury - Docker Meetup

Como quedó la Arquitecturade todo esto ?

Page 60: Fury - Docker Meetup

Fury

Cor

eVPC-1

Subnet A app 1

Subnet B app 1

Subnet B app 1

Subnet B app 1

Subnet A app 2

Subnet B app 2

Subnet B app 2

Subnet B app 2

VPC-N

Subnet A app X

Subnet B app X

Subnet B app X

Subnet B app X

Region A

Region B

Region C

Region D

ServicesLogs DC-IN DC-OUT Others

External Traffic BalancingC

loud

Form

atio

nE

C2

Api

ELB

Oth

ers

Page 61: Fury - Docker Meetup

VPC-1

Subnet A app 1

Page 62: Fury - Docker Meetup

VPC-1

Subnet A app 1

Server i-0XXXXXmercadolibre/docker-meetup:0.0.1

datadogrsyslog JMX

docker-compose.yml

Page 63: Fury - Docker Meetup

Que pasa si necesito

SERVICIOS ?

Page 64: Fury - Docker Meetup

Fury Services

▸ WIP

▸ Developer Services = Production Services !

▸ Services▹ Cache▹ Internal Queue consumers▹ WorkQueue▹ DataBase▹ Others

Page 65: Fury - Docker Meetup
Page 66: Fury - Docker Meetup

[email protected]/[email protected]@geisbruchArchitecture Team