Article image

LS

Luís Silva19/10/2024 11:51
Compartilhe

Deploy de uma aplicação web escalável na AWS, utilizando o Elastic Beanstalk para a Infraestrutura, o dynamoDB para armazenar e-mails dos usuários, o CloudWatch para monitoramento e o CloudFront para acelerar a entrega de conteúdo globalmente

  • #AWS
  • #AWS CloudWatch
  • #Cloud

Nesse projeto baseado em um cenário do mundo real, fui responsável por implementar uma aplicação que precisa suportar a alta demanda de um grande número de usuários acessando simultaneamente. Esta aplicação foi utilizada em uma grande conferência que contou com mais de 10.000 pessoas, presencialmente e online, contando com participantes de todo o mundo.

O evento foi transmitido pela internet e presencialmente e foram sorteados 10 vouchers para 3 certificações de Cloud. Nesse momento os mais de 10.000 conferencistas cadastraram seus e-mails para garantir a participação no sorteio.

Na AWS, foram utilizados os serviços do Elastic Beanstalk para deploy da aplicação web, DynamoDB para armazenar os e-mails, CloudFront para fazer o caching dos arquivos estáticos e dinâmicos em uma Edge Location próxima ao usuário.

Abaixo, vou compartilhar os passos que segui para garantir que a aplicação suportasse a alta demanda e funcionasse perfeitamente durante o evento conforme a arquitetura da imagem acima.

1. Configuração Inicial da Conta AWS

Primeiro, criei uma conta na AWS e configurei o IAM (Identity and Access Management) para garantir que todos os membros da equipe tivessem as permissões necessárias para gerenciar os serviços. Isso incluiu a criação de usuários e grupos com políticas de acesso adequadas.

2. Desenvolvimento da Aplicação Web

Uma equipe realizou a criação da aplicação web que permitiria aos usuários cadastrar seus e-mails para participar do sorteio. Realizei testes locais para garantir que a aplicação estava funcionando corretamente antes de prosseguir com o deploy na AWS.

3. Configuração do Elastic Beanstalk

Para facilitar o deploy e a gestão da aplicação, utilizei o AWS Elastic Beanstalk. Criei uma nova aplicação e um novo ambiente no console do Elastic Beanstalk, escolhendo a plataforma adequada para o meu caso, Python 3.12. Em seguida, fiz o upload do código no bucket S3 da aplicação e configurei as variáveis de ambiente necessárias.

4. Configuração do DynamoDB

Para armazenar os e-mails dos usuários, criei uma tabela no Amazon DynamoDB. Defini a chave primária e configurei as capacidades de leitura e escrita para garantir que a tabela pudesse lidar com a alta demanda. Integrei a aplicação com o DynamoDB para que os e-mails fossem armazenados corretamente.

5. Configuração do CloudFront

Para acelerar a entrega de conteúdo globalmente, configurei o Amazon CloudFront. Criei uma nova distribuição no console do CloudFront e configurei a origem para apontar para o ambiente do Elastic Beanstalk. Defini os comportamentos de cache para arquivos estáticos e dinâmicos e configurei as Edge Locations para garantir que o conteúdo fosse entregue de forma eficiente aos usuários em todo o mundo.

6. Configuração do CloudWatch

Para monitorar a aplicação em tempo real, configurei o Amazon CloudWatch. Criei alarmes para monitorar métricas importantes, como uso de CPU, latência e erros. Também configurei dashboards para visualizar as métricas e logs da aplicação, permitindo uma resposta rápida a qualquer problema.

7. Testes de Carga e Escalabilidade

Antes do evento, realizei testes de carga utilizando ferramentas como Apache JMeter para simular a carga de 10.000 usuários acessando simultaneamente. Ajustei as configurações de auto-scaling no Elastic Beanstalk para garantir que a aplicação pudesse escalar automaticamente com base na demanda.

8. Deploy Final e Monitoramento

Com tudo configurado e testado, realizei o deploy final da aplicação no Elastic Beanstalk. Durante o evento, utilizei o CloudWatch para monitorar a aplicação continuamente e ajustar conforme necessário.

9. Pós-Evento

Após o evento, analisei os dados coletados no DynamoDB e no CloudWatch para obter insights sobre o desempenho da aplicação. Gerei relatórios sobre a participação dos usuários e o desempenho da aplicação para futuras melhorias.

10. Descomissionamento

Por fim, descomissionei os recursos da AWS que não seriam mais utilizados para evitar custos desnecessários.

Conclusão

Este projeto foi uma experiência incrível e desafiadora. Aprendi muito sobre a escalabilidade e a gestão de aplicações na AWS. Com a combinação de Elastic Beanstalk, DynamoDB, CloudFront e CloudWatch, conseguimos garantir que a aplicação funcionasse perfeitamente durante o evento, suportando a alta demanda de mais de 10.000 usuários.

Se você está planejando um projeto semelhante, espero que este artigo tenha sido útil. Se tiver alguma dúvida ou quiser compartilhar sua experiência, sinta-se à vontade para deixar um comentário abaixo!

Para ler mais acesse: https://medium.com/@luisrigo2005/deploy-de-uma-aplica%C3%A7%C3%A3o-web-escal%C3%A1vel-na-aws-utilizando-o-elastic-beanstalk-para-a-infraestrutura-dc63c2b8a22a

Compartilhe
Comentários (0)