Seleccionar idioma

COLA: Escalado Automático Colectivo para Microservicios en la Nube

Análisis de COLA, un nuevo escalador automático para aplicaciones de microservicios que optimiza la asignación de VM globalmente para minimizar costos cumpliendo objetivos de latencia de extremo a extremo.
apismarket.org | PDF Size: 1.6 MB
Calificación: 4.5/5
Tu calificación
Ya has calificado este documento
Portada del documento PDF - COLA: Escalado Automático Colectivo para Microservicios en la Nube

1. Introducción

La transición de arquitecturas monolíticas a microservicios débilmente acoplados en las aplicaciones en la nube introduce una complejidad significativa en la gestión de recursos. Los desarrolladores deben decidir cuántos recursos de cómputo (por ejemplo, réplicas de contenedores, máquinas virtuales) asignar a cada microservicio. Esta decisión impacta críticamente tanto el costo operativo para el desarrollador como la latencia de extremo a extremo experimentada por el usuario de la aplicación. Los métodos tradicionales de escalado automático, como el Escalado Horizontal de Pods (HPA), escalan cada microservicio de forma independiente basándose en métricas locales como la utilización de CPU. Sin embargo, este enfoque es subóptimo porque ignora la naturaleza interdependiente de los microservicios dentro de un flujo de trabajo de aplicación. Se propone COLA (Escalador Automático Colectivo) como una solución que asigna recursos colectivamente en todos los microservicios con un objetivo global: minimizar el costo en dólares mientras se garantiza que la latencia de extremo a extremo de la aplicación se mantenga por debajo de un objetivo específico.

2. El Problema del Escalado Automático Independiente

El escalado automático estándar actual de la industria opera de manera distribuida, por microservicio. Cada servicio activa acciones de escalado (agregar/eliminar VM o pods) cuando su propia utilización de recursos (CPU, memoria) cruza un umbral. El defecto fundamental es que esta visión local no tiene en cuenta el rendimiento global de la aplicación. Mejorar la latencia de un microservicio puede tener un impacto insignificante en la latencia general percibida por el usuario si otro servicio en la cadena sigue siendo un cuello de botella. Esto conduce a una asignación de recursos ineficiente: sobreaprovisionando algunos servicios mientras se subaprovisionan cuellos de botella críticos, lo que resulta en costos más altos sin lograr el Objetivo de Nivel de Servicio (SLO) de latencia deseado.

3. COLA: Enfoque de Escalado Automático Colectivo

COLA replantea el problema del escalado automático como un problema de optimización con restricciones. Reemplaza múltiples escaladores automáticos independientes con un único controlador centralizado que tiene visibilidad global de la topología y el rendimiento de los microservicios de la aplicación.

3.1. Marco de Optimización Central

El objetivo se formaliza como:

  • Objetivo: Minimizar el costo total de cómputo.
  • Restricción: Latencia media o de cola (p. ej., p95) de extremo a extremo de la aplicación ≤ Latencia Objetivo.
  • Variables de Decisión: Número de VM (o réplicas) asignadas a cada microservicio $i$, denotado como $n_i$.

Este es un problema de optimización no lineal complejo porque la relación entre $n_i$ y la latencia de extremo a extremo no es directa y depende de los patrones de carga de trabajo y la comunicación entre servicios.

3.2. Proceso de Búsqueda Offline

Resolver esta optimización en línea es poco práctico debido al tiempo requerido para el aprovisionamiento y la estabilización del rendimiento. Por lo tanto, COLA emplea un proceso de búsqueda offline:

  1. Aplicación de Carga de Trabajo: Aplicar una carga de trabajo representativa a la aplicación.
  2. Identificación del Cuello de Botella: Identificar el microservicio más congestionado (mayor aumento en la utilización de CPU bajo carga).
  3. Asignación de Recursos mediante Problema de Bandido: Para el servicio cuello de botella, determinar el número óptimo de VM utilizando una formulación de bandido multi-brazo. La función de "recompensa" equilibra la mejora de latencia contra el aumento de costo.
  4. Iteración: Repetir los pasos 2-3 para el siguiente microservicio más congestionado hasta que se cumpla el objetivo de latencia global.
  5. Generación de Política: El resultado es una política de escalado (un mapeo de las características de la carga de trabajo a las asignaciones de recursos) que puede implementarse en línea.

COLA puede interpolar entre cargas de trabajo conocidas y recurrir a escaladores automáticos predeterminados si se enfrenta a un patrón de carga de trabajo no visto.

4. Detalles Técnicos y Formulación Matemática

El problema central de optimización se puede representar de forma abstracta como:

