View on GitHub

CC-proyecto

Repositorio del proyecto de Cloud Computing por Felipe Peiró Garrido

Proyecto de Cloud Computing

Autor: Felipe Peiró Garrido

Menú


Título

Estación meteorológica local en Granada

Descripción

El proyecto a desarrollar trata sobre un servicio por el cual se monitorizan sensores relativos a la climatología. Tiene como fin la realización de previsiones meteorológicas y el análisis del efecto invernadero en Granada, así como la medición de la calidad del aire en sensores repartidos por la capital. Cada día existen mayores normativas a cumplir para paliar el efecto invernadero, así como las referidas a la salud de los vecinos limitando la presencia de determinados gases en el aire. Este contará con las siguientes funcionalidades:

Definición del proyecto

El proyecto consiste en la creación de distintos microservicios que se interconectan entre sí. Estos harán uso de una base de datos donde se almacenarán sensores de distintos tipos (velocidad del viento, temperatura,…) así como los valores que toman. Se utilizará además la API de Google destinada a la elaboración de gráficos mediante la cual realizar representaciones gráficas de los datos almacenados (del valor actual y de los últimos valores). Elaborando de esta manera distintos gráficos para cada uno de los tipos de sensores:

Sensor de temperatura Gráfica de temperatura

El proyecto constará además de aislamiento de datos, motivo por el cual cada uno de los sensores y gráficas solo podrán ser accedidos por el usuario que los ha creado, y por un sistema de alertas para indicar si un sensor ha tomado o no un valor inesperado.

Arquitectura

La realización de este proyecto se elaborará con Node.js utilizando el microframework Express.js 4. Con ellos se desarrollarán microservicios que usará el cliente de manera dinámica. La elección de una arquitectura basada en microservicios se debe a la fácil escalabilidad y al bajo acoplamiento que ofrece. Estos realizarán las siguientes funcionalidades:

Interconexión de servicios

Para la comunicación con los clientes que se conecten al microservicio se realizan servicios REST, obteniendo de esta manera la información a través de comunicación HTTP.

Para la comunicación entre los microservicios se necesita, en cambio, un software de negociación de mensajes (broker). En este caso se hará uso de AMQP 0-9-1, la implementación de RabbitMQ en Node.js.

Despliegue en Heroku

El microservicio ha sido puesto en marcha a través de Heroku. Para visitarlo puede hacer click en el siguiente enlace:

Provisionamiento con Ansible

A través de Ansible se ha provisionado una máquina virtual para el servicio. Esta ha sido creada a través de Azure con la dirección IP: MV: 40.114.90.106 . Ahí será realizado el despliegue donde estará listo el servicio.

He probado y verificado que el proyecto de @xenahort funciona correctamente así como @gomezportillo ha probado el mío. Se puede encontrar más información de estas pruebas aquí.

Automatización con Azure CLI

Haciendo uso de la interfaz de línea de comandos de Azure se ha realizado un ejecutable shell (disponible en la carpeta automatizacion) que permite la creación automática de máquinas virtuales asi como su provisionamiento. La dirección IP de la máquina virtual utilizada es MV2: 168.62.37.56 . Para más información se puede consultar la sección al respecto.

Orquestación con Vagrant

Se ha hecho uso de Vagrant para la orquestación de máquinas virtuales. En la carpeta orquestacion se encuentran los archivos necesarios para llevarla a cabo. Se debe ejecutar el comando vagrant up --provider=azure el cual iniciará la serie de tareas que se encuentran en el Vagrantfile. La dirección IP de la máquina virtual donde se ha desplegado la orquestación es Despliegue Vagrant: 51.140.180.218 . La documentación correspondiente a la orquestación se encuentra aquí.

Despliegue con contenedores Docker

Mediante Docker se han definido dos contenedores para su despliegue automático disponibles en Docker Hub. Los archivos necesarios para ello se pueden encontrar en la carpeta contenedores. Lanzando el ejecutable shell configure.sh es posible desplegar estos contenedores en Azure. Se puede encontrar más información sobre el despliegue aquí. La dirección IP donde se encuentra desplegado el Docker es Contenedor: 40.81.153.130 .

Ejecución de manera local

Para poder ejecutarlo se debe tener Node.js instalado y realizar los siguientes comandos en el Terminal de Linux o en el CMD de Windows.

$ git clone https://github.com/fpeiro/CC-proyecto.git
$ cd CC-proyecto
$ npm install
$ npm start

El microservicio empezará a correr en localhost:5000.

Licencia

Este repositorio se encuentra bajo la GNU General Public License v3.0.