Auto Scaling do Amazon EC2
Guia do usuário

Benefícios do Auto Scaling

A adição do Amazon EC2 Auto Scaling à arquitetura de seu aplicativo é uma maneira de maximizar os benefícios da Nuvem AWS. Quando você usa o Amazon EC2 Auto Scaling, seus aplicativos obtêm os seguintes benefícios:

  • Melhor tolerância a falhas. O Amazon EC2 Auto Scaling pode detectar quando uma instância não está íntegra, encerrá-la e executar uma instância para substituí-la. Você também pode configurar o Amazon EC2 Auto Scaling para usar várias Zonas de disponibilidade. Se uma Zona de disponibilidade se tornar indisponível, o Amazon EC2 Auto Scaling poderá ativar instâncias em outra zona para compensar.

  • Melhor disponibilidade. O Amazon EC2 Auto Scaling ajuda a garantir que seu aplicativo sempre tenha a capacidade certa para lidar com a demanda do tráfego atual.

  • Melhor gerenciamento de custo. O Amazon EC2 Auto Scaling pode aumentar e reduzir dinamicamente a capacidade, conforme necessário. Como você paga pelas instâncias do EC2 que usa, você pode economizar ativando instâncias quando elas são realmente necessárias e encerrando-as quando não são necessárias.

Exemplo: Atendendo a demanda variável

Para demonstrar alguns dos benefícios do Amazon EC2 Auto Scaling, considere um aplicativo web básico em execução na AWS. Esse aplicativo permite que os funcionários pesquisem salas de conferência que podem usar para reuniões. Durante o início e o fim da semana, o uso desse aplicativo é mínimo. Durante o meio da semana, mais funcionários agendam reuniões, de forma que a demanda no aplicativo aumenta significativamente.

O gráfico a seguir mostra quanto da capacidade do aplicativo é usado durante o período de uma semana.


					Um exemplo da demanda da capacidade em um aplicativo.

Tradicionalmente, há duas maneiras de planejar essas alterações na capacidade. A primeira opção é adicionar servidores suficientes para que o aplicativo sempre tenha capacidade suficiente para atender à demanda. A desvantagem dessa opção, no entanto, é que há dias em que o aplicativo não precisa de toda essa capacidade. A capacidade extra permanece não utilizada e, em essência, aumenta o custo de manutenção do aplicativo em execução.


					Um exemplo que mostra como a compra de mais capacidade que a necessária pode ser ineficiente de uma perspectiva de custo.

A segunda opção é ter capacidade suficiente para lidar com a demanda média no aplicativo. Essa opção é mais barata, porque você não está comprando equipamento que usará apenas ocasionalmente. No entanto, você corre o risco de criar uma experiência do cliente insatisfatória quando a demanda no aplicativo exceder sua capacidade.


					Um exemplo que mostra como a compra de menos capacidade do que a necessária pode provocar uma experiência inadequada para o cliente.

Ao adicionar o Amazon EC2 Auto Scaling a esse aplicativo, você tem uma terceira opção disponível. Você pode adicionar novas instâncias ao aplicativo somente quando necessário e encerrá-las quando não forem mais necessárias. Como o Amazon EC2 Auto Scaling usa instâncias do EC2, você só precisa pagar pelas instâncias que usa, quando as usa. Você agora tem uma arquitetura econômica que fornece a melhor experiência ao cliente e, ao mesmo tempo, minimiza os custos.


					Um exemplo que mostra como o Amazon EC2 Auto Scaling pode ajustar a capacidade conforme necessário.

Exemplo: arquitetura do aplicativo Web

Em um cenário comum de aplicativo Web, você pode executar várias cópias de seu aplicativo simultaneamente para cobrir o volume de tráfego de clientes. Essas várias cópias do seu aplicativo são hospedadas em instâncias do EC2 idênticas (servidores de nuvem), cada uma lidando com solicitações de clientes.


					Uma ilustração de um grupo básico do Auto Scaling.

O Amazon EC2 Auto Scaling gerencia a ativação e o encerramento dessas instâncias do EC2 em seu nome. Você define um conjunto de critérios (como um alarme do Amazon CloudWatch) que determinam quando o grupo do Auto Scaling executa ou encerra instâncias do EC2. A adição de grupos do Auto Scaling à sua arquitetura de rede ajuda a tornar seu aplicativo mais altamente disponível e tolerante a falhas.


					Uma ilustração de um grupo básico do Auto Scaling.

Você pode criar quantos grupos do Auto Scaling forem necessários. Por exemplo, você pode criar um grupo do Auto Scaling para cada camada.

