Resumen:
Los microservicios han resultado ser un nuevo paradigma de programación adoptado ampliamente durante los últimos años. Consiste en desarrollar una aplicación mediante un conjunto de servicios ligeros e independientes que pueden desplegarse y escalarse en múltiples proveedores de cloud (multicloud). El uso de múltiples proveedores puede suponer una mayor ventaja en términos de coste y disponibilidad, entre otras, pero también conlleva riesgos asociados con la degradación del servicio. Por ello, el uso de políticas de asignación de recursos es importante para mitigar estos inconvenientes.
Este trabajo propone el uso de un algoritmo genético (Non-dominated Sorting Genetic Algorithm II, NSGA-II) para optimizar la asignación de microservicios a máquinas virtuales de cada uno de los proveedores, de forma que se consiga minimizar las siguientes métricas: el coste de despliegue; los tiempos de comunicación entre los microservicos de una misma aplicación debido a despliegues en distintos proveedores de cloud; y el tiempo medio de recuperación, es decir, el tiempo entre la caída y despliegue de una nueva instancia vuelva a estar operativa.
Mediante la simulación de distintos experimentos, hemos probado que la asignación de recursos con NSGA-II obtiene una mejor minimización de los objetivos evaluados junto a una mayor diversidad de soluciones de asignación de recursos, en comparación con un algoritmo voraz. Por tanto, el trabajo concluye que el uso del algoritmo genético (NSGA-II) es adecuado para mejorar la asignación de microservicios y máquinas virtuales en entornos multicloud.