AWS

15 mar, 2016

Amazon AWS com alta disponibilidade, escalabilidade e ‘zero downtime deploy’

Publicidade

Imagine o seguinte caso: uma infraestrutura financeira que lida com milhares de pagamentos online diariamente, processando faturas para os consumidores de seus clientes, antecipando recebíveis quando seus clientes desejam, executando fluxos automáticos de cobrança, etc.

É sabido que a queda de uma aplicação pode trazer prejuízos para seus usuários e, consequentemente, para seus donos. Se ela for como a plataforma descrita acima, qualquer downtime pode irritar os clientes e acarretar em perda de receita.

Por isso, é crucial que uma aplicação assim, como muitas baseadas em APIs, tenha alta disponibilidade, seja escalável e não fique nem um segundo fora do ar enquanto ocorre um deploy.

A infraestrutura na nuvem da Amazon, a Amazon Web Services (AWS), é uma das soluções disponíveis no mercado que fornece as ferramentas certas para tornar isso possível, como o Auto Scaling Group (ASG) e o Elastic Load Balancer (ELB).

Outras empresas como Microsoft e IBM também oferecem soluções do gênero, como o Azure e o SoftLayer, respectivamente.

No contexto computacional, para um sistema ter alta disponibilidade, precisa ser mantido no ar durante o máximo de tempo possível. Já a escalabilidade se refere à sua capacidade de crescer para suportar um aumento de demanda e manter seu desempenho.

Enquanto o ELB fica responsável por dividir as requisições entre seus servidores e verificar sua saúde, o ASG cuida de aumentar ou reduzir o número de servidores da sua aplicação dependendo da demanda, além de substituir instâncias em caso de falha, tudo automaticamente.

Você só precisa configurar na AWS os números mínimo e máximo de servidores que o ASG pode manter ativos. É necessário, claro, construir uma arquitetura de pelo menos duas instâncias – a redundância vai garantir a disponibilidade da sua aplicação.

201603-img-aws-diagram

Com o ASG e o ELB funcionando, é fácil realizar em seu app um zero downtime deploy, ou seja, uma mudança de versão que não gera nenhum tempo de indisponibilidade. Basta substituir gradativamente as instâncias da versão anterior pelas da nova.

Esse método de deploy simples foi muito utilizado aqui na iugu no início das operações para viabilizar nossa infraestrutura financeira. Hoje, utilizamos técnicas mais avançadas.

No último dia 21 de março explorei o passo-a-passo de como realizar um deploy escalável simples na AWS durante meu workshop no PHP Experience 2016, organizado pelo iMasters. Disponibilizo aqui a apresentação que preparei para o evento.