SlideShare una empresa de Scribd logo
1 de 78
Descargar para leer sin conexión
Mercadolibre’s Platform
on top of AWS & Docker
Gabriel Eisbruch
gabriel.eisbruch@mercadolibre.com
@geisbruch
Matias Rege
matias.rege@mercadolibre.com
@matiasrege
Nicolas Giagnoni
nicolas.giagnoni@mercadolibre.com
Qué es MercadoLibre (en IT) ?
Contexto
- ~18.000.000 de Requests por Minuto
- ~400 Deploys por dia
- ~700 Developers en 5 Centros de desarrollo
- ~20.000 Servidores Virtuales
- ~1500 Fisicos
Cómo nos organizamos con este CAOS?
Cómo mejoramos este MUNDO?
Cómo funciona la PLATAFORMA?
● 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
Veamos cómo usa la herramienta un
developer y que pasa por debajo
Proceso de desarrollo
Proceso de Desarrollo
Create App
Proceso de Desarrollo
Create App
Code !!!
Proceso de Desarrollo
Create App
Code !!!
Create Version
Proceso de Desarrollo
Create App
Code !!!
Create Version
Deploy
Proceso de Desarrollo
Create App
Code !!!
Create Version
Deploy
Crear una Aplicación
Proceso de Desarrollo
Create App
Code !!!
Create Version
Deploy
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
Create App Stack
Crear una Aplicacion
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
Empezando a Codear
Proceso de Desarrollo
Create App
Code !!!
Create Version
Deploy
Code
Get App
(fury get)
Code
Get App
(fury get)
Code
Code
Get App
(fury get)
Code Run
(fury run)
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
Code
fury run
Code
fury run
docker build -t app_build .
docker run -v $(pwd):/app app_build
/commands/run.sh
Create Version
Create Version
Create App
Code !!!
Create Version
Deploy
Create Version
fury create-
version
Create Version
Create Version
Commit: xxxx
fury api
Create Version
Create Version
Commit: xxxx
fury api
Jenkins
Build
Create Version
Create Version
Commit: xxxx
fury api
Jenkins
Build
Create Version
Create Version
cd app
docker build -t app .
docker run app /test.sh
docker run app /package.sh
-v prod-image:/package
Create Version
cd app
docker build -t app .
docker run app /test.sh
docker run app /package.sh
-v prod-image:/package
cd prod-image
docker build -t prod-app .
Create Version
cd app
docker build -t app .
docker run app /test.sh
docker run app /package.sh
-v prod-image:/package
cd prod-image
docker build -t prod-app .
docker push app
Go to Prod !
Deploy
Create App
Code !!!
Create Version
Deploy
Crear un Scope
Crear un Scope
● Crear ELB (Elastic Load Balancer)
● Scope Domains
● Iniciar deploy
Deploy
Deploy
● Crear Máquinas
● Crear Nuevo Autoscaling group
● Intercambiar tráfico entre
versiones (swap)
● Destruir maquinas viajes (o hacer
rollback)
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
En definitiva ...
❖ fury get apparel-home
❖ fury run
❖ fury create-version 0.0.1
❖ DEPLOY !!!
Cómo queda Todo en Prod ?
Arquitectura
FuryCore
VPC-1
Subnet 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-N
Subnet 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 Balancing
CloudFormation
EC2
Api
ELBOthers
Arquitectura
VPC-1
Subnet A app 1
Arquitectura
VPC-1
Subnet A app 1
Server i-0XXXXX
mercadolibre/docker-
meetup:0.0.1
datadogrsyslog JMX
docker-compose.yml
local-api
Mantenimiento de la app
Mantenimiento
● Logs
● Metricas
● Ops
Logs
Logs
Logs Collector
[tags:parser]
stdout
stdout
stdout
Logs
Metricas
Metricas
Metricas
Operaciones
Operaciones
Operaciones
Server i-0XXXXX
mercadolibre/docker-meetup:
0.0.1
local-api
fury api
Action
Wrapping Up
Gracias
arquitectura@mercadolibre.com
Architecture Team
Gracias
arquitectura@mercadolibre.com
Architecture Team

Más contenido relacionado

La actualidad más candente

MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )Ahmed Emad
 
Project meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture OverviewProject meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture OverviewYu-Hsin Hung
 
Build a minial DBMS from scratch by Rust
Build a minial DBMS from scratch by RustBuild a minial DBMS from scratch by Rust
Build a minial DBMS from scratch by Rust安齊 劉
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutterrihannakedy
 
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...Edureka!
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroFabrício Rissetto
 
