Benefícios do Auto Scaling para arquitetura de aplicativos - Amazon EC2 Auto Scaling

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Benefícios do Auto Scaling para arquitetura de aplicativos

Adicionar o Amazon EC2 Auto Scaling à sua arquitetura de aplicativos é uma forma de maximizar os benefícios da nuvem. AWS Quando o Amazon EC2 Auto Scaling é usado, suas aplicações 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, terminá-la e iniciar 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á iniciar instâncias em outra zona para compensar.

  • Melhor disponibilidade. O Amazon EC2 Auto Scaling ajuda a garantir que a aplicação sempre tenha a capacidade certa para lidar com a demanda de tráfego atual.

  • Melhor gerenciamento de custos. 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: atender a demanda variável

Para demonstrar alguns dos benefícios do Amazon EC2 Auto Scaling, considere uma aplicação Web básica em execução na AWS. Essa aplicação 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 dessa aplicação é mínimo. Durante o meio da semana, mais funcionários agendam reuniões, de forma que a demanda sobre a aplicação aumenta significativamente.

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

Um exemplo da demanda da capacidade em uma aplicação.

Tradicionalmente, há duas maneiras de planejar essas alterações na capacidade. A primeira opção é adicionar servidores suficientes para que a aplicação sempre tenha capacidade suficiente para atender à demanda. A desvantagem dessa opção, no entanto, é que há dias em que a aplicação não precisa de toda essa capacidade. A capacidade extra permanece não utilizada e, em essência, aumenta o custo de manutenção da aplicação 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 na aplicação. 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 na aplicação 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 essa aplicação, você passa a ter uma terceira opção disponível. Você pode adicionar novas instâncias à aplicação 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 de aplicação Web

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

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 CloudWatch alarme da Amazon) que determina quando o grupo Auto Scaling inicia ou encerra instâncias do EC2. A adição de grupos do Auto Scaling à sua arquitetura de rede ajuda a tornar a aplicação mais disponível e tolerante a falhas.

Uma arquitetura básica de três camadas com um grupo do Auto Scaling.

Você pode criar tantos grupos do Auto Scaling quanto 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 balanceador de carga em sua arquitetura. Para ter mais informações, consulte Elastic Load Balancing.

Exemplo: distribuir instâncias entre zonas de disponibilidade

As zonas de disponibilidade são locais isolados em uma determinada Região da AWS. Cada região tem várias zonas de disponibilidade, destinadas a fornecer alta disponibilidade para a região. As zonas de disponibilidade são independentes e, portanto, você aumenta a disponibilidade da aplicação quando a projeta para usar várias zonas. Para ter mais informações, consulte Resiliência no Amazon EC2 Auto Scaling.

Uma zona de disponibilidade é identificada pelo Região da AWS código seguido por um identificador de letra (por exemplo,us-east-1a). Se você criar a VPC e as sub-redes em vez de usar a VPC padrão, poderá definir uma ou mais sub-redes em cada zona de disponibilidade. Cada sub-rede deve residir inteiramente dentro de uma zona de disponibilidade e não pode abranger zonas. Para mais informações, consulte Como funciona a Amazon VPC no Manual do usuário da Amazon VPC.

Ao criar um grupo do Auto Scaling, você deve escolher a VPC e as sub-redes nas quais implantará o grupo do Auto Scaling. O Amazon EC2 Auto Scaling cria as instâncias nas sub-redes escolhidas. Assim, cada instância é associada a uma zona de disponibilidade específica escolhida pelo Amazon EC2 Auto Scaling. Quando as instâncias são iniciadas, o Amazon EC2 Auto Scaling tenta distribuí-las uniformemente entre as zonas para garantir alta disponibilidade e confiabilidade.

A imagem a seguir mostra uma visão geral de uma arquitetura de vários níveis distribuída por três zonas de disponibilidade.

Um grupo do Auto Scaling típico abrangendo três zonas de disponibilidade.

