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
- 265