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