$$\min_{\{n_i\}} \sum_{i=1}^{M} C_i(n_i)$$ $$\text{sujeto a: } L_{e2e}(\{n_i\}, \lambda) \leq L_{target}$$ $$n_i \in \mathbb{Z}^+$$ Donde:

  • $M$: Número de microservicios.
  • $n_i$: Número de unidades de recursos (por ejemplo, VM) para el microservicio $i$.
  • $C_i(n_i)$: Función de costo para el microservicio $i$ con $n_i$ unidades.
  • $L_{e2e}$: Función de latencia de extremo a extremo, dependiente de todos los $n_i$ y de la intensidad de la carga de trabajo $\lambda$.
  • $L_{target}$: El SLO de latencia deseado.
El "problema de bandido" en el paso 3 de la búsqueda de COLA implica tratar cada posible asignación de VM para el servicio cuello de botella como un "brazo". Tirar de un brazo corresponde a aprovisionar esa configuración y medir la compensación costo-latencia resultante. Se pueden utilizar algoritmos como el Límite Superior de Confianza (UCB) para explorar y explotar de manera eficiente el espacio de configuración.

5. Resultados Experimentales y Evaluación

COLA fue evaluado rigurosamente frente a varios escaladores automáticos de referencia (basados en utilización y basados en ML) en Google Kubernetes Engine (GKE).

5.1. Configuración Experimental

  • Aplicaciones: 5 aplicaciones de microservicios de código abierto (por ejemplo, Simple WebServer, BookInfo, Online Boutique).
  • Plataformas: GKE Standard (nodos gestionados por el usuario) y GKE Autopilot (infraestructura gestionada por el proveedor).
  • Referencias: HPA estándar (basado en CPU), escaladores automáticos avanzados basados en ML.
  • Cargas de Trabajo: 63 patrones de carga de trabajo distintos.
  • Objetivo: Cumplir un SLO de latencia mediana o de cola (por ejemplo, p95) especificado.

5.2. Métricas Clave de Rendimiento

Cumplimiento del SLO

53/63

Cargas de trabajo donde COLA cumplió el objetivo de latencia.

Reducción de Costo Promedio

19.3%

En comparación con el siguiente escalador automático más barato.

Política Más Rentable

48/53

COLA fue el más barato para 48 de las 53 cargas de trabajo exitosas.

Optimalidad en Apps Pequeñas

~90%

Para aplicaciones más pequeñas donde fue posible una búsqueda exhaustiva, COLA encontró la configuración óptima en ~90% de los casos.

5.3. Resumen de Resultados

Los resultados demuestran la ventaja significativa de COLA. Consistente logró el SLO de latencia deseado donde otros fallaron, y lo hizo a un costo sustancialmente menor. Los ahorros de costos fueron tan pronunciados que el "costo de entrenamiento" de ejecutar la búsqueda offline de COLA se recuperó en pocos días de operación. En GKE Autopilot, los beneficios de COLA fueron aún más evidentes, ya que navegó eficazmente la abstracción gestionada por el proveedor para minimizar costos.

Descripción del Gráfico (Imaginado): Un gráfico de barras probablemente mostraría "Costo por Solicitud Exitosa" o "Costo Total del Clúster" en el eje Y, con diferentes escaladores automáticos (COLA, HPA, ML-A) en el eje X. La barra de COLA sería significativamente más baja. Un segundo gráfico podría mostrar "Tasa de Violación del SLO de Latencia", donde la barra de COLA se acerca a cero mientras que otras muestran tasas de violación más altas.

6. Marco de Análisis y Caso de Ejemplo

Perspectiva del Analista: Una Deconstrucción en Cuatro Pasos

Insight Central: El avance fundamental del artículo no es un algoritmo nuevo y sofisticado, sino un cambio crítico de perspectiva: tratar toda la aplicación de microservicios como un único sistema a optimizar, no como una colección de partes independientes. Esto es análogo al cambio en visión por computadora traído por modelos como CycleGAN (Zhu et al., 2017), que fue más allá de la traducción de imágenes emparejadas al considerar la consistencia cíclica de todo el dominio de transformación. COLA aplica un principio similar de "consistencia global" a la gestión de recursos.

Flujo Lógico: El argumento es convincentemente simple: 1) Los óptimos locales (escalado por servicio) suman una ineficiencia global. 2) Por lo tanto, usar un objetivo global (costo) con una restricción global (latencia de extremo a extremo). 3) Dado que resolver esto en línea es demasiado lento, resolverlo offline mediante búsqueda e implementar la política. La elegancia radica en usar el problema de bandido para hacer eficiente la búsqueda de la asignación óptima del cuello de botella, una técnica respaldada por una extensa investigación en aprendizaje por refuerzo para la optimización de sistemas (por ejemplo, trabajos del RISELab de UC Berkeley).

