Proteo: a self-adaptive software architecture to support quality attributes in ubiquitous systems
Gabriel José Guerrero Contreras · Dialnet (Universidad de la Rioja) · 2018
Desde que los Sistemas Distribuidos evolucionaron a Sistemas Moviles, la adaptacion, especificamente, la auto-adaptacion ha sido un requisito fundamental para abordar satisfactoria y eficientemente el desarrollo de sistemas software. Hoy en dia, la auto-adaptacion es un requisito recurrente en la mayoria de los entornos de computacion existentes, primero en Computacion Ubicua, posteriormente en el Internet de las Cosas (IoT) y la Computacion en la Nube Movil (MCC). Sin embargo, a pesar de la importancia de este requisito, todavia existe la necesidad de proponer un diseno arquitectonico software para abordarlo de forma apropiada. Mientras que la Arquitectura Orientada a Servicios (SOA) enfatiza la importancia de la autonomia de servicio, la existencia de arquitecturas dinamicas reconfigurables en tiempo de ejecucion es todavia un desafio. Con este fin, SOA tiene que ser combinada con metodos y tecnicas del campo de la Computacion Autonomica, asi como de otros estilos y variantes arquitectonicos, 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 solucion sensible al contexto para soportar atributos de calidad relevantes (especificamente, disponibilidad y fiabilidad) en sistemas dinamicos, aplicando tecnicas de replicacion y auto-configuracion. La arquitectura Proteo esta compuesta de tres componentes principales, los cuales estan replicados en los nodos que componen la red del sistema distribuido: (1) Subsistema de Monitorizacion, (2) Servicio de Gestion del Contexto, y (3) Servicio de Gestion de Replicas. Las responsabilidades de estos componentes estan estrechamente relacionadas con las fases del bucle autonomico MAPE-K, de la Computacion Autonomica: el Subsistema de Monitorizacion monitoriza y percibe la informacion del contexto relacionada con el nodo en el cual se encuentra desplegado; (2) el Servicio de Gestion del Contexto, ademas de procesar la informacion recibida por el Subsistema de Monitorizacion, es responsable de analizarla y decidir cuando es necesaria una nueva adaptacion en el sistema; y el Servicio de Gestion de Replicas, el cual es el responsable de llegar a un acuerdo con el resto de los Servicios de Gestion de Replicas desplegados en el sistema para establecer cuales de las replicas existentes sera activada. Esta coordinacion se lleva a cabo utilizando un algoritmo distribuido de eleccion, dicha eleccion se basa en una puntuacion dinamica obtenida a traves de una funcion de utilidad en tiempo de ejecucion. Dicha funcion de utilidad indica como de adecuado es un nodo para alojar una replica activa de un servicio. En este trabajo, se presenta una revision de los enfoques actualmente existentes para la provision de servicios o datos (recursos) en entornos dinamicos. Adicionalmente, Proteo se ha modelado utilizando SysML. Dicho modelo esta dividido en: (1) Modelo del Dominio Operacional, (2) Modelo de Informacion, (3) Modelo Estructural, y (4) Modelo de Comportamiento. Estos cuatro modelos abarcan la definicion detallada de los componentes de la arquitectura Proteo, sus relaciones y su comportamiento durante la operacion del sistema. Algunas caracteristicas 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 informacion local al nodo a traves de un enfoque cross-layer para monitorizar la red; (3) utiliza un metodo heuristico, propuesto en este trabajo, para determinar el nodo mas centrico en la topologia de la red basandose en la informacion de la tabla de ruta del nodo; (4) utiliza una funcion de utilidad para evaluar como de adecuado es un nodo para alojar una replica del servicio activa, lo que facilita adaptar el criterio de eleccion y tener en consideracion los recursos de los nodos, como la energia, proporcionando asi una solucion consciente del consumo de recursos. Con respecto a los algoritmos de eleccion, se han propuesto en este trabajo dos nuevos algoritmos: Consenso y Votacion. Estos algoritmos de eleccion estan disenados para operar en entornos moviles con topologias de red altamente dinamicas y bajo canales de comunicacion no fiables. Adicionalmente, entre los enfoques existentes, los algoritmos de eleccion 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 disenado e implementado como un nuevo modulo en ns-3, lo cual ha permitido analizar la arquitectura auto-adaptativa en terminos de disponibilidad de servicios, fiabilidad del algoritmo de eleccion, utilizacion de mensajes de coordinacion y vida util de la red (consumo de energia). El uso de herramientas avanzadas de simulacion nos permite entender mejor el comportamiento de la arquitectura propuesta mediante el manejo y evaluacion de modelos dinamicos. Finalmente, se introduce brevemente el trabajo que ya esta en progreso para continuar desarrollando y extendiendo la arquitectura Proteo. Actualmente existen dos lineas de investigacion principales. Por una parte, para abordar la sincronizacion de las replicas y la interoperabilidad del sistema se ha disenado y propuesto una plataforma de servicios. Esta esta disenada para proporcionar, desde la fase de diseno, una base comun para la gestion 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 numero 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 estan pensados para soportar un alto numero de dispositivos heterogeneos conectados. Ademas, dicho estudio pretende determinar si la fiabilidad de TCP podria resultar en un mejor funcionamiento del sistema, a pesar de su menor tiempo de respuesta y mayor consumo de ancho de banda en comparacion con UDP.