Tesis "Construcción de sistemas auto-adaptables en la nube mediante patrones dinámicos"
Sustentante: Genaro Juan Sánchez Gallegos
Directores: Dr. José Luis González Compeán, Cinvestav Unidad Tamaulipas; Dr. Jesús Carretero Pérez, Universidad Carlos III de Madrid, España.
Sinodales: Dr. Iván López Arévalo, Cinvestav Unidad Tamaulipas; Dr. Miguel Morales Sandoval, Cinvestav Unidad Tamaulipas; Dr. José Luis González Compeán, Cinvestav Unidad Tamaulipas; Dr. Jesús Carretero Pérez, Universidad Carlos III de Madrid, España; Dr. Ricardo Marcelín Jiménez, UAM Iztapalapa.
Resumen:
Los sistemas auto-adaptables son herramientas clave para que las organizaciones manejen grandes volúmenes de datos mediante el acoplamiento de componentes de procesamiento (aplicaciones, funciones, servicios, etc.). Este tipo de sistema tradicionalmente se construye mediante patrones de diseño arquitectural estáticos, los cuales determinan reglas y restricciones que definen el comportamiento de dichos sistemas. Los patrones se implementan mediante modelos de programación, procesamiento y comunicación, lo cual convierte a los sistemas en piezas de software paralelas y/o distribuidas. Por lo tanto, adicional al modelo arquitectural utilizado, los sistemas auto-adaptables son dotados con estructuras de manejo/ajuste orientadas a permitir a los sistemas a cambiar su comportamiento para hacer frente a un conjunto definido de eventos, los cuales podrían aparecer en tiempo de ejecución en el entorno (infraestructura y/o plataforma) o en las cargas de trabajo (incremento en el número de peticiones, usuarios o aplicaciones). Esto significa que los sistemas auto-adaptables se encuentran limitados tanto por el patrón estático con el que fueron creados como por los componentes que le son agregados a dichos sistemas para hacer frente a eventos. En práctica, los sistemas auto-adaptables básicamente se implementan como soluciones ad hoc preparadas para atender únicamente a los eventos para los que han sido preparados. El proceso de cambio del comportamiento de un sistema en tiempo de ejecución implica la interrupción de la operación de dicho sistema, la construcción de una versión distinta (incluyendo nuevos componentes y/o configuraciones) y su puesta en producción. Esta carencia de generalidad no solo hace que la construcción de sistemas auto-adaptables sea una labor compleja sino que además implica romper la continuidad del procesamiento de datos de dichos sistemas. En este trabajo de tesis se propone el diseño, desarrollo e implementación de un método para la construcción de sistemas auto-adaptables en la nube basados en patrones dinámicos. Los patrones dinámicos se plantean para crear sistemas que se puedan adaptar a eventos que se presenten en tiempo de ejecución, sin que se requiera la detención, suspensión de procesos y relanzamiento de dichos sistemas. En este método, los patrones estáticos se convierten en dinámicos siguiendo las siguientes fases: i) los componentes de múltiples patrones estáticos son clasificados de acuerdo a su cardinalidad y funcionalidad en gestores de entrada, gestores de tareas y gestores de salidas, ii) los componentes clasificados son encapsulados en estructuras genéricas para generar un repositorio de estructuras de patrón, iii) un modelo de construcción recursivo permite acoplar las estructuras disponibles en el repositorio, lo cual resulta en un patrón dinámico usado para crear un sistema auto-adaptable agnóstico de la infraestructura y iv) en tiempo de ejecución, el manejador del patrón dinámico supervisa el comportamiento del sistema creado y realiza intercambios de las estructuras genéricas utilizando como criterio de cambio la cardinalidad y funcionalidad de dichas estructuras. La aplicación de este método resulta en un patrón que se considera dinámico porque reutiliza componentes de múltiples patrones, y puede cambiar estos componentes por otros mejor situados que permitan a un sistema cambiar su comportamiento para hacer frente a eventos en tiempos de ejecución. El método se implantó en la forma de un prototipo funcional que fue evaluado mediante un estudio de caso basado en el procesamiento de imágenes de tomografía, electrocardiogramas (ECG) y estudios de espirometría. La evaluación realizada ha mostrado la efectividad de los patrones dinámicos para crear sistemas auto-adaptables. La evaluación también reveló la eficiencia de los sistemas creados con patrones dinámicos respecto a sistemas de tuberías de procesamiento del estado del arte construidos mediante Jenkins.