Monitorización de líneas de producción
Proyecto para la asignatura de Cloud Computing en el Máster en Ingeniería Informática UGR.
Docker
Para desplegar los servidores de los microservicios para poder hacer pruebas de carga se ha decidido utilizar contenedores de Docker
. Para hacer esta tarea más sencilla de ha usado la herramienta docker-compose
que permite indicar de manera sencilla las imágenes, argumentos, redes, variables de entorno, etc. necesarias para el despliegue. Concretamente se han utilizado 4 contenedores para:
- El microservicio Notifier.
- La base de datos MongoDB que usa el microservico anterior.
- El microservicio Monitor.
- La base de datos PostgreSQL que usa el microservico anterior.
Microservicio Notifier
Contenedor: https://hub.docker.com/r/ibe16/notifier
Enlace al Dockerfile.
La imagen anterior se ha construido teniendo como base python:3.6-slim-stretch
, una imagen del DockerHub oficial de Python
que usa Debian 9
como sistema operativo y contiene python 3.6
instalado. Después se han instalado las dependencias necesarias para el funcionamiento del servicio, que son Flask
y Gunicorn
.
Se ha elegido la imagen python:3.6-slim-stretch
siguiendo los siguientes criterios:
- Proviene del repositorio oficial del lenguaje que se está usando.
- Contiene la versión del lenguaje con la que se está desarrollando ya instalada.
- Es la que mejor rendimiento ofrece en relación al espacio que ocupa. Se pueden ver en la [documentación][docu_bench] correspondiente los benchmark que se han realizado para hacer esta elección.
A continuación, se muestra el resto de imágenes que se barajaron:
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.6-slim-stretch fa79f489b3bf 7 days ago 151MB
python 3.6-slim-buster add6920a081f 7 days ago 174MB
python latest 0a3a95c81a2b 7 days ago 932MB
python 3.6-alpine 8880aaf979d2 2 weeks ago 94.7MB
Podemos comprobar como la versión con Alpine
es la más ligera. La versión stretch
está basada en Debian 9. La versión buster
también está basada en Debian. Con la palabra slim
quiere decir que es una versión reducida de estos sistemas.
Microservico Monitor
Contenedor: https://hub.docker.com/r/ibe16/monitor
Enlace al Dockerfile.
La imagen de este microservicio se ha construido a partir de la imagen python.3.6-slim
porque es la única donde se ha podido instalar una dependencia necesaria para poder usar el paquete
de Python
que conecta con la base de datos. Se ha probado con todas las imágenes propuestas para el microservicio anterior, ya que estás eran las más rápidas que se encontrarón, sin embargo no permitían la instalación de dicho paquete.
Uso
Para poder usar el
docker-compose
es necesario instalarlo previamente. Se puede realizar fácilmente siguiendo su documentación. También es conveniente configurarlo para usarlo sin la necesidad de hacersudo
.
- Para construir la imagen a partir del
docker-compose
ejecutamos:$ docker-compose build
Contruye las imágenes necesarias en el directorio actual y construye la red para que se puedan comunicar. Por defecto la
que se coloca en los microservicios es `latest`. - Para descargar la imagen desde DockerHub:
$ docker pull ibe16/notifier:latest
$ docker pull ibe16/monitor:latest
- Para ejecutar la imagen en local:
$ docker-compose up
- Para parar todo:
$ docker-compose down
Para ver que el contenedor se ejecuta correctamente se puede consultar la url
http://0.0.0:<puerto_externo>/hello
que devolverá un ‘Hello, World!’.
Para más información se puede consultar el docker-compose.
El repositorio de
DockerHub
se ha configurado para que se actualice la imagen cada vez que se haga unpush
al repositorio deGithub
. Para más información se puede consultar la documentación donde explica cómo realizarlo.