/CloudComputing

Aplicación cloud, de rankings de puntuaciones en videojuegos, y despliegue de ella realizadas para la asignatura CC en el Master de Ingeniería Informática en la UGR.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

CloudComputing

Repositorio creado por Alejandro Guerrero Martínez para la asignatura de Cloud Computing en el máster de Ingeniería Informática de la Universidad de Granada.

La documentación completa del proyecto se encuentra en: agm-gr.github.io/CloudComputing

Descripción

El proyecto tratará de un servicio de datos para juegos, en el cual se almacenarán los datos de los jugadores de distintos juegos (IDs, puntuación, localización, amigos ...)

Para ello se despliega una API Restful, sobre una base de datos MongoDB que guardará la información, para que los juegos puedan acceder a los datos en todo momento.

Aprovisionamiento

El aprovisionamiento del servidor se realiza con Ansible, el cual instalará en la/las máquinas indicadas:

  • Python 3.6, el lenguaje sobre el que se reliza la API.
  • Pip para instalar librerías de python:
    • flask, flask-restful flask-cors y flask-jsonpify, el cual sera el microframework sobre el que montaremos la API REST.
    • pymongo, para poder trabajar con MongoDB en python.
  • MongoDB, la base de datos que utilizaremos.

Cómo ejecutar el aprovisionamiento y más información en el enlace.

Despliegue

También es posible crear el sistema automáticamente en azure ejecutando el script acopio.sh Para su ejecución sera necesario tener instalado y configurado Azure CLI 2.0 y el programa "jq". Este script nos creará un grupo de recursos "CC" y una máquina virtual aprovisionada en nuestra cuenta de Azure. En ésta máquina se instalará una imagen de Ubuntu 16.0, elegida por su ligereza, facilidad de instalación con azure y conocimiento previo con ésta distribución.

La máquina desplegada para el hito 3 le corresponde la siguiente IP.

Despliegue: 52.168.162.6

Cómo ejecutar el despliegue y más información en el enlace.

Orquestación

Podremos orquestar el despliegue usando Vagrant, una vez configurado nuestra cuenta de azure con AzureCLI, ejecutaremos el comando vagrant up en la carpeta de orquestacion.

Nos creará dos máquinas nuevas en azure, una para la API y otra para la base de datos, ambas con Ubuntu 16.0 y totalmente aprovisionadas como anteriormente. https://hub.docker.com/r/agmgr/cloudcomputing/ Despliegue Vagrant: 52.168.23.89

Cómo ejecutar la orquestación y más información en el enlace.

Contenedores

El servicio se podrá desplegar en un contenedor de Docker destinado a la ejecución de este. El contenedor tiene una imagen del sistema Alpine, elegido por su simplicidad y ligereza (la imagen completa apenas ocupa 60 mb) dejando más espacio para datos y necesitando menos cpu para el servicio.

Contenedor: https://dockerstatus.azurewebsites.net

Imagen del contenedor en Docker Hub: https://hub.docker.com/r/agmgr/cloudcomputing/

Como lanzar el contenedor en Azure y más información en el enlace.

Composición

El servicio final desarrollado GameDataService, consta de dos contenedores para su composición, uno que ejecuta el servicio REST, sobre una imagen de Alpine con python3, como ya se había comentado anteriormente se ha elegido por su ligereza y simplicidad. Y otro contenedor con la base de datos MongoDB la cual será consultada por la API para obtener los datos, la imagen elegida es la oficial de MongoDB, ya que viene preparada para servir solo la base de datos totalmente configurada.

Hito6: http://ccdockercompose.westeurope.cloudapp.azure.com:5000/

Como lanzar el docker-compose en Azure y más información en el enlace.