La computación en la niebla (en inglés Fog Computing) es una extensión de la computación en la nube en la que parte de la computación se realiza en dispositivos cercanos al origen de los datos, por lo que es ideal para sistemas IoT (Internet de las Cosas) y aplicaciones que requieran respuesta en tiempo real. Los dispositivos computacionales empleados en el Fog computing tienen menor capacidad de cómputo que los servidores en la nube, pudiendo ser un aspecto crítico, tema de estudio en este TFG. Por contra, el uso de sistemas Fog reduce la cantidad de datos transmitidos a la nube y mejora la eficiencia en términos de latencia.
Así, en este TFG la arquitectura Fog empleada consistirá en un clúster formado por varias tarjetas Raspberry Pi. Las tarjetas Raspberry Pi son placas de bajo coste y consumo energético que utilizan una arquitectura ARM sobre las que corre el sistema operativo Linux. La característica de interés de estas tarjetas para este TFG es que soportan la tecnología de contenedores tan demandada actualmente por los desarrolladores de aplicaciones. Los contenedores permiten crear, empaquetar y distribuir aplicaciones rápidamente, vienen a ser "máquinas virtuales ligeras".
Además, el clúster empleado en este TFG estará gestionado por Kubernetes, también conocido como K8s. Kubernetes es un sistema de código abierto creado por Google para la gestión de aplicaciones en contenedores que propociona funcionalidades de re-arranque automático, auto-replicación y auto-escalado del sistema desplegado.
El objetivo final de este TFG, una vez conocido el entorno de trabajo, es desplegar aplicaciones tipo y analizar las prestaciones bajo una arquitectura software multi-tenant. Así, un aspecto de interés es estudiar el efecto del vecino ruidoso entre aplicaciones que se han desplegado en contenedores en el sistema Fog bajo estudio. Las aplicaciones desplegadas en el clúster deben compartir los recursos físicos (CPU, RAM y red) lo que puede afectar a las prestaciones finales obtenidas por el usuario, así como a la ocupación y coste del sistema. Este TFG evaluará las prestaciones del sistema al variar el número de contenedores y la asignación de recursos a los mismos en las tarjetas Raspberry Pi.
Para el desarrollo de este TFG se hará uso de una metodología ágil basada en Scrum. Se mantendrán reuniones quincenales con los tutores para el correcto seguimiento y retroalimentación del trabajo.
En cuanto al plan de trabajo, a priori se definen las siguientes fases:
- Conocer el funcionamiento de la placa Raspberry Pi (RPi)
- Estudio de las tecnologías Docker y Kubernetes
- Familiarización con la plataforma Kubernetes sobre RPis, desplegada en el laboratorio RAAP del I3A
- Instalación y configuración de aplicaciones tipo
- Configuración y asignación de recursos en contenedores Docker
- Evaluación de prestaciones
Las competencias que se aplican en el caso de la Tecnología de Ingeniería de Computadores son:
[IC5] Capacidad de analizar, evaluar y seleccionar las plataformas hardware y software más adecuadas para el soporte de aplicaciones empotradas y de tiempo real.
[IC7] Capacidad para analizar, evaluar, seleccionar y configurar plataformas hardware para el desarrollo y ejecución de aplicaciones y servicios informáticos.