Benefícios do Auto Scaling para a arquitetura de aplicações - 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 a arquitetura de aplicações

Adicionar o Amazon EC2 Auto Scaling à sua arquitetura de aplicativos é uma forma de maximizar os benefícios da AWS nuvem. 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 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 ficar indisponível, o Amazon EC2 Auto Scaling poderá iniciar instâncias em outra para compensar.

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

  • Melhor gerenciamento de custos. O Amazon EC2 Auto Scaling pode aumentar e diminuir dinamicamente a capacidade conforme necessário. Como você paga pelas EC2 instâncias que usa, você economiza dinheiro iniciando instâncias quando elas são necessárias e encerrando-as quando não são.

Exemplo: atender a demanda variável

Para demonstrar alguns dos benefícios do Amazon EC2 Auto Scaling, considere um aplicativo web básico em execução no. 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 esse aplicativo, você tem 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 EC2 instâncias, você só precisa pagar pelas instâncias que usa, ao usá-las. Você agora tem uma arquitetura econômica que fornece a melhor experiência ao cliente e, ao mesmo tempo, minimiza os custos.

Um exemplo mostrando 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 do seu aplicativo são hospedadas em EC2 instâncias idênticas (servidores em nuvem), cada uma tratando das solicitações dos clientes.

O Amazon EC2 Auto Scaling gerencia o lançamento e o encerramento dessas EC2 instâncias 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 EC2 instâncias. 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 obter 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 obter 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 suas sub-redes VPC e em vez de usar a padrãoVPC, 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 obter mais informações, consulte Como a Amazon VPC funciona no Guia VPC do usuário da Amazon.

Ao criar um grupo de Auto Scaling, você deve escolher as sub-redes VPC e nas quais implantará o grupo Auto Scaling. O Amazon EC2 Auto Scaling cria suas 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 obter 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 lançar novas instâncias na zona de disponibilidade com o menor número de instâncias. Se houver várias sub-redes escolhidas para a zona de disponibilidade, o Amazon EC2 Auto Scaling tentará iniciar instâncias na sub-rede que tem o maior número de endereços IP disponíveis na 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é que seja bem-sucedida.

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 de 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 compensa reequilibrando 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 EC2 fazer o rebalanceamento, o Amazon Auto Scaling lança novas instâncias antes de encerrar as anteriores. 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 anteriores, estar na capacidade máxima especificada ou próxima dela pode impedir ou interromper 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 obter 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. Isso permite que o Amazon EC2 Auto Scaling tente iniciar uma Instância Spot sempre que a Amazon EC2 informa que uma Instância Spot tem um risco elevado de interrupção. Após iniciar uma nova instância, ele encerra uma instância mais antiga. Para obter mais informações, consulte Usar o rebalanceamento de capacidade para lidar com interrupções de spot do Amazon EC2.