Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud...

43
Desplegando DJANGO roberto.majadas PyconES 2016 Almería

Transcript of Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud...

Page 1: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Desplegando DJANGO roberto.majadas

PyconES 2016Almería

Page 2: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Pensando un poco antes de DEsPlegar

Page 3: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

¿Qué es lo que vas a dEsplegar?

Nunca es sólo django

● Python/Django● Base de datos SQL

○ Postgresql○ Mysql

● Servidor web○ Apache○ Nginx

● Redis● Storage en Cloud● Celery● Big Data● EdgeTech <current year>

Page 4: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

¿A quien se lo vas a DESPLEGAR?

Cliente diferente, necesidad diferente

Page 5: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

¿Donde lo vas a desplegar?

Muchas decisiones dependen del “donde”

● ¿CPD propio?● ¿En algún Cloud?● ¿En algún PASS?● ¿Múltiples entornos?● ¿Acceso remoto?● ¿Integración continua?

Page 6: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Conclusiones Previas

Page 7: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

¿Cual es la mejor manera de Desplegar?

Page 8: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Ni P***IDEA

Page 9: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

¡Así que empecemos Por el

Principio!

Page 10: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

DJANGOEl minimun minimorum

● Python○ Versión 3, mejor que 2○ Virtualenv

● Base de datos○ Postgresql○ Mysql

● Servidor web○ Apache○ Nginx

● WSGI○ apache-wsgi○ uwsgi○ gunicorn

Page 11: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

DJANGOCosas a tener en cuenta

● Los settings○ Varios entornos○ Variables de entorno

■ django-environ

● Virtualenv○ requirements.txt

● Piensa dónde pones los datos (static/media)

● Entorno aislado mejor

Page 12: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Bases de datosCosas a tener en cuenta

● Datos de conexión vía DATABASE_URL

● ¿Quien gestiona la base de datos?

Page 13: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

WebServerCosas a tener en cuenta

● ¿Quien controla el webserver?

● ¿Que WSGI uso?

Page 14: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Modos de despliegue de Menos a MÁS

(mÁs o menos)

Page 15: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Capítulo I:Las guerras ScRIPT

Page 16: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Great BallS of Fire!¿Desplegar yo?

Page 17: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Yo, yo y también yo

presentado por yo mismo

● Yo hago un tarball del código

● Yo lo subo al servidor● Yo despliego a mano● Yo reinicio lo que se

tenga que reiniciar

Page 18: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

El SCRIPTEn su momento pareció una

buena idea

● Script en bash● Normalmente se ejecuta

en el servidor● Se empieza a complicar

cuando:○ Tienes varios entornos○ Tienes que ejecutar en

remoto○ Tienes que hacer cosas

más complicadas que el lenguaje script no puede con ello.

Page 19: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

SCRIPT + SSHPython Fabric

from fabric.api import run

def host_type(): run('uname -s')

$ fab -H linuxbox host_type[localhost] run: uname -s

Page 20: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

CAPÍTULO II:OLD SCHOOL BAD ASS

Page 21: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

RPM/DEBUsando los paquetes de las

distros

Page 22: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

FPMEffing package management

● Comando en ruby● Permite crear un

paquete en una línea de comandos

● Soporta○ DEB○ RPM

● Scripts pre/post install

Page 23: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

OMNIBUSGotta Catch 'Em All

● Puedes crear un paquete con TODO lo necesario

● Wocu y Gitlab usa omnibus

Page 24: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

CAPÍTULO III:DOING BETTER

Page 25: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

CapISTRANOSi, está hecho en ruby

Page 26: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

CapISTRANOLayout de capistrano

Page 27: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

ANSISTRANOAnsible + Capistrano

Page 28: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

ANSISTRANOAnsible + Capistrano

Page 29: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Capítulo IV:Los caballeros de la

Gestión de la Configuración

Page 30: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

ansiblePequeño pero matón

- name: Clone/pull project repo git: repo={{ project_repo }} dest={{ install_root }}/{{ project_name }} accept_hostkey=yes notify: - restart gunicorn

- name: install python packages pip: requirements={{ install_root }}/{{ project_name }}/requirements.txt notify: - restart gunicorn

Page 31: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

SALT/CHEF/PuppetUn gran Mjolnir, para una

gran batalla

● Sistemas de gestión de configuraciones

● Mayormente centralizados● Capaces de orquestar y

desplegar muchas cosas a la vez.

Page 32: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Capítulo V:LA revolución de los contenedores

Page 33: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

DOCKERContainers, containers

everywhere

● Usar y tirar● Microservicios● Composición● Escalado dinámico

Page 34: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

DOCKERContainers, containers

everywhere

● Usar y tirar● Microservicios● Composición● Escalado dinámico

Page 35: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

CAPÍTULO VI:CLOUD ALTAS

Page 36: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

AWS y digievoluciones

Será por nubes!

● Tienen sus cosas buenas y sus cosas malas

● Se puede ajustar a muchos fines de despliegue diferentes

● Fácil de scriptear/automatizar

Page 37: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

PASSPlatform as a Service

● ¿Que es un PASS?● ¿En la nube pública o

privada?○ Heroku vs OpenShift

● Muy bonito! dónde están las pegas…

Page 38: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

CAPÍTULO VII:MATRIX Y

EL arquitecto de Cuenca

Page 39: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

Caso Normaldjango+bbdd+nginx

● Es un rollo, lo sé, pero haz mínimo dos entornos.

● fabric● (capis|ansis)trano● ansible● Integración continua

Page 40: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

CASO MEDIOMás de un server haciendo

cosas

● Usar gestión de configuración puede ser muy útil

● ¿Alta disponibilidad?

Page 41: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

CASO “Oh My Gosh”Cuando django es lo de menos

● Django es API en el backend de algo más grande (BIGDATA)

● Producto de empresa: Gitlab

● Servicios de escalado horizontal

Page 42: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

¿Vemos algo en Particular?

¿Preguntas?

Page 43: Desplegando DJANGO - PyCon2016.es.pycon.org/media/keynotes/roberto_majadas... · Storage en Cloud Celery Big Data EdgeTech  ¿A quien se lo vas a ... AWS y digievoluciones

GRACIAS!!