ProteoA self-adaptive software architecture to support quality attributes in ubiquitous systems
- Guerrero Contreras, Gabriel José
- María José Rodríguez Fortiz Director
- José Luis Garrido Director
Defence university: Universidad de Granada
Fecha de defensa: 06 September 2018
- Pedro Merino Gómez Chair
- Sergio Alonso Burgos Secretary
- Stefano Russo Committee member
- Sergio Fabian Ochoa Committee member
- María Bermúdez Edo Committee member
Type: Thesis
Abstract
Desde que los Sistemas Distribuidos evolucionaron a Sistemas Móviles, la adaptación, específicamente, la auto-adaptación ha sido un requisito fundamental para abordar satisfactoria y eficientemente el desarrollo de sistemas software. Hoy en día, la auto-adaptación es un requisito recurrente en la mayoría de los entornos de computación existentes, primero en Computación Ubicua, posteriormente en el Internet de las Cosas (IoT) y la Computación en la Nube Móvil (MCC). Sin embargo, a pesar de la importancia de este requisito, todavía existe la necesidad de proponer un diseño arquitectónico software para abordarlo de forma apropiada. Mientras que la Arquitectura Orientada a Servicios (SOA) enfatiza la importancia de la autonomía de servicio, la existencia de arquitecturas dinámicas reconfigurables en tiempo de ejecución es todavía un desafío. Con este fin, SOA tiene que ser combinada con métodos y técnicas del campo de la Computación Autonómica, así como de otros estilos y variantes arquitectónicos, como la Arquitectura Dirigida por Eventos (EDA) y Arquitecturas de Microservicios. En este contexto, este trabajo presenta una arquitectura software auto-adaptativa, denomi- nada Proteo. El principal objetivo de Proteo es proporcionar una solución sensible al contexto para soportar atributos de calidad relevantes (específicamente, disponibilidad y fiabilidad) en sistemas dinámicos, aplicando técnicas de replicación y auto-configuración. La arquitectura Proteo está compuesta de tres componentes principales, los cuales están replicados en los nodos que componen la red del sistema distribuido: (1) Subsistema de Monitorización, (2) Servicio de Gestión del Contexto, y (3) Servicio de Gestión de Réplicas. Las responsabilidades de estos componentes están estrechamente relacionadas con las fases del bucle autonómico MAPE-K, de la Computación Autonómica: el Subsistema de Monitorización monitoriza y percibe la información del contexto relacionada con el nodo en el cual se encuentra desplegado; (2) el Servicio de Gestión del Contexto, además de procesar la información recibida por el Subsistema de Monitorización, es responsable de analizarla y decidir cuándo es necesaria una nueva adaptación en el sistema; y el Servicio de Gestión de Réplicas, el cual es el responsable de llegar a un acuerdo con el resto de los Servicios de Gestión de Réplicas desplegados en el sistema para establecer cuáles de las réplicas existentes será activada. Esta coordinación se lleva a cabo utilizando un algoritmo distribuido de elección, dicha elección se basa en una puntuación dinámica obtenida a través de una función de utilidad en tiempo de ejecución. Dicha función de utilidad indica cómo de adecuado es un nodo para alojar una réplica activa de un servicio. En este trabajo, se presenta una revisión de los enfoques actualmente existentes para la provisión de servicios o datos (recursos) en entornos dinámicos. Adicionalmente, Proteo se ha modelado utilizando SysML. Dicho modelo está dividido en: (1) Modelo del Dominio Operacional, (2) Modelo de Información, (3) Modelo Estructural, y (4) Modelo de Comportamiento. Estos cuatro modelos abarcan la definición detallada de los componentes de la arquitectura Proteo, sus relaciones y su comportamiento durante la operación del sistema. Algunas características de Proteo que se pueden destacar son: (1) es reactivo a los cambios del contexto, como por ejemplo las desconexiones de los nodos; (2) usa información local al nodo a través de un enfoque cross-layer para monitorizar la red; (3) utiliza un método heurístico, propuesto en este trabajo, para determinar el nodo más céntrico en la topología de la red basándose en la información de la tabla de ruta del nodo; (4) utiliza una función de utilidad para evaluar cómo de adecuado es un nodo para alojar una réplica del servicio activa, lo que facilita adaptar el criterio de elección y tener en consideración los recursos de los nodos, como la energía, proporcionando así una solución consciente del consumo de recursos. Con respecto a los algoritmos de elección, se han propuesto en este trabajo dos nuevos algoritmos: Consenso y Votación. Estos algoritmos de elección están diseñados para operar en entornos móviles con topologías de red altamente dinámicas y bajo canales de comunicación no fiables. Adicionalmente, entre los enfoques existentes, los algoritmos de elección de Bully, Kordafshair y Vasudevan se han seleccionado e incorporado a Proteo, con el objetivo de comparar y valorar el rendimiento de los dos nuevos algoritmos propuestos con estos algoritmos ya existentes. Para validar y evaluar la propuesta, se ha utilizado el simulador de redes ns-3. A este respecto, Proteo ha sido diseñado e implementado como un nuevo módulo en ns-3, lo cual ha permitido analizar la arquitectura auto-adaptativa en términos de disponibilidad de servicios, fiabilidad del algoritmo de elección, utilización de mensajes de coordinación y vida útil de la red (consumo de energía). El uso de herramientas avanzadas de simulación nos permite entender mejor el comportamiento de la arquitectura propuesta mediante el manejo y evaluación de modelos dinámicos. Finalmente, se introduce brevemente el trabajo que ya está en progreso para continuar desarrollando y extendiendo la arquitectura Proteo. Actualmente existen dos líneas de investigación principales. Por una parte, para abordar la sincronización de las réplicas y la interoperabilidad del sistema se ha diseñado y propuesto una plataforma de servicios. Ésta está diseñada para proporcionar, desde la fase de diseño, una base común para la gestión consistente de recursos en sistemas ubicuos colaborativos. Por otra parte, para abordar la escalabilidad de la propuesta, se ha llevado a cabo un estudio para conocer el número de nodos que Proteo puede gestionar, utilizando el algoritmo de Consenso, sin degradar su rendimiento. Esto es esencial para poder aplicar Proteo en entornos de IoT, los cuales están pensados para soportar un alto número de dispositivos heterogéneos conectados. Además, dicho estudio pretende determinar si la fiabilidad de TCP podría resultar en un mejor funcionamiento del sistema, a pesar de su menor tiempo de respuesta y mayor consumo de ancho de banda en comparación con UDP.