Overview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled KubernetesOverview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled KubernetesPieter de Bruin
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering PipelineHyungwook Lee
 
Building beautiful apps using google flutter
Building beautiful apps using google flutterBuilding beautiful apps using google flutter
Building beautiful apps using google flutterAhmed Abu Eldahab
 
Flutter for web
Flutter for web Flutter for web
Flutter for web rihannakedy
 
Tom Grey - Google Cloud Platform
Tom Grey - Google Cloud PlatformTom Grey - Google Cloud Platform
Tom Grey - Google Cloud PlatformFondazione CUOA
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker ComposeAjeet Singh Raina
 

La actualidad más candente (20)

MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )
 
Flutter for web
Flutter for webFlutter for web
Flutter for web
 
Project meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture OverviewProject meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture Overview
 
Build a minial DBMS from scratch by Rust
Build a minial DBMS from scratch by RustBuild a minial DBMS from scratch by Rust
Build a minial DBMS from scratch by Rust
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
 
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to Hero
 
Overview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled KubernetesOverview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled Kubernetes
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
 
.Net Core
.Net Core.Net Core
.Net Core
 
Building beautiful apps using google flutter
Building beautiful apps using google flutterBuilding beautiful apps using google flutter
Building beautiful apps using google flutter
 
Flutter for web
Flutter for web Flutter for web
Flutter for web
 
GitOps w/argocd
GitOps w/argocdGitOps w/argocd
GitOps w/argocd
 
Admincenter
AdmincenterAdmincenter
Admincenter
 
Présentation Angular 2
Présentation Angular 2 Présentation Angular 2
Présentation Angular 2
 
Docker compose
Docker composeDocker compose
Docker compose
 
Tom Grey - Google Cloud Platform
Tom Grey - Google Cloud PlatformTom Grey - Google Cloud Platform
Tom Grey - Google Cloud Platform
 
Architecture .NET
Architecture .NETArchitecture .NET
Architecture .NET
 
Github PowerPoint Final
Github PowerPoint FinalGithub PowerPoint Final
Github PowerPoint Final
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker Compose
 

Similar a Fury DevopsConf 2015

Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017Diego Bersano
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Eduardo Castro
 
Docker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresDocker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresBel Rey
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en DockerJavier Villegas
 
Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Rodolfo Finochietti
 
Docker Containers | Talent Week/Team International
Docker Containers | Talent Week/Team InternationalDocker Containers | Talent Week/Team International
Docker Containers | Talent Week/Team InternationalAndrés Londoño
 
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Luis Beltran
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014quaip
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando dockerChristian Rodriguez
 
Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios
Mecanismos y patrones para acelerar adopción en arquitecturas de microserviciosMecanismos y patrones para acelerar adopción en arquitecturas de microservicios
Mecanismos y patrones para acelerar adopción en arquitecturas de microserviciosSoftware Guru
 
Programacion
ProgramacionProgramacion
Programacionluisan99
 

Similar a Fury DevopsConf 2015 (20)

DOCKER+AWS+MELI
DOCKER+AWS+MELIDOCKER+AWS+MELI
DOCKER+AWS+MELI
 
Andrid studio
Andrid studioAndrid studio
Andrid studio
 
Autobuses de Madrid en tiempo real con Azure Relay
Autobuses de Madrid en tiempo real con Azure RelayAutobuses de Madrid en tiempo real con Azure Relay
Autobuses de Madrid en tiempo real con Azure Relay
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
Docker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresDocker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos Aires
 
Azure Relay (Hybrid connections) & .NET Core ARM
Azure Relay (Hybrid connections) & .NET Core ARMAzure Relay (Hybrid connections) & .NET Core ARM
Azure Relay (Hybrid connections) & .NET Core ARM
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en Docker
 
Comenzando a usar el Continuous Delivery
 Comenzando a usar el Continuous Delivery Comenzando a usar el Continuous Delivery
Comenzando a usar el Continuous Delivery
 
Introducción a ndk
Introducción a ndkIntroducción a ndk
Introducción a ndk
 
Descubriendo windows azure
Descubriendo windows azureDescubriendo windows azure
Descubriendo windows azure
 
Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
 
Docker Containers | Talent Week/Team International
Docker Containers | Talent Week/Team InternationalDocker Containers | Talent Week/Team International
Docker Containers | Talent Week/Team International
 
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
 
Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios
Mecanismos y patrones para acelerar adopción en arquitecturas de microserviciosMecanismos y patrones para acelerar adopción en arquitecturas de microservicios
Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios
 
Programacion
ProgramacionProgramacion
Programacion
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (10)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Fury DevopsConf 2015