O auto-escalonamento, às vezes referido como "escalonamento automático", é uma funcionalidade de computação em nuvem que aloca automaticamente recursos computacionais com base na demanda do sistema.
O auto-scaling é usado para garantir que as aplicações tenham os recursos necessários para manter a disponibilidade consistente e atingir metas de desempenho, além de promover o uso eficiente de recursos em nuvem e minimizar os custos em nuvem.
De acordo com um white paper de 2023 da Infosys, as Organizações que migram para a nuvem desperdiçam cerca de 32% do custo da nuvem.1 Devido ao seu foco na utilização eficiente de Recursos, o Auto-Scaling é um componente útil em uma prática bem-sucedida de FinOps.
Quando as organizações configuram a infraestrutura de nuvem, elas fornecem recursos de acordo com as necessidades de recursos de computação, armazenamento e rede. Mas a demanda flutua, digamos, com picos ou quedas no tráfego de rede ou uso de aplicativos. As funcionalidades de auto escala permitem ajustar a infraestrutura automaticamente para acompanhar a demanda em tempo real, com base em métricas como uso da CPU ou disponibilidade de banda, sem necessidade de intervenção humana.
O Auto-Scaling pode ser usado para otimizar a alocação de Recursos por meio de diversos meios. Por exemplo, o dimensionamento preditivo utiliza dados históricos para prever a demanda futura. Ou o dimensionamento dinâmico, que reage em tempo real às necessidades de recursos, conforme as políticas de auto scaling da organização.
As políticas de auto-scaling automatizam os ciclos de vida de instâncias de computação em nuvem, iniciando e encerrando virtual machines conforme necessário para ajudar na demanda de recursos. O auto-scaling é frequentemente usado em conjunto com o balanceamento de carga elástico para aproveitar totalmente os recursos de nuvem disponíveis.
Embora o auto-scaling esteja relacionado ao balanceamento de carga, ele não se trata exatamente da mesma coisa. Ambos os processos afetam a alocação de recursos de back-end e são usados para otimizar o desempenho e evitar o excesso de provisionamento. Eles são frequentemente usados juntos.
Os balanceadores de carga distribuem o tráfego de entrada entre vários servidores para reduzir a carga em qualquer servidor específico. Os balanceadores de carga frequentemente oferecem recursos como verificações de integridade, que ajudam a direcionar o tráfego para longe de instâncias não saudáveis e em direção às saudáveis. Equilibrar a carga de tráfego ajuda a melhorar o desempenho das aplicações em um ambiente de nuvem.
O auto-scaling, por outro lado, ajusta a capacidade do sistema conforme a demanda, garantindo desempenho constante e evitando superdimensionamento dos recursos (ou seja, usando apenas o necessário). O auto-scaling adiciona novos servidores ou instâncias de computação (ou os encerra) de acordo com a demanda de recursos e as políticas de auto-scaling que uma organização estabeleceu.
A maioria dos fornecedores de nuvem, como IBM Cloud, Amazon Web Services (às vezes chamado AWS Cloud), Microsoft Azure e Oracle Cloud Infrastructure oferecem serviços de auto-scaling em suas plataformas de nuvem. Esses serviços podem ajudar as organizações a configurar políticas de auto-scaling para atender às necessidades e objetivos de computação em nuvem da organização.
Diferentes provedores e plataformas oferecem funcionalidades, recursos e preços distintos, e as organizações contam com diferentes estruturas e casos de uso, mas, em geral, o auto-scaling funciona da seguinte forma:
O processo começa com uma configuração de lançamento, ou implementação básica, onde um tipo de instância (ou tipos) é implementado com uma capacidade específica e funcionalidades de desempenho. Essa implementação geralmente é feita usando chamadas de API e infraestrutura como código (IaC), um processo que aproveita o código para provisionar e configurar elementos da infraestrutura de TI de acordo com especificações predefinidas.
As organizações determinam a capacidade desejada e que tipo de atributos a instância precisa com base na carga de trabalho esperada para essa instância. Ao configurar uma política de auto-scaling, as organizações podem definir destinos e limites para computação, armazenamento ou uso de rede. Quando esses limites são atingidos, uma ação previamente definida é acionada automaticamente para atender à demanda atual de recursos com mais precisão. Se desejado, é possível configurar as políticas para que notificações sejam enviadas sempre que uma ação de scaling for iniciada.
As organizações também podem configurar grupos de instâncias que mantêm um número mínimo ou máximo de instâncias para cargas de trabalho específicas, ou agrupar diferentes tipos de instâncias para lidar com diferentes tipos de cargas de trabalho. Os tipos de instância incluem:2
Os tipos de instância de propósito geral são projetados para uma variedade de cargas de trabalho, incluindo servidores web, bancos de dados pequenos e ambientes de desenvolvimento e teste.
Essas instâncias são otimizadas para cargas de trabalho com alta demanda computacional, como computação de alto desempenho, processamento em lote e modelagem científica. Essas instâncias maximizam a capacidade de processamento utilizando GPU e CPUs com alto número de núcleos.
Essas instâncias de alta memória são otimizadas para cargas de trabalho intensivas em memória, como bancos de dados de alto desempenho, caches distribuídos em memória e processamento de dados em tempo real, e análise de big data.
Essas instâncias são otimizadas para cargas de trabalho com alta demanda de armazenamento, como big data, data warehousing e processamento de logs. Elas utilizam cache de alta capacidade e unidade de estado sólido (SSD) para lidar com as operações intensas de leitura e escrita dessas cargas de trabalho.
Grupos de auto-scaling com tipos variados de instância permitem que as equipes de CloudOps e DevOps atendam às demandas de recursos com mais precisão e eficiência. Por exemplo, se as necessidades de banda estiverem atendidas, mas o uso de CPU ultrapassar o limite definido nas políticas de auto-scaling, o sistema poderá ativar mais instâncias voltadas para processamento. Enquanto isso, as instâncias dedicadas a lidar com o tráfego de rede permanecem como estão.
Depois que as equipes entenderem a demanda da carga de trabalho, elas poderão até criar modelos de configuração de inicialização para novas instâncias. Esses modelos definem o tipo de instância, parâmetros de configuração e outras políticas para a inicialização de novas instâncias e como elas contribuem para o ambiente em nuvem como um todo. Isso permite que as organizações automatizem totalmente os ciclos de vida de virtual machines.
Existem alguns tipos diferentes de escalonamento, assim como diferentes métodos de auto scaling:
Escalonamento horizontal, ou "escalonamento", implica adicionar mais máquinas ou nós a um ambiente de computação em nuvem. Você também pode dimensionar, reduzindo o número de nós no ambiente.
Escalonamento vertical, ou "escalonamento", é o processo de adicionar mais energia RAM, CPU, armazenamento, por instância a nós existentes em seu ambiente de computação em nuvem atual.
As políticas de auto-scaling podem ser preditivas, dinâmicas ou agendadas.
Políticas preditivas de expansão usam inteligência artificial (IA) e aprendizado de máquina para prever necessidades futuras de recursos antes que ocorram com base na utilização histórica.
Por exemplo, uma política preditiva de auto-scaling pode identificar a probabilidade de aumento do tráfego web para uma empresa de comércio eletrônico antes da temporada de compras de fim de ano. Pode ser ampliado ou aumentado de acordo com a política estabelecida. Essa abordagem pode ajudar a minimizar proativamente a latência e o downtime da rede.
Políticas de dimensionamento dinâmico reagem às necessidades de recursos no momento em que surgem, ajustando a alocação com base no uso em tempo real. Com uma política de dimensionamento dinâmico, as organizações podem enviar mais recursos a um nó ou grupo de auto scaling específico. Também é possível iniciar novas instâncias automaticamente quando um limite específico, como a porcentagem de uso de CPU, for atingido.
Por exemplo, se uma organização estiver executando uma aplicação web que consome recursos significativos em um cronograma irregular, uma política de escalonamento dinâmico poderia ser usada para ajustar a disponibilidade de recursos conforme necessário. O escalonamento dinâmico frequentemente é acompanhado por um período de "cooldown", no qual os recursos adicionais permanecem disponíveis no caso de haver picos de tráfego adicionais.
As políticas de auto-scaling agendadas alocam recursos de acordo com uma programação predeterminada. Por exemplo, se uma organização sabe que o tráfego ou a demanda de recursos é muito maior nas noites do que pela manhã, uma política de auto-scaling pode ser definida para acomodar essa demanda.
Quando implementada de forma eficaz, a auto-scaling pode desempenhar um papel significativo na otimização do ambiente de computação em nuvem de uma organização e na redução dos custos gerais de nuvem.
Ao estabelecer políticas robustas de auto-scaling, as organizações podem reduzir sua dependência de provisionamento manual e garantir um desempenho de sistema mais consistente.
O auto-escalonamento permite que um ambiente em nuvem reaja em tempo real à demanda de recursos sem a necessidade de intervenção humana. Isso é mais eficiente do que o dimensionamento manual. Ele ajuda a reduzir o desgaste dos funcionários, melhora a consistência da configuração e do provisionamento e libera o tempo dos funcionários para tarefas mais valiosas.
O auto-scaling permite que as organizações expandam seu ambiente e recursos de computação em nuvem de forma mais integrada, sem a necessidade de designar pessoal adicional para monitorar e provisionar recursos.
Ao garantir que um ambiente de nuvem tenha os recursos de computação, rede e armazenamento necessários, independentemente da atividade ou demanda, o auto-scaling ajuda a manter o desempenho consistente e confiável dos serviços de nuvem.
Um desempenho de rede e aplicativo Web mais consistente significa um nível de serviço mais consistente para o usuário.
Ao depender da provisionamento manual de recursos, as organizações frequentemente fazem superprovisionamento como precaução, apenas para garantir que recursos estejam disponíveis para períodos de pico de demanda. Ao usar uma plataforma que possa dimensionar automaticamente os recursos de computação, rede e armazenamento para atender à demanda em tempo real, as organizações podem evitar o excesso de provisionamento. Essa abordagem garante que eles usem apenas o que precisam, resultando em uma conta de nuvem mais baixa e maior ROI.
Crie sua conta sem custo da IBM® Cloud e acesse mais de 40 produtos sempre sem custo, incluindo APIs do IBM® Watson.
A IBM Cloud é uma plataforma de nuvem corporativa projetada para setores regulamentados, fornecendo soluções híbridas, seguras e prontas para IA.
Libere novos recursos e aumente a agilidade dos negócios com os serviços de consultoria em nuvem da IBM. Descubra como cocriar soluções, acelerar a transformação digital e otimizar o desempenho por meio de estratégias de nuvem híbrida e parcerias especializadas.
1 “Cloud cost optimization" , Sarika Nandwani, Infosys.com, 2023.
2 “AWS EC2 instance types: Challenges and best practices for hosting your application in AWS”, Christopher Graham, 23 de agosto de 2023.