Avanços em Computação Serverless com Autoscaling
Uma nova abordagem pra melhorar o autoscaling de funções serverless usando aprendizado por reforço.
― 10 min ler
Índice
Computação sem servidor é uma nova forma de rodar aplicações na nuvem sem ter que gerenciar servidores. Com essa abordagem, os desenvolvedores podem focar em escrever código ao invés de se preocupar com a configuração e manutenção de servidores. Uma forma popular de computação sem servidor é a Function-as-a-Service (FaaS), onde as aplicações são divididas em pequenas funções que realizam tarefas específicas. Essas funções rodam em curtos períodos e podem escalar automaticamente conforme a demanda. No entanto, gerenciar quantas dessas funções rodam ao mesmo tempo, chamado de autoscaling, pode ser desafiador.
O autoscaling precisa responder rapidamente às mudanças na demanda dos usuários, garantindo que o sistema funcione de forma eficiente. Métodos tradicionais para autoscaling geralmente requerem que especialistas configurem limites para quando adicionar ou remover instâncias de funções. Esses limites normalmente dependem de medições como uso de CPU e memória. No entanto, definir esses limites pode ser complicado e demorado, causando atrasos e limitando a flexibilidade.
Este artigo examina uma nova forma de lidar com o autoscaling em ambientes sem servidor usando uma técnica chamada Deep Recurrent-Reinforcement Learning (DRL). Esse método tem como objetivo tornar o autoscaling mais adaptável e responsivo às necessidades em tempo real das cargas de trabalho.
O que é Computação Sem Servidor?
A computação sem servidor permite que os desenvolvedores rodem aplicações sem gerenciar a infraestrutura subjacente. Em uma configuração tradicional, os desenvolvedores precisam provisionar servidores, instalar software e manter sistemas. Com a computação sem servidor, essas responsabilidades passam para os provedores de serviços em nuvem. Os usuários pagam apenas pelo que usam, o que pode levar a economias de custo.
A FaaS é a forma mais comum de implementação da computação sem servidor. Ela divide as aplicações em unidades menores chamadas funções, cada uma responsável por um pedaço específico da lógica de negócios. Essas funções rodam em contêineres leves. Elas são sem estado, ou seja, não guardam dados entre as invocações, o que permite que comecem e parem rapidamente.
As plataformas sem servidor oferecem alta elasticidade, o que significa que podem escalar funções para cima ou para baixo com base na demanda. Eventos acionam as funções, como requisições HTTP, mudanças em bancos de dados ou notificações de dispositivos IoT.
Entendendo o Autoscaling
O autoscaling é um recurso importante das arquiteturas sem servidor, permitindo que o sistema responda dinamicamente às flutuações na demanda. Quando o tráfego aumenta, mais instâncias de função podem ser criadas para lidar com a carga extra. Por outro lado, quando o tráfego diminui, instâncias desnecessárias podem ser reduzidas, economizando recursos.
Existem dois tipos principais de autoscaling: vertical e horizontal. O scaling vertical aumenta os recursos de uma instância individual, como adicionar mais CPU ou memória. O scaling horizontal adiciona ou remove instâncias de funções para lidar com a demanda.
A maioria dos provedores de nuvem usa autoscaling baseado em limites, onde o sistema monitora métricas específicas como uso de CPU ou memória. Quando certos critérios são atendidos, como ultrapassar uma porcentagem específica de uso de CPU, novas instâncias são adicionadas ou removidas. Esse método pode ajudar a gerenciar recursos de forma eficaz, mas muitas vezes requer ajustes manuais e conhecimento especializado.
Os Desafios do Autoscaling Tradicional
Os métodos tradicionais de autoscaling enfrentam vários problemas que podem prejudicar o desempenho. Um grande problema é a necessidade de conhecimento especializado para configurar os limites corretamente. Cada aplicação tem requisitos diferentes, o que dificulta encontrar uma solução única que funcione para todos. Isso pode levar a superprovisionamento ou subprovisionamento de recursos.
Outro desafio é que os ambientes em nuvem são dinâmicos e podem mudar rapidamente. As cargas de trabalho podem experimentar picos ou quedas súbitas, dificultando a reação em tempo real de limites fixos. Quando um limite é ultrapassado, pode haver um atraso antes que novas instâncias comecem a rodar, o que pode resultar em desempenho lento ou requisições falhadas.
Os "cold starts", ou o tempo que leva para lançar novas instâncias de função, também podem criar gargalos. Se o sistema não conseguir escalar rápido o suficiente para gerenciar a demanda, os usuários podem enfrentar atrasos. Esses atrasos podem afetar negativamente a satisfação do usuário e o desempenho geral da aplicação.
Aprendizado por Reforço como Solução
O Aprendizado por Reforço (RL) é um tipo de aprendizado de máquina onde um agente aprende a tomar decisões interagindo com um ambiente. O agente toma ações e recebe feedback, chamado recompensas, que guiam suas decisões futuras.
Aplicar RL ao autoscaling pode permitir que o sistema aprenda políticas ótimas para quando adicionar ou remover instâncias de função com base nas condições em tempo real. Essa abordagem pode se adaptar a cargas de trabalho em mudança e ajudar a garantir um gerenciamento eficiente de recursos.
Em particular, Redes Neurais Recorrentes (RNNs) podem ser integradas com RL para lidar com a observabilidade parcial em ambientes complexos. As RNNs podem processar sequências de dados, permitindo que mantenham uma memória de estados e ações anteriores. Essa capacidade pode ser crucial para gerenciar a dependência sequencial das mudanças de carga de trabalho.
A Abordagem Proposta
Este artigo propõe um novo método para autoscaling de funções sem servidor usando um algoritmo de RL recorrente. Nesse método, aproveitamos redes Long Short-Term Memory (LSTM), um tipo de RNN, para capturar as dependências temporais dos padrões de carga de trabalho. Ao modelar o autoscaling como um Processo de Decisão de Markov Parcialmente Observável (POMDP), o método proposto pode lidar melhor com incertezas e se adaptar a cargas de trabalho em mudança.
Arquitetura do Sistema
A arquitetura do sistema proposta consiste em vários componentes-chave:
- OpenFaaS: Um framework sem servidor baseado no Kubernetes, que fornece o ambiente para rodar funções FaaS.
- Prometheus: Uma ferramenta de monitoramento que coleta métricas de desempenho do ambiente sem servidor.
- Agente DRL: Um componente de aprendizado de máquina que aprende decisões de escalonamento ótimas com base nas métricas coletadas.
- Gerador de Carga: Uma ferramenta usada para simular requisições de usuários para testar as capacidades de autoscaling do sistema.
Esses componentes trabalham juntos para monitorar o desempenho do sistema e permitir que o agente DRL tome decisões de escalonamento informadas.
Formulação do Problema
O problema do autoscaling é formulado como um POMDP sem modelo. Ao invés de depender de informações completas sobre o estado do sistema, o agente recebe observações parciais com base nas métricas monitoradas. O agente mantém uma crença sobre o estado do ambiente e toma decisões com base nessas informações.
Essa configuração ajuda a resolver os desafios dos métodos tradicionais de autoscaling, permitindo que o sistema se adapte às mudanças na demanda dos usuários sem requerer ajustes manuais.
RL Recorrente Profunda
A abordagem proposta utiliza um algoritmo de RL específico chamado Proximal Policy Optimization (PPO). Ao integrar redes LSTM na estrutura do PPO, o agente consegue lidar melhor com cargas de trabalho complexas e variáveis ao longo do tempo, mantendo uma memória de ações anteriores.
Durante a fase de treinamento, o agente interage com o ambiente, coleta observações e seleciona ações de acordo com sua política aprendida. Ele avalia os resultados e ajusta seu processo de tomada de decisão com base nas recompensas recebidas.
O agente é treinado por múltiplos episódios, permitindo que aprenda com vários cenários de carga de trabalho e melhore seu desempenho ao longo do tempo. O treinamento envolve utilizar uma abordagem de linha de base, que se mostrou eficaz em tarefas de autoscaling, para avaliar o desempenho do método proposto.
Avaliação de Desempenho
A eficácia do agente LSTM-PPO proposto é avaliada em relação a métodos tradicionais de autoscaling, incluindo autoscaling baseado em limites de CPU e escalonamento por requisição por segundo (rps). Vários testes são realizados usando uma função de multiplicação de matrizes para simular cargas de trabalho.
Configuração Experimental
O ambiente experimental é um cluster multi-nó implantado em uma plataforma de nuvem, que fornece a infraestrutura necessária para os testes. O Prometheus é usado para monitorar as métricas de desempenho, e o gerador de carga cria cargas de trabalho simuladas para avaliar a escalabilidade das funções.
O agente é treinado por um número definido de episódios, durante os quais registra recompensas com base em suas ações. Após o treinamento, o agente é testado contra as políticas de linha de base para avaliar seu desempenho em condições variadas.
Resultados
Os resultados demonstram que o agente LSTM-PPO supera métodos tradicionais em termos de throughput, utilização de recursos e tempo de execução. Especificamente, o agente mostra uma melhoria de 18% em throughput em comparação com a linha de base do PPO e alcança um desempenho significativamente melhor do que abordagens de escalonamento baseadas em limites.
O agente LSTM-PPO se adapta efetivamente às mudanças na carga de trabalho, permitindo gerenciar recursos de forma mais eficiente enquanto minimiza atrasos e garante um serviço de alta qualidade. Esse desempenho indica que integrar redes neurais recorrentes com RL pode melhorar significativamente o autoscaling em ambientes sem servidor.
Conclusão e Trabalhos Futuros
Este artigo apresenta uma nova abordagem para autoscaling de funções sem servidor usando um método de RL recorrente. O agente LSTM-PPO proposto demonstra a capacidade de se adaptar a cargas de trabalho em mudança e tomar decisões de escalonamento informadas com base em observações em tempo real.
Os resultados ilustram melhorias significativas em throughput e eficiência de recursos em comparação com métodos tradicionais de autoscaling. Indo em frente, há várias direções potenciais para futuras pesquisas:
Avaliação mais ampla: O método proposto será testado em uma variedade maior de funções e cargas de trabalho para validar ainda mais sua eficácia em diferentes cenários.
Exploração de Outros Algoritmos: Trabalhos futuros envolverão experimentar com outros algoritmos de RL, como TD3, para melhorar a eficiência de aprendizado e otimizar decisões de escalonamento.
Coleta de Métricas Distribuídas: Implementar uma abordagem distribuída para a coleta de métricas pode resolver gargalos e melhorar a confiabilidade das observações, otimizando ainda mais o desempenho do agente.
Abordando essas áreas, a pesquisa pode contribuir para o desenvolvimento contínuo de soluções de autoscaling mais inteligentes e eficientes para computação sem servidor, melhorando, por fim, a experiência do usuário e o gerenciamento de recursos em ambientes de nuvem.
Título: A Deep Recurrent-Reinforcement Learning Method for Intelligent AutoScaling of Serverless Functions
Resumo: FaaS introduces a lightweight, function-based cloud execution model that finds its relevance in a range of applications like IoT-edge data processing and anomaly detection. While cloud service providers offer a near-infinite function elasticity, these applications often experience fluctuating workloads and stricter performance constraints. A typical CSP strategy is to empirically determine and adjust desired function instances or resources, known as autoscaling, based on monitoring-based thresholds such as CPU or memory, to cope with demand and performance. However, threshold configuration either requires expert knowledge, historical data or a complete view of the environment, making autoscaling a performance bottleneck that lacks an adaptable solution. RL algorithms are proven to be beneficial in analysing complex cloud environments and result in an adaptable policy that maximizes the expected objectives. Most realistic cloud environments usually involve operational interference and have limited visibility, making them partially observable. A general solution to tackle observability in highly dynamic settings is to integrate Recurrent units with model-free RL algorithms and model a decision process as a POMDP. Therefore, in this paper, we investigate model-free Recurrent RL agents for function autoscaling and compare them against the model-free PPO algorithm. We explore the integration of a LSTM network with the state-of-the-art PPO algorithm to find that under our experimental and evaluation settings, recurrent policies were able to capture the environment parameters and show promising results for function autoscaling. We further compare a PPO-based autoscaling agent with commercially used threshold-based function autoscaling and posit that a LSTM-based autoscaling agent is able to improve throughput by 18%, function execution by 13% and account for 8.4% more function instances.
Autores: Siddharth Agarwal, Maria A. Rodriguez, Rajkumar Buyya
Última atualização: 2024-11-11 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2308.05937
Fonte PDF: https://arxiv.org/pdf/2308.05937
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.