Distribuição de instâncias

O Amazon EC2 Auto Scaling tenta automaticamente manter números equivalentes de instâncias em cada zona de disponibilidade habilitada. O Amazon EC2 Auto Scaling faz isso tentando iniciar novas instâncias na zona de disponibilidade com o menor número de instâncias. Se houver várias sub-redes em uma zona de disponibilidade, o Amazon EC2 Auto Scaling selecionará aleatoriamente uma sub-rede dessa zona de disponibilidade. No entanto, se a tentativa falhar, o Amazon EC2 Auto Scaling tentará iniciar as instâncias em outra zona de disponibilidade até obter êxito.

Em circunstâncias em que uma zona de disponibilidade perde a integridade ou deixa de estar disponível, a distribuição das instâncias entre as zonas de disponibilidade pode ficar desequilibrada. Quando a zona de disponibilidade se recupera, o Amazon EC2 Auto Scaling reequilibra automaticamente o grupo do Auto Scaling. Ele faz isso iniciando instâncias nas zonas de disponibilidade habilitadas que têm menos instâncias e encerrando as instâncias em outros locais.

Atividades de rebalanceamento

As atividades de rebalanceamento dividem-se em duas categorias: rebalanceamento de zona de disponibilidade e rebalanceamento de capacidade.

Rebalanceamento de zona de disponibilidade

Após determinadas ações ocorrerem, seu grupo do Auto Scaling poderá se tornar desbalanceado entre as zonas de disponibilidade. O Amazon EC2 Auto Scaling compensará rebalanceando as zonas de disponibilidade. As ações a seguir podem levar a atividade de rebalanceamento:

  • Você altera as zonas de disponibilidade associadas ao grupo do Auto Scaling.

  • Você explicitamente encerra ou desanexa instâncias, ou as coloca em espera e assim o grupo fica desbalanceado.

  • Uma zona de disponibilidade que antes tinha capacidade insuficiente se recupera e passa a ter capacidade adicional.

  • Uma zona de disponibilidade que tinha um preço spot acima do seu preço spot máximo agora tem um preço spot abaixo do seu preço máximo.

Ao rebalancear instâncias, o Amazon EC2 Auto Scaling inicia novas instâncias antes de encerrar as mais antigas. Dessa forma, o rebalanceamento não compromete a performance nem a disponibilidade da aplicação.

Como o Amazon EC2 Auto Scaling tenta iniciar novas instâncias antes de encerrar as mais antigas, estar usando toda ou quase toda a capacidade máxima especificada pode prejudicar ou parar completamente as atividades de rebalanceamento.

Para evitar esse problema, o sistema pode exceder temporariamente a capacidade máxima especificada de um grupo durante uma atividade de rebalanceamento. Por padrão, isso pode ser feito com uma margem de 10% ou uma instância, o que for maior. A margem só é estendida se o grupo estiver usando toda ou quase toda a capacidade máxima e precisar ser rebalanceado. A extensão dura somente o tempo necessário para rebalancear o grupo (em geral, alguns minutos).

Como alternativa, você pode estabelecer limites para um grupo do Auto Scaling usando uma política de manutenção de instâncias, e o grupo só pode aumentar ou diminuir a capacidade dentro dessa faixa de limite. Dessa forma, você pode controlar a rapidez com que seu grupo se reequilibra. Para ter mais informações, consulte Políticas de manutenção de instância.

Rebalanceamento de capacidade

Você pode habilitar o rebalanceamento de capacidade nos grupos do Auto Scaling usando instâncias spot. O Amazon EC2 Auto Scaling tenta iniciar uma instância spot sempre que o Amazon EC2 informa que uma instância spot está em alto risco de ser interrompida. Após iniciar uma nova instância, ele encerra uma instância mais antiga. Para ter mais informações, consulte Usar o rebalanceamento de capacidade para lidar com interrupções de spot do Amazon EC2.