Fortalezas y Debilidades: Fortalezas: Los resultados empíricos son excepcionales: una reducción de costo del 19.3% es una cifra de nivel de sala de juntas. El enfoque offline es pragmático, evitando inestabilidad en tiempo de ejecución. El marco es independiente de la plataforma. Debilidades: El talón de Aquiles es la dependencia de cargas de trabajo offline representativas. En aplicaciones que evolucionan rápidamente o bajo eventos de tráfico "cisne negro", la política precalculada puede quedar obsoleta o ser catastrófica. El recurso del artículo a los escaladores automáticos predeterminados es un parche, no una cura, para este problema de robustez. Además, la complejidad de la búsqueda probablemente escala mal con el número de microservicios, limitando potencialmente su uso en aplicaciones extremadamente grandes y complejas.

Insights Accionables: Para los arquitectos de la nube, el mensaje es claro: dejen de configurar umbrales de CPU de forma aislada. Inviertan en construir o adoptar observabilidad de rendimiento global y un motor de decisión centralizado. Comiencen con un enfoque híbrido: usen la filosofía de COLA para definir cadenas de servicios críticos y aplicar escalado colectivo allí, mientras dejan servicios menos críticos e independientes en HPA tradicional. El ROI, como se muestra, puede ser rápido. Los proveedores de la nube deben tomar nota; herramientas como GKE Autopilot necesitan tales capas de orquestación inteligente para cumplir verdaderamente la promesa de infraestructura "gestionada".

7. Perspectivas de Aplicación y Direcciones Futuras

Los principios detrás de COLA tienen una amplia aplicabilidad más allá del escalado básico de VM:

  • Escalado Multi-Recurso y Heterogéneo: Futuras versiones podrían decidir colectivamente sobre el tamaño de la VM (optimizado para memoria vs. cómputo), la asignación de GPU, e incluso la ubicación entre zonas de disponibilidad o proveedores de nube por costo y resiliencia.
  • Integración con Mallas de Servicios: Acoplar COLA con una malla de servicios (como Istio) proporcionaría telemetría más rica (trazado a nivel de solicitud, gráficos de dependencia) e incluso permitiría el control directo sobre el enrutamiento de tráfico y el corte de circuito como parte de la optimización.
  • Adaptación en Línea y Meta-Aprendizaje: La principal frontera de investigación es superar la limitación offline. Las técnicas de meta-aprendizaje podrían permitir que COLA adapte rápidamente su política en línea basándose en retroalimentación en tiempo real, o explore de forma segura nuevas configuraciones durante períodos de bajo tráfico.
  • Objetivos de Computación Verde: El objetivo de optimización podría extenderse para minimizar la huella de carbono o el consumo de energía, alineándose con iniciativas de computación sostenible, incorporando datos de fuentes como el proyecto Cloud Carbon Footprint.
  • Mercado de Políticas: Para patrones de aplicación comunes (por ejemplo, comercio electrónico, transmisión de medios), se podrían compartir o vender políticas de COLA pre-optimizadas, reduciendo la necesidad de ejecuciones de entrenamiento individuales.

8. Referencias

  1. Sachidananda, V., & Sivaraman, A. (2022). COLA: Collective Autoscaling for Cloud Microservices. arXiv preprint arXiv:2112.14845v3.
  2. Zhu, J., Park, T., Isola, P., & Efros, A. A. (2017). Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks. Proceedings of the IEEE International Conference on Computer Vision (ICCV).
  3. Burns, B., Grant, B., Oppenheimer, D., Brewer, E., & Wilkes, J. (2016). Borg, Omega, and Kubernetes. Queue, 14(1), 70–93.
  4. Hoffman, M., Shahriari, B., & Aslanides, J. (2020). Addressing Function Approximation Error in Actor-Critic Methods. Proceedings of the 37th International Conference on Machine Learning (ICML). (Ejemplo de RL avanzado relevante para la adaptación en línea).
  5. Cloud Carbon Footprint. (n.d.). An open source tool to measure and visualize the carbon footprint of cloud usage. Recuperado de https://www.cloudcarbonfootprint.org/.
  6. Verma, A., Pedrosa, L., Korupolu, M., Oppenheimer, D., Tune, E., & Wilkes, J. (2015). Large-scale cluster management at Google with Borg. Proceedings of the European Conference on Computer Systems (EuroSys).