1. Introduction
Le passage des architectures monolithiques aux microservices faiblement couplés dans les applications cloud introduit une complexité significative dans la gestion des ressources. Les développeurs doivent décider combien de ressources de calcul (par exemple, répliques de conteneurs, machines virtuelles) allouer à chaque microservice. Cette décision impacte de manière critique à la fois le coût opérationnel pour le développeur et la latence bout en bout perçue par l'utilisateur de l'application. Les méthodes traditionnelles de mise à l'échelle automatique, telles que le Horizontal Pod Autoscaling (HPA), mettent à l'échelle chaque microservice indépendamment en fonction de métriques locales comme l'utilisation du CPU. Cependant, cette approche est sous-optimale car elle ignore la nature interdépendante des microservices au sein d'un flux de travail applicatif. COLA (Collective Autoscaler) est proposé comme une solution qui alloue collectivement des ressources à travers tous les microservices avec un objectif global : minimiser le coût financier tout en garantissant que la latence bout en bout de l'application reste inférieure à une cible spécifiée.
2. Le problème de la mise à l'échelle automatique indépendante
La mise à l'échelle automatique standard de l'industrie fonctionne actuellement de manière distribuée, par microservice. Chaque service déclenche des actions de mise à l'échelle (ajout/suppression de machines virtuelles ou de pods) lorsque sa propre utilisation des ressources (CPU, mémoire) dépasse un seuil. Le défaut fondamental est que cette vue locale ne tient pas compte de la performance globale de l'application. Améliorer la latence d'un microservice peut avoir un impact négligeable sur la latence globale perçue par l'utilisateur si un autre service de la chaîne reste un goulot d'étranglement. Cela conduit à une allocation inefficace des ressources – sur-provisionnant certains services tout en sous-provisionnant les goulots d'étranglement critiques – résultant en des coûts plus élevés sans atteindre l'objectif de niveau de service (SLO) de latence souhaité.
3. COLA : Approche de mise à l'échelle automatique collective
COLA reformule le problème de mise à l'échelle automatique comme un problème d'optimisation sous contraintes. Il remplace plusieurs autoscalers indépendants par un contrôleur unique et centralisé qui a une visibilité globale sur la topologie et la performance des microservices de l'application.
3.1. Cadre d'optimisation central
L'objectif est formalisé comme suit :
- Objectif : Minimiser le coût total de calcul.
- Contrainte : Latence moyenne ou en queue de distribution bout en bout de l'application ≤ Latence Cible.
- Variables de décision : Nombre de machines virtuelles (ou répliques) allouées à chaque microservice $i$, noté $n_i$.
Il s'agit d'un problème d'optimisation non linéaire complexe car la relation entre $n_i$ et la latence bout en bout n'est pas directe et dépend des modèles de charge de travail et de la communication inter-services.
3.2. Processus de recherche hors ligne
Résoudre cette optimisation en ligne est impraticable en raison du temps requis pour le provisionnement et la stabilisation des performances. Par conséquent, COLA emploie un processus de recherche hors ligne :
- Application de la charge de travail : Appliquer une charge de travail représentative à l'application.
- Identification du goulot d'étranglement : Identifier le microservice le plus congestionné (plus grande augmentation de l'utilisation du CPU sous charge).
- Allocation de ressources via un problème de bandit : Pour le service goulot d'étranglement, déterminer le nombre optimal de machines virtuelles en utilisant une formulation de bandit multi-bras. La fonction de "récompense" équilibre l'amélioration de la latence contre l'augmentation du coût.
- Itération : Répéter les étapes 2-3 pour le microservice le plus congestionné suivant jusqu'à ce que l'objectif de latence global soit atteint.
- Génération de politique : Le résultat est une politique de mise à l'échelle (une correspondance entre les caractéristiques de la charge de travail et les allocations de ressources) qui peut être déployée en ligne.
COLA peut interpoler entre des charges de travail connues et revenir aux autoscalers par défaut s'il est confronté à un modèle de charge de travail inconnu.
4. Détails techniques & Formulation mathématique
Le problème d'optimisation central peut être représenté abstraitement comme suit :
$$\min_{\{n_i\}} \sum_{i=1}^{M} C_i(n_i)$$ $$\text{sous contrainte : } L_{e2e}(\{n_i\}, \lambda) \leq L_{target}$$ $$n_i \in \mathbb{Z}^+$$ Où :
- $M$ : Nombre de microservices.
- $n_i$ : Nombre d'unités de ressources (par exemple, machines virtuelles) pour le microservice $i$.
- $C_i(n_i)$ : Fonction de coût pour le microservice $i$ avec $n_i$ unités.
- $L_{e2e}$ : Fonction de latence bout en bout, dépendante de tous les $n_i$ et de l'intensité de la charge de travail $\lambda$.
- $L_{target}$ : Le SLO de latence souhaité.
5. Résultats expérimentaux & Évaluation
COLA a été rigoureusement évalué contre plusieurs autoscalers de référence (basés sur l'utilisation et basés sur le ML) sur Google Kubernetes Engine (GKE).
5.1. Configuration expérimentale
- Applications : 5 applications microservices open source (par exemple, Simple WebServer, BookInfo, Online Boutique).
- Plateformes : GKE Standard (nœuds gérés par l'utilisateur) et GKE Autopilot (infrastructure gérée par le fournisseur).
- Références : HPA standard (basé sur le CPU), autoscalers avancés basés sur le ML.
- Charges de travail : 63 modèles de charge de travail distincts.
- Cible : Atteindre un SLO de latence médiane ou en queue de distribution (par exemple, p95) spécifié.
5.2. Métriques de performance clés
Atteinte du SLO
53/63
Charges de travail pour lesquelles COLA a atteint la cible de latence.
Réduction moyenne des coûts
19,3%
Comparé à l'autoscaler le moins cher suivant.
Politique la plus rentable
48/53
COLA était le moins cher pour 48 des 53 charges de travail réussies.
Optimalité sur les petites applications
~90%
Pour les applications plus petites où une recherche exhaustive était possible, COLA a trouvé la configuration optimale dans ~90% des cas.
5.3. Résumé des résultats
Les résultats démontrent l'avantage significatif de COLA. Il a systématiquement atteint le SLO de latence souhaité là où d'autres ont échoué, et ce à un coût substantiellement inférieur. Les économies de coûts étaient si prononcées que le "coût d'entraînement" de l'exécution de la recherche hors ligne de COLA a été récupéré en quelques jours d'opération. Sur GKE Autopilot, les avantages de COLA étaient encore plus apparents, car il a navigué efficacement dans l'abstraction gérée par le fournisseur pour minimiser les coûts.
Description du graphique (imaginaire) : Un diagramme en barres montrerait probablement le "Coût par requête réussie" ou le "Coût total du cluster" sur l'axe Y, avec différents autoscalers (COLA, HPA, ML-A) sur l'axe X. La barre de COLA serait significativement plus basse. Un deuxième graphique pourrait montrer le "Taux de violation du SLO de latence", où la barre de COLA approcherait de zéro tandis que d'autres montreraient des taux de violation plus élevés.
6. Cadre d'analyse & Exemple de cas
Perspective de l'analyste : Une déconstruction en quatre étapes
Idée centrale : La percée fondamentale de l'article n'est pas un nouvel algorithme sophistiqué, mais un changement de perspective critique : traiter l'ensemble de l'application microservices comme un système unique à optimiser, et non comme une collection de parties indépendantes. Cela est analogue au changement dans la vision par ordinateur apporté par des modèles comme CycleGAN (Zhu et al., 2017), qui est allé au-delà de la traduction d'images appariées en considérant la cohérence cyclique de l'ensemble du domaine de transformation. COLA applique un principe similaire de "cohérence globale" à la gestion des ressources.
Flux logique : L'argument est d'une simplicité convaincante : 1) Les optima locaux (mise à l'échelle par service) se somment en une inefficacité globale. 2) Par conséquent, utiliser un objectif global (coût) avec une contrainte globale (latence bout en bout). 3) Puisque résoudre ceci en ligne est trop lent, le résoudre hors ligne via une recherche et déployer la politique. L'élégance réside dans l'utilisation du problème de bandit pour rendre la recherche de l'allocation optimale du goulot d'étranglement efficace, une technique soutenue par des recherches approfondies en apprentissage par renforcement pour l'optimisation des systèmes (par exemple, les travaux du RISELab de UC Berkeley).
Forces & Faiblesses : Forces : Les résultats empiriques sont exceptionnels – une réduction de coût de 19,3% est un chiffre de niveau conseil d'administration. L'approche hors ligne est pragmatique, évitant l'instabilité en temps d'exécution. Le cadre est agnostique de la plateforme. Faiblesses : Le talon d'Achille est la dépendance aux charges de travail représentatives hors ligne. Dans des applications en évolution rapide ou sous des événements de trafic "cygne noir", la politique pré-calculée peut être obsolète ou catastrophique. Le recours de l'article aux autoscalers par défaut est un pansement, pas un remède, pour ce problème de robustesse. De plus, la complexité de la recherche augmente probablement mal avec le nombre de microservices, limitant potentiellement son utilisation dans des applications extrêmement grandes et complexes.
Perspectives actionnables : Pour les architectes cloud, le message est clair : arrêtez de définir des seuils de CPU de manière isolée. Investissez dans la construction ou l'adoption d'une observabilité de performance globale et d'un moteur de décision centralisé. Commencez par une approche hybride : utilisez la philosophie de COLA pour définir les chaînes de services critiques et appliquez-y une mise à l'échelle collective, tout en laissant les services moins critiques et indépendants sur un HPA traditionnel. Le retour sur investissement, comme montré, peut être rapide. Les fournisseurs cloud devraient en prendre note ; des outils comme GKE Autopilot ont besoin de telles couches d'orchestration intelligentes pour vraiment tenir la promesse d'une infrastructure "gérée".
7. Perspectives d'application & Directions futures
Les principes derrière COLA ont une applicabilité large au-delà de la mise à l'échelle basique des machines virtuelles :
- Mise à l'échelle multi-ressources & hétérogène : Les versions futures pourraient décider collectivement de la taille des machines virtuelles (optimisées mémoire vs. calcul), de l'allocation GPU, et même du placement à travers les zones de disponibilité ou les fournisseurs cloud pour le coût et la résilience.
- Intégration avec les mailles de services : Coupler COLA avec une maille de services (comme Istio) fournirait une télémétrie plus riche (traçage au niveau de la requête, graphes de dépendance) et permettrait même un contrôle direct sur le routage du trafic et le circuit breaking dans le cadre de l'optimisation.
- Adaptation en ligne & Méta-apprentissage : La principale frontière de recherche est de surmonter la limitation hors ligne. Des techniques de méta-apprentissage pourraient permettre à COLA d'adapter rapidement sa politique en ligne en fonction des retours en temps réel, ou d'explorer en toute sécurité de nouvelles configurations pendant les périodes de faible trafic.
- Objectifs d'informatique verte : L'objectif d'optimisation pourrait être étendu pour minimiser l'empreinte carbone ou la consommation d'énergie, en s'alignant sur les initiatives d'informatique durable, en incorporant des données provenant de sources comme le projet Cloud Carbon Footprint.
- Marché pour les politiques : Pour les modèles d'application courants (par exemple, e-commerce, streaming média), des politiques COLA pré-optimisées pourraient être partagées ou vendues, réduisant le besoin d'exécutions d'entraînement individuelles.
8. Références
- 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). (Exemple de RL avancé pertinent pour l'adaptation en ligne).
- Cloud Carbon Footprint. (s.d.). An open source tool to measure and visualize the carbon footprint of cloud usage. Récupéré 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).