Para distribuir o tráfego entre as instâncias em seus grupos do Auto Scaling, você pode inserir um load balancer em sua arquitetura. Para obter mais informações, consulte Usando um load balancer com um grupo do Auto Scaling.

Exemplo: Distribuição de instâncias entre Zonas de disponibilidade

Os recursos da AWS, como instâncias de EC2, são hospedados em datacenters de alta disponibilidade. Para fornecer escalabilidade e confiabilidade adicionais, esses datacenters estão em diferentes locais físicos. As regiões são localizações geográficas grandes e amplamente dispersas. Cada região contém vários locais distintos conhecidos como zonas de disponibilidade, que são feitas para serem isoladas das falhas em outras zonas de disponibilidade. Elas fornecem conectividade de rede de baixa latência e custo reduzido para outras zonas de disponibilidade na mesma região. Para obter mais informações, consulte Regiões e endpoints: Amazon EC2 Auto Scaling no Referência geral do Amazon Web Services.

O Amazon EC2 Auto Scaling permite aproveitar a segurança e a confiabilidade da redundância geográfica abrangendo grupos do Auto Scaling entre várias zonas de disponibilidade dentro de uma região. Quando uma Zona de disponibilidade se torna não saudável ou indisponível, o Auto Scaling ativa novas instâncias em uma Zona de disponibilidade não afetada. Quando a Zona de disponibilidade não saudável retornar para um estado saudável, o Auto Scaling redistribuirá automaticamente as instâncias do aplicativo uniformemente entre todas as Zonas de disponibilidade designadas.

Um grupo do Auto Scaling pode conter instâncias do EC2 em uma ou mais zonas de disponibilidade dentro da mesma região. No entanto, os grupos do Auto Scaling não podem abranger várias regiões.

Para grupos do Auto Scaling em uma VPC, as instâncias do EC2 são ativadas em sub-redes. Você seleciona as sub-redes para suas instâncias do EC2 quando cria ou atualiza o grupo do Auto Scaling. Você pode selecionar uma ou mais sub-redes por Zona de disponibilidade. Para obter mais informações, consulte VPCs e sub-redes no Guia do usuário da Amazon VPC.

Distribuição de instâncias

O Amazon EC2 Auto Scaling tenta distribuir as instâncias uniformemente entre as Zonas de disponibilidade que estão habilitadas para seu grupo do Auto Scaling. O Amazon EC2 Auto Scaling faz isso tentando executar novas instâncias na zona de disponibilidade com o menor número de instâncias. No entanto, se a tentativa falhar, o Amazon EC2 Auto Scaling tentará ativar as instâncias em outra Zona de disponibilidade até obter êxito. Para grupos do Auto Scaling em uma VPC, se houver várias sub-redes em uma zona de disponibilidade, o Amazon EC2 Auto Scaling selecionará uma sub-rede na zona de disponibilidade aleatoriamente.


						Um grupo de Auto Scaling típico que abrange duas zonas de disponibilidade.

Atividades de rebalanceamento

Depois da ocorrência de determinadas ações, o grupo do Auto Scaling pode se tornar desbalanceado entre as zonas de disponibilidade. O Amazon EC2 Auto Scaling compensa rebalanceando as zonas de disponibilidade. As ações a seguir podem levar a atividade de rebalanceamento:

  • Você pode alterar as Zonas de disponibilidade de seu grupo.

  • Você encerra ou desanexa instâncias explicitamente, e o grupo fica desbalanceado.

  • Uma Zona de disponibilidade que tinha capacidade insuficiente se recupera e tem capacidade adicional disponível.

  • Uma Zona de disponibilidade que tinha um preço de mercado spot acima do preço spot do lance agora tem um preço de mercado abaixo do preço de seu lance.

Ao rebalancear, o Amazon EC2 Auto Scaling ativa novas instâncias antes de encerrar as antigas, para que o rebalanceamento não comprometa o desempenho ou a disponibilidade de seu aplicativo.

Como o Amazon EC2 Auto Scaling tenta ativar novas instâncias antes de encerrar as antigas, estar na capacidade máxima especificada ou próximo a ela pode impedir ou parar completamente as atividades de rebalanceamento. Para evitar esse problema, o sistema pode exceder temporariamente a capacidade máxima especificada de um grupo em uma margem de 10% (ou em uma margem de 1 instância, a que for maior) durante uma atividade de rebalanceamento. A margem é estendida somente se o grupo estiver na capacidade máxima ou próximo a ela e precisar de rebalanceamento, seja devido ao rezoneamento solicitado pelo usuário ou para compensar os problemas de disponibilidade da zona. A extensão dura somente pelo tempo necessário para rebalancear o grupo, normalmente alguns minutos.