Una arquitectura de microservicios para componentes digitales en la web de las cosas

  1. Mena Vicente, Manel
Dirigida por:
  1. Luis Fernando Iribarne Martínez Director/a
  2. Javier Criado Rodríguez Codirector/a

Universidad de defensa: Universidad de Almería

Fecha de defensa: 09 de mayo de 2023

Tribunal:
  1. Inmaculada Medina Bulo Presidenta
  2. Antonio Becerra Terón Secretario/a
  3. Armando Fox Vocal

Tipo: Tesis

Teseo: 807513 DIALNET lock_openriUAL editor

Resumen

En los últimos años, el uso de dispositivos del Internet de las Cosas (Internet of Things, IoT) y de los sistemas ciberfísicos (Cyber-Physical Systems, CPS) ha crecido exponencialmente. De acuerdo a la última previsión realizada por Cisco Systems, el número de dispositivos conectados a Internet será de aproximadamente 500 billones, y no hay indicios de que la tendencia al alza vaya a variar. El gran número de dispositivos y la heterogeneidad de los mismos hace que establecer ecosistemas de este tipo no sea una tarea trivial. En primer lugar, este tipo de dispositivos está gobernado por una ingente cantidad de protocolos, lo cual hace que el desarrollo de software, el uso y la integración de dispositivos sea muy compleja. Derivado de este mismo problema, surge también el aspecto de la interoperabilidad entre dispositivos y plataformas. Otra problemática que es muy común cuando trabajamos con este tipo de dispositivos es que, debido a que se caracterizan por ser dispositivos en los cuales prima un bajo nivel de consumo energético, suelen estar restringidos en cuanto a su poder de computación y capacidad de memoria. Esto conlleva que aparezcan cuellos de botella en la comunicación, tanto a la hora de acceder a sus estados (p.ej., leer la temperatura de un sensor, ver el estado de una bombilla), como cuando se quiere actuar sobre ellos (p.ej., encender un dispositivo, cambiar el estado de un actuador, etc.), la comunicación puede ser muy lenta, y en el caso de que el dispositivo reciba muchas peticiones de manera simultánea, puede que no sea capaz de responder a todas ellas. Para abordar todos los aspectos planteados anteriormente, en esta tesis doctoral se propone el concepto de Digital Dice (DD). Los Digital Dice son representaciones virtuales de elementos físicos (p.ej., dispositivos IoT o CPS), que tratan de implicar una serie de mejoras con respecto a ellos. Los Digital Dice proponen una abstracción virtual de dispositivos IoT o sistemas ciberfísicos basada en microservicios, y pretende ser agnóstica a los protocolos utilizados por cada dispositivo cara a los usuarios. En una primera aproximación, se trabajó en la integración de los protocolos de datos (p.ej., MQTT) y semánticos (p.ej., JSON-LD). Los microservicios que pueden conformar un Digital Dice son los siguientes: - Controller (C). Este componente se encarga de las funciones necesarias para establecer la comunicación con el usuario. Algunos de los métodos o rutas de esta faceta requerirán autenticación a nivel de aplicación o de usuario, o en ambos casos; es decir, el usuario podrá acceder a esas rutas sólo si tiene permisos, y por una aplicación en concreto. Esta comunicación se realizará a través de una API RESTful en primera instancia, aunque también se le proporciona al usuario una serie de métodos mediante el protocolo Server-Sent Events (SSE) para que pueda recibir notificaciones en tiempo real. - Data Handler (DH). Este componente se encarga de la comunicación directa con la base de datos asociada al dispositivo. Su principal funcionalidad es recuperar los datos que los usuarios quieran consultar, así como guardar en la base de datos las peticiones de los usuarios que supongan el cambio de estado de alguna interacción que establezca el dispositivo. Por otro lado, también realizará un registro de cualquier petición que se realice en el sistema. Es decir, en el caso de dispositivos actuadores, este servicio registrará tanto el cambio de estado del actuador propiamente dicho, como quién ha realizado la interacción sobre el mismo. En el caso de los dispositivos sensores, se registrará todo cambio de estado producido en el sensor, así como quién lo ha consultado y en qué momento, para su posterior análisis. A parte de lo expuesto, esta faceta también permitirá consultar tanto el estado actual del dispositivo como un histórico de los cambios de estado asociado al mismo, todo ello soportado por una base de datos documental, MongoDB, que ofrece una gran capacidad de escalabilidad. - Reflection (R). Es un componente responsable de establecer la comunicación con el dispositivo físico ofreciendo un único canal de acceso, y se encarga de ¿reflejar¿ cualquier cambio de estado que se produzca tanto en el dispositivo físico como en la base de datos asociada. El componente se encarga de realizar la traducción de los mensajes que se envían y reciben del dispositivo físico a un formato que pueda ser interpretado por el resto de componentes. Por ejemplo, si el dispositivo físico utiliza un protocolo de comunicación como MQTT, este se encarga de traducir los mensajes de entrada/salida a un formato JSON, usado, como norma, por el resto de los microservicios (que implementan los componentes). - Event Handler (EH). Este componente se encarga de gestionar los eventos producidos en el dispositivo físico, previamente registrado por el componente Reflection. También es el responsable de escuchar eventos (externos e internos) que puedan afectar al dispositivo gestionado por el microservicio del componente. - User Interface (UI). Es un componente compuesto por una representación visual en forma de interfaz gráfica de usuario web (Web Component) del dispositivo IoT o CPS concreto. Por lo tanto, cuando el usuario requiera sólo una visualización gráfica directa del estado del dispositivo, podrá hacer uso de esta capacidad. - Virtualizer (V). Este componente se encarga de la virtualización del dispositivo físico que puede ser usada para realizar pruebas de forma segura sin que esto afecte al dispositivo. Esta representación virtual se crea analizando la información que se encuentre en la base de datos, no siendo necesario que el dispositivo físico esté conectado para poder realizar dichas pruebas. Controller, Reflection y Data Handler son microservicios obligatorios para cualquier Digital Dice, mientras que Event Handler, User Interface y Virtualizer son opcionales, por lo que su aparición dependerá de las necesidades del dispositivo IoT o sistema ciberfísico que se vaya a representar con el Digital Dice. La posibilidad de replicar las facetas (i.e., capacidades) de un Digital Dice, así como su funcionamiento interno, es lo que proporciona la posibilidad de escalar las peticiones recibidas en los dispositivos IoT. Además, y gracias a que establecer una arquitectura de microservicios nos lleva a un principio de responsabilidad única, tendremos la capacidad de escalar únicamente las facetas que se vean más afectadas en cualquier momento. Por ejemplo, si la faceta (i.e., si el componente) que más peticiones está recibiendo es Data Handler porque hay varios usuarios que están intentando acceder a datos históricos del dispositivo, entonces será posible replicar únicamente esta faceta. Digital Dice también maneja la posibilidad de manejar mediante lo que, en esta tesis, se ha denominado como modelo de causalidad o ¿relaciones de causalidad¿. Por último, se han desarrollado diferentes estrategias y mecanismos para garantizar la alta disponibilidad (High Availability, HA) en los Digital Dice, una propiedad necesaria en redes de IoT y sistemas ciberfísicos, como en modelos de Ciudad Inteligente, Industria 4.0 o Smart Manufacturing. La principal contribución de esta tesis doctoral es el establecimiento de una propuesta para la gestión y el uso de dispositivos IoT o dispositivos ciberfísicos que permitan la interoperabilidad e integración de los mismos en una arquitectura de microservicios, todo ello siguiendo los estándares marcados por la Web of Things del W3C. Esta contribución busca abstraer a los desarrolladores, expertos y usuarios de los dispositivos IoT de los protocolos que estos utilizan para comunicarse entre sí, así como de los protocolos que utilizan para comunicarse con los sistemas que los gestionan.