Docker en producción
Ahorrar dinero usando
Victor Aguilar
http://victoraguilar.net
victor@xiberty.com



Soy desarrollador fullstack y fundador de xiberty en donde construimos aplicaciones web, móviles y chatbots
Victor Aguilar C.

victor@xiberty.com

Al iniciar (y en todo momento) una empresa/proyecto hay dos recursos que son valiosos y son muy escasos.


TIEMPO
DINERO
- Manejar multiples proyectos
- Ocupar el menor tiempo posible en mantener estos proyectos.
- Cumplir con los plazos de entrega
- Automatizar todo lo que se pueda
- Ahorrar lo mas que se pueda
Empresa que inicia


LOS RETOS DE


¿Que es proyecto?
Es una solución (tecnológica) a los requerimientos que nacen de un problema

NGINX
DJANGO
POSTGRES
REDIS

WEBSERVER
APP
DATABASE ENGINE
CACHE SERVER
DATA
OTHER SERVER
OTHER SERVICE
EN TÉRMINOS DE DESARROLLO
Proyecto

TIEMPO
¿Como rayos ahorro tiempo?
AUTOMATIZANDO TODO LO QUE SE PUEDA

BUILDS
PRUEBAS
DESPLIEGUES

CPU



RAM
DISCO
300m
250MB
300MB

Proyecto
EN TÉRMINOS DE RECURSOS




EL DINERO ES DINERO
Y COMO DICE UN RECONOCIDO PENSADOR MEXICANO
Manejo tradicional de proyectos


App 2
App 1
App 1


OS
Servidor L
Servidor S





Virtual
DESARROLLO
PRODUCCIÓN
Proyecto en producción

OTHER SERVICE
DJANGO
POSTGRES
REDIS
CADA




EL RETO
DJANGO
Encontrar una manera barata posible de deplegar multiples aplicaciones con el menor coste posible


Conceptos previos
DJANGO

Sistemas operativos para

contenerización





Más extendido




VERTICAL
Tipos de escalamiento
HORIZONTAL


Escalamiento vertical
1 CORE CPU





500 MB RAM
20 GB DISCO
2 CORES CPU
1 GB RAM
30 GB DISCO
8 CORES CPU
16 GB RAM
1 TB DISCO
Escalamiento



...
WEB

WEB

DB

CACHE

WEB

WEB

DB

DB

CACHE
horizontal

Más barato

Es una plataforma abierta para construir, ejecutar y distribuir aplicaciones.

FACIL

INDEPENDIENTE
LIGERO
BUEN SOPORTE
GRAN COMUNIDAD





VENTAJAS DE

en desarrollo


COMPOSE
- Multiplataforma (Win/Linux/OSX)
- Multiples contenedores
- Código como volumen
- Herramientas de desarrollo
- Servidor de correos
- Debugging

Docker en producción


¿Que alternativas hay?
Opciones de depliegue
DJANGO
CONTAINER AS A SERVICE






Opciones de depliegue
DJANGO
SELF HOSTED




ONE SERVER
MULTIPLE SERVER






COMPOSE
SWARM


Más barato a la larga


Docker in production
OVERVIEW

VENTAJAS
DESVENTAJAS
- Se puede instalar en cualquier proveedor
- Robusto y diseñado para escalar
- Tiene el apoyo de Google
- Hay muchas herramientas y plugins
-
Curva de aprendizaje alta
-
No se puede aprovechar docker-compose.
-
No es tan sencillo de instalar y usar

VENTAJAS
DESVENTAJAS
- Permite instalar stacks rapido
- Soporta otros orquestadores como kubernetes, mesos o swarm
- Agregar nodos es muy simple
-
Pierdes el control de algunas cosas y no es tan transparente es sus updates
-
Necesitas un nodo extra solo para el administrador y espacio extra en cada nodo
-
rancher-compose me parece innecesario.


VENTAJAS
DESVENTAJAS
- Ya viene incluido en docker
- Aprovecha las herramientas de docker, como el : docker-compose y todos lo que implica
- Es el mas fácil de aprender
- Es ligero y no instala contenedores extra en cada nodo, se basta con el demonio de docker
-
Aún le faltan varias cosas comparado con otros orquestadores. sigue en desarrollo.

SWARM


Más facil y más barato
AWS Elastic Beanstalk, ECS y GKE

~20 USD
~15 USD
~18 USD
~0.010USD/GB
3 x 15 USD + 20 USD + 18 USD = ~83 USD/Mes

DJANGO
Recursos Clave




~12 USD
Nodo
RAM 1GB+ DISCO 20GB+ 1CPU+
~12 USD
10 USD
5 USD
NODO
BALANCEADOR
~18 USD+
por GB
20 USD
No tiene


Nodo
Balanceador




Más barato

AWS + Kubernetes + Kops
Posibles combinaciones
Supergiant + DigitalOcean + Kubernetes
AWS + Rancher + RancherOS











DJANGO
Posibles combinaciones
AWS + Swarm
DigitalOcean + Swarm
Vultr + Swarm






Más barato


HAGAMOS UN DEMO PORFAVOR

suarm
Es una herramienta para crear clusters en vultr sobre servidores con CoreOS


1. Instalación


pip install git+http://github.com/vicobits/suarm
2. Variables


{
"api-key": "OHJTUKSYTAT47R7YSABMEREJHWJJ5JRFEVXA",
"ssh-key": "597aad5140c96", "label": "swarm",
"domain": "cluster.xiberty.com",
"email": "victoraguilar.net@gmail.com",
"manager": {
"replicas": 1, "zone": "NEW_JERSEY",
"plan": 201, "os": "COREOS",
"nodes": []
},
"worker": {
"replicas": 2, "zone": "NEW_JERSEY",
"plan": 201, "os": "COREOS",
"nodes": []
}
}
3. Configuración


suarm cluster --create
suarm cluster --setup
suarm keys --create
suarm keys --show
Crear una cluster
Configurar el swarm
Listar y registrar las llaves
Crear llaves ssh en vultr
3. Configuración


<MANAGER_IP>:9000
<MANAGER_IP>:8000
Vizualizer
Dashboard (portainer)
SWARM




CLUSTER
MANAGER
WORKER
WORKER
MONEY

SWARM CLUSTER



Nodes
Load Balancer & SSL
3 x 5 USD
FREE
TOTAL PRICE = 15 USD

CONFIGURED

SWARM CLUSTER

dockerflow.com

CHEAP CLUSTER UNLOCKED
CLUSTER PRICE = 15 USD
SENSATION = Don't have price
Enlaces de interes
Esta presentación: slides.com/vicobits/docker-cheap



Meetup 21 de Agosto

victor@xiberty.com
Docker en producción
By Victor Aguilar
Docker en producción
Dockerizando un app Django para entornos de desarrollo
- 487