Skip to content

Latest commit

 

History

History
76 lines (42 loc) · 4.12 KB

README.md

File metadata and controls

76 lines (42 loc) · 4.12 KB

GEventator

"AWS" "Ansible" "Vagrant" "Docker" "mLab" "Papertrail"

Introducción

Descripción del problema

Gestionar un evento no es una tarea fácil, se mueve una gran cantidad de dinero, que no es tuyo y por tanto recae sobre ti una enorme responsabilidad. Hacerlo entre un grupo de personas puede ayudar a la hora de repartirse tareas, pero pueden surgir problemas a la hora de coordinarse. Si cada organizador lleva su propio control de la contabilidad se replica información y a menudo surgen incongruencias.

Solución propuesta

La idea es desarrollar un software para facilitar toda esta gestión y que sea accesible en todo momento para cualquier organizador. La funcionalidad principal de éste es poder llevar a cabo la gestión económica de un evento (compras, ventas, inversiones, donaciones, patrocinios...). Por otra parte también se podrá gestionar la tabla de actividades que se realizarán durante el evento.

Tecnología utilizada

Arquitectura

Se utilizará una arquitectura basada en microservicios, la cual se caracteriza por usar servicios desplegados independiente y que funcionan también independientemente unos de otros.

El núcleo de esta arquitecutra es una API REST programada en Flask.

Microservicios

Se podrían tener tres microservicios actuando de forma independiente los unos con los otros (correspondientes a cada uno de los módulos de la aplicación):

  • Gestión de usuarios
  • Gestión de eventos
  • Gestión de transacciones

Cada uno de estos con su correspondiente base de datos.

"arquitectura de microservicios"

Back-end

Se utilizará Flask como framework para desarrollar el back-end (tanto la API REST como los distintos microservicios) junto con varias bases de datos MongoDB.

Front-end

Si se llega a desarrollar el front-end, se usará HTML, CSS y JavaScript usando Materialize como framework.

Provisionamiento

Ansible

Para provisionar una máquina virtual AWS con una imagen de Ubuntu Server 14.04 usando Ansible hay que seguir las instrucciones detalladas aquí. Con esto se instalará: Git, MongoDB, pip y usando pip: Flask y Flask-PyMongo.

Chef

Para provisionar una máquina virtual AWS con una imagen de Ubuntu Server 14.04 usando Chef hay que seguir las instrucciones detalladas aquí. Con esto se instalará: Git, MongoDB, pip y usando pip: Flask y Flask-PyMongo.

Orquestación

Para orquestar máquinas virtuales se ha utilizado Vagrant. Estas máquinas virtuales son las mismas que se usaron en el apartado de provisionamiento (la AMI de Ubuntu Server 14.04 de AWS) y como sistem de provisionamiento Ansible. Las instrucciones detalladas se encuentran aquí.

Contenedores

Se usa Docker para el uso de contenedores. Las instrucciones para instalarlo están aquí. Asímismo se ha creado un repositorio en Docker Hub que se actualiza cada vez que se actualiza este repositorio en GitHub.

Despliegue

Para el despliegue final de la aplicación se ha puesto en práctica todo lo visto en la asignatura. Se utiliza:

  • AWS (máquinas virtuales Ubuntu 16.04)
  • Ansible (provisionamiento)
  • Vagrant (orquestación)
  • Docker (contenedores)
  • mLab (DaaS)
  • Papertrail (LaaS)

Los detalles de la elección de esta tecnología así como más información se encuentran aquí.

Licencia

El software está sujeto a la licencia GNU GPL v3.