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:
- Aplicación de Carga de Trabajo: Aplicar una carga de trabajo representativa a la aplicación.
- Identificación del Cuello de Botella: Identificar el microservicio más congestionado (mayor aumento en la utilización de CPU bajo carga).
- 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.
- Iteración: Repetir los pasos 2-3 para el siguiente microservicio más congestionado hasta que se cumpla el objetivo de latencia global.
- 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.
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
- Sachidananda, V., & Sivaraman, A. (2022). COLA: Collective Autoscaling for Cloud Microservices. arXiv preprint arXiv:2112.14845v3.
- 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).
- Burns, B., Grant, B., Oppenheimer, D., Brewer, E., & Wilkes, J. (2016). Borg, Omega, and Kubernetes. Queue, 14(1), 70–93.
- 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).
- 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/.
- 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).