Tempo de leitura: 8 minutos
Esse artigo faz parte de uma série de artigos sobre o Amazon EC2. Para ver a série completa, clique aqui!
Desde que comecei a escrever sobre a AWS, como provedor de infraestrutura na nuvem, tenho frisado bastante a respeito da capacidade que ela tem de nos fornecer ferramentas para a otimização de custos.
Nesse artigo falei sobre a importância de se escolher o melhor modelo para definição de preços e aqui falei sobre os diferentes tipos de instâncias EC2 e a importância de se escolher um tipo que atenda às necessidades de seu negócio.
Porém, quando se fala de otimização de custos, existem outros tipos de serviços que nos ajudam nessa missão e falaremos um pouco mais sobre isso hoje.
Nesse artigo você aprenderá:
- O que é escalabilidade e qual o impacto disso em minha arquitetura de software
- O que é e quais são os benefícios do Amazon EC2 Auto Scaling
- O Amazon EC2 Auto Scaling e a automatização do gerenciamento de frota para instâncias EC2
- Abordagens para o uso do Amazon EC2 Auto Scaling
- Como funciona o Amazon EC2 Auto Scaling na prática
O que é escalabilidade e qual o impacto disso em minha arquitetura de software
Escalabilidade em arquitetura de software tem a ver com a capacidade que sua solução tem de utilizar apenas os recursos necessários para atender a demanda requerida de seu negócio.
Um dos exemplos mais clássicos de aumento de demanda é o da Black Friday.
Na Black Friday todos os e-commerces precisam se preparar para o alto volume de requisições que chegam a seus servidores.
Para fazer isso, as aplicações precisam escalar seus recursos de modo que consigam atender a esse aumento momentâneo no volume de requisições.
Ao término da Black Friday, obviamente, não serão mais necessários tantos recursos, então poderemos remover os servidores adicionais.
Mas não podemos nos enganar achando que essas variações só acontecem em momentos isolados como a Black Friday.
Todo negócio tem picos de utilização, assim como momentos de baixa utilização.
Nossa arquitetura de solução precisa estar preparada para responder automaticamente a essas demandas, escalando para mais ou para menos o número de recursos de acordo com a situação.
Com isso, não precisamos mais nos preocupar com uma possível falha em nossa solução devido a falta de recursos de computação para atender a essas variações de demanda.
Então, que serviço da AWS devo utilizar para escalar automaticamente minhas instâncias EC2?
Estamos falando do Amazon EC2 Auto Scaling, e é sobre esse cara que vamos detalhar um pouco mais a partir de agora.
O que é e quais são os benefícios do Amazon EC2 Auto Scaling
Muito provavelmente você já deve ter passado por uma situação em que fez uma requisição para um site e ele demorou a responder ou retornou “timeout”.
Nesse cenário, é provável que a aplicação tenha recebido mais requisições que ela é capaz de responder.
Na imagem acima, podemos ver que as aplicações sofrem uma variação de demanda (em roxo) e que existem momentos em que os recursos são subutilizados.
Todo negócio tem essas variações dependendo do período em que as aplicações são utilizadas. Esse aumento de demanda pode comprometer a resposta dada ao cliente se não for tratada da forma correta.
Mas não é apenas o cliente que está em destaque. A saúde financeira de seu negócio também, pois em momentos de baixa demanda, precisamos otimizar os custos de modo a não pagar mais do que o necessário para manter nossos “workloads” funcionando.
O Amazon EC2 Auto Scaling é o serviço da AWS que nos permite adicionar ou remover instâncias EC2 em resposta às variações de demanda para nossas aplicações.
Isso nos ajuda a aumentar a disponibilidade de nossas aplicações mesmo em momentos de picos de acesso escalando automaticamente as instâncias conforme a necessidade.
Amazon EC2 Auto Scaling e a automatização do gerenciamento de frota para instâncias EC2
O Amazon EC2 Auto Scaling pode nos ajudar a gerenciar a nossa frota de instâncias EC2. E como isso funciona?
Até aqui falamos apenas em escalar nossas instância EC2, mas o que acontece se uma dessas instâncias não estiver saudável? Digo, se ela estiver executando, mas não respondendo de forma adequada?
O Amazon EC2 Auto Scaling nos permite detectar instâncias deficientes e aplicativos não saudáveis e substituí-las sem intervenção manual.
Com isso, garantimos que a capacidade computacional esperada de nossos “workloads” seja preservada e trabalhe conforme o esperado.
Para fazer isso, o Amazon EC2 Auto Scaling realizará três funções principais:
1 Monitorar a integridade das instâncias em execução
Para isso, ele garante que nossa aplicação esteja apta a receber tráfego e que as instâncias EC2 estejam funcionando corretamente fazendo verificações periódicas de integridade.
2 Substituir automaticamente as instâncias com falha
Quando uma instância com falha é reprovada em uma verificação de integridade, o Amazon EC2 Auto Scaling a encerra automaticamente e a substitui por uma nova.
Assim, não há mais a necessidade de uma resposta manual.
3 Balancear a capacidade entre zonas de disponibilidades
O Amazon EC2 Auto Scaling balanceia a distribuição de instâncias nas diferentes zonas de disponibilidade de modo que essa distribuição seja uniforme.
Com isso, aumentamos a disponibilidade de nossa aplicação em caso de falhas em uma zona de disponibilidade na região em que atuamos na AWS.
Abordagens para o uso do Amazon EC2 Auto Scaling
Com o Amazon EC2 Auto Scaling, podemos usar diferentes abordagens para escalar nossas instâncias EC2. Vamos focar em cada uma delas agora.
Escalabilidade agendada
A escalabilidade agendada terá por base o seu conhecimento a respeito do volume de demanda. Com ela, podemos dimensionar nossos “workloads” antes das alterações de carga conhecidas.
As atividades de escalabilidade são planejadas com base nos padrões de tráfego de seu aplicativo. É uma abordagem que requer configuração manual.
Escalabilidade dinâmica
Com a escalabilidade dinâmica podemos acompanhar de perto as alterações na curva de demanda baseadas em métricas de carregamento da aplicação.
Por exemplo, podemos usar uma política de escalabilidade tendo por base a métrica de utilização de CPU. Quando o limite configurado para essa política for atingido, o Amazon EC2 Auto Scaling ajustará automaticamente o número de instâncias do EC2, conforme necessário, para manter a meta de disponibilidade.
Escalabilidade preditiva
A escalabilidade preditiva usa machine learning para agendar o número de instâncias EC2 em antecipação às mudanças de tráfego.
Os algoritmos de machine learning da escalabilidade preditiva detectam mudanças nos padrões diários e semanais, ajustando automaticamente suas previsões.
Isso elimina a necessidade de ajuste manual dos parâmetros de Auto Scaling conforme eles se modificam ciclicamente ao longo do tempo, facilitando a configuração do Auto Scaling.
O Auto Scaling aprimorado com escalabilidade preditiva proporciona um provisionamento de capacidade mais rápido, mais simples e mais preciso, gerando custos mais baixos e aplicativos com maior capacidade de resposta.
A documentação da AWS nos diz que a escalabilidade dinâmica e a escalabilidade preditiva podem ser usadas juntas para escalas mais rápidas.
Como funciona o Amazon EC2 Auto Scaling na prática
A imagem abaixo resume as configurações que precisamos fazer para utilizar o Amazon Auto Scaling:
Ao utilizarmos o serviço de “auto scaling” precisamos configurar um componente que chamamos de grupo de “Auto Scaling”. Nele, definimos as configurações necessárias para o escalonamento automático de nossas instâncias EC2.
O primeiro passo é definir um número mínimo de instâncias. A capacidade mínima representa o número de instâncias que serão inicializadas imediatamente após a criação do grupo.
No exemplo da imagem acima, temos a capacidade mínima de uma instância EC2.
O próximo passo é configurar a capacidade desejada, que representa o número de instâncias EC2 que estarão disponíveis em condições normais de demanda.
Essa é uma configuração opcional. Caso não seja definida, por padrão, ela assumirá o mesmo valor da capacidade mínima.
A terceira configuração a ser definida é a capacidade máxima, que representa o número máximo de instâncias EC2 que poderão ser inicializadas em resposta à alta demanda no aplicativo.
Dessa forma, pagamos apenas pelas instâncias que estão sendo utilizadas e pelo momento em que estão sendo utilizadas.
Essa é base para uma arquitetura com um custo efetivo e que provê uma boa experiência para o usuário de nossos aplicativos.
Então é isso pessoal. Espero que tenham curtido.
Nos próximos artigos continuarei a falar sobre os serviços que estão conectados ao EC2 para, então, colocarmos a mão na massa criando uma solução com os tópicos teóricos abordados até aqui.

Referências
Fleet Management Made Easy with Auto Scaling | AWS Compute Blog
New – EC2 Auto Scaling Groups With Multiple Instance Types & Purchase Options | AWS News Blog
Automating Management of Amazon EC2 Instances – March 2017 AWS Online Tech Talks
AWS re:Invent 2017: Auto Scaling Prime Time: Target Tracking Hits the Bullseye at Ne (CMP311)
Link permanente
Link permanente
Link permanente