manolo-rocks / django-manolo

Manolo buscador de visitantes a las entidades del Estado peruano
http://manolo.rocks
Other
2 stars 0 forks source link

Propuesta para deployment #101

Open manubellido opened 3 years ago

manubellido commented 3 years ago

Arquitectura

Para correr manolo y los spiders en conjunto necesitamos:

Servicios extras

Hosting y Deployment

Podemos hostear toda la app + spiders en droplets de DigitalOcean y tener la base de datos hosteada en DigitalOcean también. Las ventajas son el costo y la familiaridad de uso de VPS.

Una de las principales dificultades de trabajar con VPS es el deployment del código y configuración de servicios para que interactúen entre sí.

Dokku al rescate.

link: Dokku La forma más fácil de hostear un app de Django es Heroku, que se caracteriza por hacer deployment con un simple git push heroku master, pero es realmente caro comparado con DigitalOcean. Sin embargo, podemos alcanzar la misma facilidad de deployment con Dokku: git push dokku main:master.

Dokku puede manejar el deployment del código de Django, configurar Redis, Postgres y las instancias de Celery. Se puede instalar en un droplet de DigitalOcean y ahí se pueden correr la web app de Manolo ( tipo web) y los spiders como (tipo worker), con un simple archivo de configuración:

web: gunicorn config.wsgi:application
worker: celery worker --app=config.celery_app --loglevel=info # worker que ejecuta las tareas
beat: celery beat --app=config.celery_app --loglevel=info  # scheduler para tareas periódicas

y se puede escalar de acuerdo a la necesidad, por ejemplo:

web=1
worker=2

Lo anterior significa: 1 instancia de Django y 2 para celery.

Un ejemplo de cómo se hace todo esto en la práctica: https://www.stavros.io/posts/deploy-django-dokku/

Recursos Estimados

Opción 1 ($$$):

Opción 2 ($$):

Límite

Lo único malo de Dokku, es que se está limitado a los recursos que tenga el servidor donde está instalado. Pero esto es manejable al contratar un servidor más potente.

aniversarioperu commented 3 years ago

creo que docker es otra opcion? en que se diferenciaria o tendria mas ventajas usar dokku en lugar de docker? hay una propuesta de usar docker ver #80

manubellido commented 3 years ago

Para usar dokku, necesitamos docker. Dokku simplemente agarra tus containers y te ayuda a administrarlos desde la línea de comandos (remotamente)

manubellido commented 3 years ago

@josemvaldivia no sé si viste esto. Tienes algún comentario?

Veo que vas a añadir docker y docker-compose. Dokku funciona con docker y se encarga de la configuración y manejo de los containers donde se vaya a hacer deployment. Si Dokku resultar ser buena opción dere ya no necesitamos docker-compose.