Actualizado a 31/01/2017
Repositorio para el proyecto de la asignatura Cloud Computing 1 del del Máster Ingeniería Informática UGR.
Hoy en día son cada vez más populares los festivales de música, estos eventos mueven a miles de personas con el objetivo de pasar unos cuantos días fuera de la rutina, conociendo mucha gente nueva y disfrutando con sus amigos de la música. Los grandes festivales tienen asegurado un público que acude a ellos año tras año, pero cada vez se están creando más festivales pequeños, sin muchos recursos para publicitarse y en muchos casos autogestionados por artistas incluso llegando a ser gratuitos. El problema de estos festivales es darse a conocer ya que su público objetivo suele ser mucho mayor que la gente que los conoce.
Por todo ello sería interesante algún sistema para descubrir festivales, un intermediario que pusiera a la gente en contacto con los festivales.
Aunque existen algunas opciones similares no hay ninguna que sea realmente conocida o empleada habitualmente por los fans de los festivales. Si introducimos festivales de música en los buscadores más conocidos de internet se encuentran diversas páginas como:
-
festivales.com en la que el administrador de la web va creando el contenido fijándose en las páginas de festivales. Esto tiene el problema de que si no se esta activo rápidamente se queda obsoleto el contenido.
-
ticketea, tiene información muy actualizada pero no deja de ser una plataforma de venta de entradas en la que los pequeños festivales no tienen cabida.
-
fanmusicfest, al igual que la primera el contenido es creado por los administradores aunque está bastante más actualizado que festivales.com, el problema es que no se promocionan festivales pequeños y los editores tendrán sus propios criterios para elegir unos festivales u otros.
Sería más interesante un sistema de festivales en el que fueran los propios organizadores de los festivales los encargados de crear y mantener el contenido sobre los festivales, entradas, artistas,... Ofreciendo la posibilidad de registrarse a cualquier organizador se lograría que cualquiera que organice un festival ya sea pequeño o grande sea capaz de publicitarse en una plataforma de modo gratuito.
Se creará una aplicación web desplegable en la nube en la que los organizadores podrán registrarse y logearse, crear festivales dando datos de estos tales como perfiles sociales, pagina web del festival o enlaces a la venta de entradas on-line. También serán los organizadores los que crearan artistas para añadir a sus festivales. Una vez que un artista sea creado por un organizador estará disponible para su inclusión en otros festivales sin tener que volver a crearlo.
Los usuarios anónimos (los que no sean organizadores registrados en el sistema) podrán ver una página principal con los festivales más populares, las páginas de los festivales y las de los artistas.
Para este proyecto se seguirá una arquitectura basada en microservicios como se puede ver en el siguiente diagrama:
- La API Rest se creara utilizando Express.js
- El servicio Organizadores se encargará de gestionar las cuentas de los organizadores, login, control de sesiones, etc. Como almacen de datos empleará una base de datos NoSQL orientada a documentos.
- El servicio de Festivales se encargará de gestionar la información sobre los festivales incluyendo las operaciones típicas CRUD. También empleará una base de datos orientada a documentos.
- El servicio de Artistas se encargará de gestionar la información sobre los artistas incluyendo las operaciones típicas CRUD.También empleará una base de datos orientada a documentos.
- También se planea introducir un servicio de logger para registrar las interacciones con la aplicación web y poder extraer información de estos datos como los festivales más populares o recuperar las bases de datos de los microservicios en caso de error. Los mensajes logs generados se almacenarán en una base de datos.
Se han elegido 2 sistemas de provisionamiento para el proyecto, actualmente se ofrece el provisionamiento del servicio organizadores aunque aún no esté implementado. Ambos sistemas están pensados para provisionar una instancia de AWS con una imagen de Ubuntu 14.04.5 LTS aunque podrían funcionar para otros sistemas se requerirían ciertas modificaciones por lo que se recomienda usar esa imagen.
Se ha elegido este sistema por su gran flexibilidad y extenso número de opciones, puede encontrar unas instrucciones detalladas en este enlace.
Se ha elegido este sistema por su extendido uso en entornos reales, puede encontrar unas instrucciones detalladas en este enlace.
Se facilita los ficheros necesarios para orquestar este proyecto usando Vagrant y ansible como provisionador. Puede consultar las instrucciones detalladas en este enlace.
Se ha usado Docker como plataforma para crear un entorno de pruebas usando contenedores. Se pueden consultar aquí las instrucciones para descargar Docker y descargar el contenedor de DockerHub.
Se ha realizado un despliegue combinando las tecnologias usadas previamente, usando orquestación con Vagrant de tres máquinas (una por microservicio) provisionadas con Ansible y usando contenedores con Docker para facilitar el despliegue y hacerlo independiente de la máquina donde se realice. Dichos contenedores se encuentran en DockerHub en las siguientes ubicaciones: defesti-organizadores, defesti-festivales y defesti-artistas.
Para consultar las instrucciones concretas de despliegue haga click aquí.
Este proyecto tiene una licencia GPL v3.0, para información detallada véase LICENSE