Skip to content

Infraestructura de VotaInteligente en Amazon AWS

Luis Felipe Álvarez Burgos edited this page Nov 26, 2018 · 1 revision

Cómo usté sabe VotaInteligente corre dos tipos de procesos:

Estas configuraciones son sólo iniales!!!! Hay que seguir configurando!!!

  1. Instancia Web (servir la web) Para esto existe una imagen de Amazon que levanta apache con votainteligente (out_of_the box). La imagen de esto debe ser VotaInteligenteWeb_ddmmyyyy.

  2. Instancia Worker/Beat (ejecutar tareas asíncronas, mandar mails periódicos y cosas que se demoran mucho). La imagen de esto debe llamarse VotaInteligenteWorker_ddmmyyy.

La idea es que al terminar esta guía, se consiga una infraestructura como la que le sigue:

infraestructura

Es importante aquí notar que, hay n instancias de VotaInteligenteWeb y una sola instancia de VotaInteligenteWorker. n está determinado por la demanda y crece/decrece utilizando un AutoScaleGroup.

La gran misión es:

  1. Crear instalar VotaInteligente_Web y VotaInteligenteWorker en una instancia nueva de EC2 (micro o nano, la más barata) y crear una nueva imagen propia para el proyecto que se levantará, por ejemplo RioPorInteiroWeb_ddmmyy y RioPorInteiroWorker_ddmmyyyy.

  2. Configurar el AutoScaleGroup, para que cree instancias nuevas sólo de la versión Web y que cuando las cree automáticamente actualice el código.

Creación de un local_settings.py (Esta parte fue escrita por @lfalvarez y por lo tanto estas son opiniones de él).

local_settings.py es el archivo de configuración del votainteligente, algunas consideraciones que se debe tener con este archivo:

  • Cuando se modifica, esta modificación se debe replicar en todas las instancias.
  • Cuando se lanza una instancia nueva de VotaInteligenteWeb, debe ir a buscar la última versión y debe actuar en base a esta.
  • local_settings.py debe ser privado y NO debe estar versionado!
  • local_settings.py hace referencia a la única DB, ElasticSearch y cualquier instancia de Cache que tengan.

Entonces, lo que hice fue dejar un único local_settings.py en un bucket privado de S3 y en cada una de las imagenes hay un script que debe ser modificado para que pueda descargar local_settings.py desde su privada mansión de S3.

Configuración del AutoScaleGroup, LaunchConfiguration y el Load Balancer

Configuración del autodeploy con AWS CodePipeLine y CodeBuild