Optimizando Microservicios para un Despliegue en la Nube Sostenible
Un método para equilibrar rendimiento, costo y energía en aplicaciones en la nube.
― 10 minilectura
Tabla de contenidos
- El Desafío de la Sostenibilidad en la Computación en la Nube
- Objetivos de Despliegue Sostenible
- Metodología
- Acciones de Refactorización
- Caso de Estudio: Servicio de Reserva de Boletos de Tren
- Configuración Experimental
- Resultados
- Impacto de la Sostenibilidad en el Rendimiento y Costo
- Variaciones en la Distribución de Energía y Costo
- Cambios en las Soluciones Arquitectónicas
- Conclusión
- Fuente original
- Enlaces de referencia
A medida que las empresas mueven sus aplicaciones a la nube, es importante hacer que estas aplicaciones sean más sostenibles. La Arquitectura de Microservicios, una forma común de construir aplicaciones en la nube, puede ayudar a alcanzar este objetivo. Sin embargo, hacer que estas aplicaciones sean sostenibles a veces puede aumentar los costos y afectar el rendimiento. Así que encontrar un equilibrio entre el uso de energía, costo y rendimiento es una meta clave, pero no es fácil de lograr.
Este artículo habla sobre un nuevo método que ayuda a desplegar microservicios en la nube. Se centra en encontrar las mejores combinaciones de cómo rinde la aplicación, los costos de despliegue y la energía consumida. Usando un método basado en algoritmos genéticos, podemos crear rápidamente varias opciones de despliegue.
Vamos a mostrar la efectividad de este método a través de un caso de estudio específico relacionado con las reservas de boletos de tren.
El Desafío de la Sostenibilidad en la Computación en la Nube
Con el creciente uso de tecnologías digitales, los efectos ambientales de los centros de datos se están volviendo más significativos. La necesidad creciente de poder de cómputo y las demandas energéticas de los centros de datos aumentan su huella de carbono. La computación en la nube es clave para abordar estas necesidades, ya que permite a las empresas mejorar sus capacidades tecnológicas.
La arquitectura de microservicios, que organiza las aplicaciones en servicios más pequeños que se pueden desarrollar y desplegar de forma independiente, se usa comúnmente en entornos de nube. Este enfoque es preferido porque se adapta bien a la naturaleza escalable de la computación en la nube. Sin embargo, al desplegar aplicaciones de microservicios, el Consumo de energía a menudo recibe menos atención que las métricas de rendimiento y los costos de despliegue, que suelen ser priorizados.
El problema de centrarse en el consumo de energía es que añade complejidad a la planificación de los despliegues. Diferentes configuraciones tienen diferentes necesidades energéticas, lo que dificulta evaluar todas las opciones. Sin embargo, para el éxito a largo plazo de la arquitectura de microservicios en la nube, es crucial considerar los compromisos entre rendimiento, costos y uso de energía.
Recientemente, se han desarrollado varios métodos para mejorar la eficiencia energética y reducir costos al desplegar en la nube. Aun así, muchos de estos métodos no consideran los aspectos arquitectónicos, limitando la comprensión de los diseñadores sobre los complejos compromisos que surgen. Esta falta de claridad se intensifica por cómo el comportamiento del usuario afecta el consumo de energía dentro de los microservicios.
Este artículo tiene como objetivo abordar este problema presentando una nueva forma de encontrar soluciones sostenibles para desplegar microservicios en la nube. Específicamente, utilizaremos algoritmos genéticos para crear diversas configuraciones de despliegue haciendo cambios a una arquitectura existente. Este enfoque ofrece a los diseñadores varias opciones que optimizan el rendimiento, los costos y el uso de energía.
Además, estudiaremos cómo interactúan estos elementos analizando cómo varían el uso de energía, los costos y el comportamiento del usuario con diferentes tipos de solicitudes. Finalmente, veremos cómo ocurren los cambios arquitectónicos cuando nos enfocamos en el consumo de energía, identificando modificaciones comunes en contextos donde la energía es una prioridad.
Para ilustrar la aplicación práctica de este enfoque, utilizaremos el caso de estudio del Servicio de Reserva de Boletos de Tren, que está diseñado para representar un escenario del mundo real comúnmente usado en la investigación de microservicios.
Objetivos de Despliegue Sostenible
Nuestro enfoque se centra en varios objetivos clave:
Consumo de Energía: Para estimar la energía total consumida por un sistema, adaptamos modelos existentes que examinan el uso de recursos durante los picos y el tiempo de inactividad. Al enfocarnos principalmente en el uso de CPU, podemos calcular la energía necesaria según el nivel de actividad de los servidores.
Tiempo de Respuesta: Esta es una métrica común utilizada para medir qué tan rápido responde el sistema a las solicitudes. Nuestro objetivo es minimizar este tiempo considerando diferentes tipos de solicitudes y cómo interactúan con el sistema.
Complejidad de Refactorización: Cambiar la arquitectura de software puede involucrar distintos niveles de complejidad. Queremos medir cuán complejo es aplicar diferentes cambios para entender mejor los compromisos.
Costo de Despliegue: El costo de desplegar la arquitectura en un entorno de nube es otro factor esencial a considerar. Esto está estrechamente relacionado con el tipo y la cantidad de servidores utilizados.
Estos objetivos ayudan a formular un despliegue más sostenible de microservicios al equilibrar su rendimiento, costo y eficiencia energética.
Metodología
Nuestro enfoque utiliza algoritmos genéticos, que están inspirados en la selección natural, para explorar diversos despliegues arquitectónicos. Aprovechamos un algoritmo específico, conocido como NSGA-II, que es efectivo para la optimización de múltiples objetivos. El algoritmo evoluciona posibles soluciones a través de procesos similares a la reproducción, combinando soluciones existentes mientras introduce variaciones.
En nuestro contexto, cada posible solución consiste en una serie de acciones que refactorizan la arquitectura-modificaciones que pueden mejorar el rendimiento, reducir costos o disminuir el uso de energía. Este método nos permite encontrar soluciones de despliegue diversas, llevando a una variedad de configuraciones arquitectónicas.
Acciones de Refactorización
Definimos varios tipos de acciones de refactorización que se pueden aplicar a la arquitectura de software:
- Re-desplegar Componente Existente: Mover un componente de un servidor a otro para optimizar la arquitectura en general.
- Reubicar Operación a Componente Existente: Desplazar una tarea específica a un componente ya existente, asegurando un funcionamiento fluido.
- Clonar Nodo: Crear un duplicado de un servidor para mejorar la redundancia y soportar la tolerancia a fallos.
- Mover Operación a Nuevo Componente en Nuevo Nodo: Transferir una tarea a un nuevo componente en un nuevo servidor, lo que requiere una planificación cuidadosa.
- Eliminar Nodo: Eliminar un servidor y mover sus componentes a servidores cercanos para mantener una estructura eficiente.
Cada una de estas acciones afecta de manera diferente el uso de energía, costos y rendimiento del sistema, y nuestro algoritmo evalúa estos efectos al generar nuevas configuraciones.
Caso de Estudio: Servicio de Reserva de Boletos de Tren
Para validar nuestro enfoque, lo aplicamos al caso de estudio del Servicio de Reserva de Boletos de Tren. Esta aplicación web consta de múltiples microservicios y está diseñada para representar un escenario típico encontrado en aplicaciones del mundo real.
La arquitectura de este servicio incluye 40 microservicios, cada uno alojado en su contenedor. Nos enfocamos en algunas acciones comunes del usuario, como iniciar sesión, actualizar detalles del usuario y volver a reservar boletos, para evaluar efectivamente el rendimiento de nuestro método.
Configuración Experimental
Realizamos una serie de experimentos para probar nuestro método. En estos experimentos, comparamos escenarios donde los aspectos de sostenibilidad, particularmente el consumo de energía, se incluyeron como objetivos de optimización contra escenarios donde no lo fueron.
Al realizar varias pruebas, recopilamos datos sobre cómo diferentes configuraciones impactaron el rendimiento, costo y uso de energía. Esto nos ayudó a evaluar la efectividad de nuestro enfoque e identificar los compromisos involucrados al priorizar la sostenibilidad.
Resultados
Los hallazgos de nuestros experimentos brindan valiosas perspectivas sobre la relación entre sostenibilidad y rendimiento de la aplicación. Notablemente, descubrimos que centrarse en el consumo de energía tuvo un impacto significativo en los tiempos de respuesta a través del sistema. Sin embargo, este enfoque no afectó notablemente los costos de despliegue, que es un resultado prometedor para las organizaciones que buscan sostenibilidad sin incurrir en gastos adicionales.
Impacto de la Sostenibilidad en el Rendimiento y Costo
Nuestros resultados indicaron que enfatizar la sostenibilidad, particularmente el consumo de energía, generalmente resultó en una disminución notable en los tiempos de respuesta. Los experimentos demostraron que las soluciones encontradas cuando la energía era un objetivo ofrecieron más opciones en general, implicando que los diseñadores pueden curar de una gama más amplia de despliegues efectivos.
Curiosamente, aunque el rendimiento se vio afectado, los costos de despliegue se mantuvieron relativamente estables. Esto sugiere que las organizaciones pueden perseguir aplicaciones de nube sostenibles sin sacrificar la eficiencia financiera.
Variaciones en la Distribución de Energía y Costo
Al analizar cómo diferentes solicitudes de usuario afectaron el consumo de energía y los costos, observamos que las funcionalidades individuales contribuyeron de diversas maneras. Diferentes acciones de usuario podían cambiar drásticamente la carga total de energía y costo del sistema.
Por ejemplo, en escenarios donde las solicitudes estaban optimizadas, algunas acciones de usuario eran responsables de una mayor parte del consumo total de energía. Estos datos permiten a los diseñadores arquitectónicos tomar decisiones informadas sobre qué aspectos del servicio pueden requerir ajustes para mejorar los resultados de sostenibilidad.
Cambios en las Soluciones Arquitectónicas
También examinamos cómo los tipos de acciones de refactorización utilizadas en el proceso arquitectónico cambiaron al considerar el consumo de energía como un objetivo. Nuestros hallazgos mostraron que acciones específicas, como eliminar nodos de la arquitectura, eran más prevalentes cuando se priorizaba el consumo de energía.
Como resultado, emergieron diferentes patrones arquitectónicos. Esto indica que considerar la sostenibilidad en la fase de diseño puede revelar oportunidades de mejora previamente no vistas y guiar decisiones sobre qué componentes de la arquitectura pueden estar sobreprovisionados o subutilizados.
Conclusión
A través de nuestros esfuerzos, hemos introducido una nueva forma de desplegar microservicios en la nube mientras buscamos sostenibilidad. Usar algoritmos genéticos y un enfoque dirigido nos permite crear una variedad de configuraciones que equilibran efectivamente el rendimiento, los costos y el uso de energía.
Los resultados de nuestro caso de estudio indican que los objetivos de sostenibilidad, particularmente centrarse en el consumo de energía, impactan significativamente el rendimiento mientras tienen un efecto insignificante en los costos. Este trabajo abre nuevas avenidas para la investigación futura, incluyendo probar el enfoque en diferentes contextos y estudiar cómo los cambios en las decisiones de despliegue afectan las interacciones del usuario y la sostenibilidad.
A medida que las organizaciones se enfocan cada vez más en la sostenibilidad en la tecnología, nuestro enfoque proporciona un marco práctico para mejorar la eficiencia energética de las aplicaciones en la nube, ayudando en última instancia en el camino hacia soluciones de computación más amigables con el medio ambiente.
Título: Exploring sustainable alternatives for the deployment of microservices architectures in the cloud
Resumen: As organizations increasingly migrate their applications to the cloud, the optimization of microservices architectures becomes imperative for achieving sustainability goals. Nonetheless, sustainable deployments may increase costs and deteriorate performance, thus the identification of optimal tradeoffs among these conflicting requirements is a key objective not easy to achieve. This paper introduces a novel approach to support cloud deployment of microservices architectures by targeting optimal combinations of application performance, deployment costs, and power consumption. By leveraging genetic algorithms, specifically NSGA-II, we automate the generation of alternative architectural deployments. The results demonstrate the potential of our approach through a comprehensive assessment of the Train Ticket case study.
Autores: Vittorio Cortellessa, Daniele Di Pompeo, Michele Tucci
Última actualización: 2024-02-17 00:00:00
Idioma: English
Fuente URL: https://arxiv.org/abs/2402.11238
Fuente PDF: https://arxiv.org/pdf/2402.11238
Licencia: https://creativecommons.org/licenses/by/4.0/
Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.
Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.