1. Introdução
A transição de arquiteturas monolíticas para microsserviços fracamente acoplados em aplicações de nuvem introduz uma complexidade significativa na gestão de recursos. Os desenvolvedores devem decidir quantos recursos de computação (por exemplo, réplicas de contêineres, VMs) alocar para cada microsserviço. Esta decisão impacta criticamente tanto o custo operacional para o desenvolvedor quanto a latência ponta a ponta experimentada pelo utilizador da aplicação. Os métodos tradicionais de escalabilidade automática, como o Horizontal Pod Autoscaling (HPA), escalam cada microsserviço de forma independente com base em métricas locais como a utilização da CPU. No entanto, esta abordagem é subótima porque ignora a natureza interdependente dos microsserviços dentro de um fluxo de trabalho da aplicação. O COLA (Collective Autoscaler) é proposto como uma solução que aloca recursos coletivamente em todos os microsserviços com um objetivo global: minimizar o custo em dólares, garantindo que a latência ponta a ponta da aplicação permaneça abaixo de um alvo especificado.
2. O Problema da Escalabilidade Automática Independente
A escalabilidade automática padrão da indústria atual opera de forma distribuída, por microsserviço. Cada serviço aciona ações de escalabilidade (adicionando/removendo VMs ou pods) quando a sua própria utilização de recursos (CPU, memória) ultrapassa um limiar. A falha fundamental é que esta visão local não leva em conta o desempenho global da aplicação. Melhorar a latência de um microsserviço pode ter um impacto insignificante na latência geral percebida pelo utilizador se outro serviço na cadeia permanecer um gargalo. Isto leva a uma alocação ineficiente de recursos – provisionando em excesso alguns serviços enquanto subprovisiona gargalos críticos – resultando em custos mais elevados sem alcançar o Objetivo de Nível de Serviço (SLO) de latência desejado.
3. COLA: Abordagem de Escalabilidade Automática Coletiva
O COLA reformula o problema de escalabilidade automática como um problema de otimização com restrições. Ele substitui múltiplos escaladores automáticos independentes por um único controlador centralizado que tem visibilidade global da topologia e do desempenho dos microsserviços da aplicação.
3.1. Estrutura de Otimização Central
O objetivo é formalizado como:
- Objetivo: Minimizar o custo total de computação.
- Restrição: Latência média ou de cauda (p.ex., p95) ponta a ponta da aplicação ≤ Latência Alvo.
- Variáveis de Decisão: Número de VMs (ou réplicas) alocadas a cada microsserviço $i$, denotado como $n_i$.
Este é um problema de otimização não linear e complexo porque a relação entre $n_i$ e a latência ponta a ponta não é direta e depende dos padrões de carga de trabalho e da comunicação entre serviços.
3.2. Processo de Busca Offline
Resolver esta otimização online é impraticável devido ao tempo necessário para provisionamento e estabilização do desempenho. Portanto, o COLA emprega um processo de busca offline:
- Aplicação da Carga de Trabalho: Aplica uma carga de trabalho representativa à aplicação.
- Identificação do Gargalo: Identifica o microsserviço mais congestionado (maior aumento na utilização da CPU sob carga).
- Alocação de Recursos via Problema do Bandido: Para o serviço gargalo, determina o número ótimo de VMs usando uma formulação de bandido multi-braço. A função de "recompensa" equilibra a melhoria da latência contra o aumento do custo.
- Iteração: Repete os passos 2-3 para o próximo microsserviço mais congestionado até que o alvo de latência global seja atingido.
- Geração da Política: O resultado é uma política de escalabilidade (um mapeamento das características da carga de trabalho para alocações de recursos) que pode ser implantada online.
O COLA pode interpolar entre cargas de trabalho conhecidas e recuar para escaladores automáticos padrão se confrontado com um padrão de carga de trabalho não visto.
4. Detalhes Técnicos & Formulação Matemática
O problema central de otimização pode ser representado abstratamente como:
$$\min_{\{n_i\}} \sum_{i=1}^{M} C_i(n_i)$$ $$\text{sujeito a: } L_{e2e}(\{n_i\}, \lambda) \leq L_{target}$$ $$n_i \in \mathbb{Z}^+$$ Onde:
- $M$: Número de microsserviços.
- $n_i$: Número de unidades de recursos (por exemplo, VMs) para o microsserviço $i$.
- $C_i(n_i)$: Função de custo para o microsserviço $i$ com $n_i$ unidades.
- $L_{e2e}$: Função de latência ponta a ponta, dependente de todos os $n_i$ e da intensidade da carga de trabalho $\lambda$.
- $L_{target}$: O SLO de latência desejado.
5. Resultados Experimentais & Avaliação
O COLA foi rigorosamente avaliado contra vários escaladores automáticos de referência (baseados em utilização e baseados em ML) no Google Kubernetes Engine (GKE).
5.1. Configuração Experimental
- Aplicações: 5 aplicações de microsserviços de código aberto (por exemplo, Simple WebServer, BookInfo, Online Boutique).
- Plataformas: GKE Standard (nós geridos pelo utilizador) e GKE Autopilot (infraestrutura gerida pelo fornecedor).
- Referências: HPA padrão (baseado em CPU), escaladores automáticos avançados baseados em ML.
- Cargas de Trabalho: 63 padrões distintos de carga de trabalho.
- Alvo: Atender a um SLO de latência mediana ou de cauda (por exemplo, p95) especificado.
5.2. Métricas de Desempenho Principais
Alcance do SLO
53/63
Cargas de trabalho onde o COLA atingiu o alvo de latência.
Redução Média de Custo
19.3%
Comparado ao próximo escalador automático mais barato.
Política Mais Rentável
48/53
O COLA foi o mais barato para 48 das 53 cargas de trabalho bem-sucedidas.
Optimalidade em Aplicações Pequenas
~90%
Para aplicações menores onde uma busca exaustiva foi possível, o COLA encontrou a configuração ótima em ~90% dos casos.
5.3. Resumo dos Resultados
Os resultados demonstram a vantagem significativa do COLA. Ele consistentemente alcançou o SLO de latência desejado onde outros falharam, e fez isso a um custo substancialmente menor. As economias de custo foram tão pronunciadas que o "custo de treino" da execução da busca offline do COLA foi recuperado em poucos dias de operação. No GKE Autopilot, os benefícios do COLA foram ainda mais evidentes, pois ele navegou efetivamente na abstração gerida pelo fornecedor para minimizar custos.
Descrição do Gráfico (Imaginado): Um gráfico de barras provavelmente mostraria "Custo por Pedido Bem-Sucedido" ou "Custo Total do Cluster" no eixo Y, com diferentes escaladores automáticos (COLA, HPA, ML-A) no eixo X. A barra do COLA seria significativamente mais baixa. Um segundo gráfico poderia mostrar "Taxa de Violação do SLO de Latência", onde a barra do COLA se aproxima de zero enquanto outras mostram taxas de violação mais altas.
6. Estrutura de Análise & Caso de Exemplo
Perspetiva do Analista: Uma Desconstrução em Quatro Passos
Insight Central: O avanço fundamental do artigo não é um algoritmo novo e sofisticado, mas uma mudança crítica de perspetiva: tratar toda a aplicação de microsserviços como um único sistema a ser otimizado, não como uma coleção de partes independentes. Isto é análogo à mudança na visão computacional trazida por modelos como o CycleGAN (Zhu et al., 2017), que foi além da tradução de imagens emparelhadas considerando a consistência cíclica de todo o domínio de transformação. O COLA aplica um princípio similar de "consistência global" à gestão de recursos.
Fluxo Lógico: O argumento é convincentemente simples: 1) Ótimos locais (escalabilidade por serviço) somam-se a uma ineficiência global. 2) Portanto, use um objetivo global (custo) com uma restrição global (latência ponta a ponta). 3) Como resolver isto online é muito lento, resolva offline através de busca e implante a política. A elegância está em usar o problema do bandido para tornar a busca pela alocação ótima do gargalo eficiente, uma técnica apoiada por extensa pesquisa em aprendizagem por reforço para otimização de sistemas (por exemplo, trabalho do RISELab da UC Berkeley).
Pontos Fortes & Fraquezas: Pontos Fortes: Os resultados empíricos são excelentes – uma redução de custo de 19.3% é um número de nível de diretoria. A abordagem offline é pragmática, evitando instabilidade em tempo de execução. A estrutura é agnóstica à plataforma. Fraquezas: O calcanhar de Aquiles é a dependência de cargas de trabalho offline representativas. Em aplicações em rápida evolução ou sob eventos de tráfego "cisne negro", a política pré-computada pode estar obsoleta ou ser catastrófica. O recuo do artigo para escaladores automáticos padrão é um penso rápido, não uma cura, para este problema de robustez. Além disso, a complexidade da busca provavelmente escala mal com o número de microsserviços, potencialmente limitando o seu uso em aplicações extremamente grandes e complexas.
Insights Acionáveis: Para arquitetos de nuvem, a mensagem é clara: parem de definir limiares de CPU isoladamente. Invistam em construir ou adotar observabilidade de desempenho global e um motor de decisão centralizado. Comecem com uma abordagem híbrida: usem a filosofia do COLA para definir cadeias de serviços críticos e aplicar escalabilidade coletiva lá, enquanto deixam serviços menos críticos e independentes no HPA tradicional. O ROI, como mostrado, pode ser rápido. Os fornecedores de nuvem devem tomar nota; ferramentas como o GKE Autopilot precisam de tais camadas de orquestração inteligentes para realmente cumprir a promessa de infraestrutura "gerida".
7. Perspectivas de Aplicação & Direções Futuras
Os princípios por trás do COLA têm ampla aplicabilidade além da escalabilidade básica de VMs:
- Escalabilidade Multi-Recurso & Heterogênea: Versões futuras poderiam decidir coletivamente sobre o tamanho da VM (otimizada para memória vs. computação), alocação de GPU, e até mesmo colocação entre zonas de disponibilidade ou fornecedores de nuvem para custo e resiliência.
- Integração com Service Meshes: Acoplar o COLA com um service mesh (como o Istio) forneceria telemetria mais rica (rastreamento ao nível do pedido, gráficos de dependência) e permitiria até mesmo o controlo direto sobre o encaminhamento de tráfego e circuit breaking como parte da otimização.
- Adaptação Online & Meta-Aprendizagem: A principal fronteira de investigação é superar a limitação offline. Técnicas de meta-aprendizagem poderiam permitir que o COLA adaptasse rapidamente a sua política online com base em feedback em tempo real, ou explorasse com segurança novas configurações durante períodos de baixo tráfego.
- Objetivos de Computação Verde: O objetivo de otimização poderia ser estendido para minimizar a pegada de carbono ou o consumo de energia, alinhando-se com iniciativas de computação sustentável, incorporando dados de fontes como o projeto Cloud Carbon Footprint.
- Mercado para Políticas: Para padrões comuns de aplicação (por exemplo, comércio eletrónico, streaming de media), políticas do COLA pré-otimizadas poderiam ser partilhadas ou vendidas, reduzindo a necessidade de execuções de treino individuais.
8. Referências
- 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). (Exemplo de RL avançado relevante para adaptação online).
- Cloud Carbon Footprint. (n.d.). An open source tool to measure and visualize the carbon footprint of cloud usage. Retrieved from 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).