Ambiente de testes sob demanda com DevOps em AWS

Sobre Pareto

A Pareto SA, empresa argentina de empréstimos pessoais 100% online, é comprometida em desenvolver soluções rápidas e efetivas para as necessidades das pessoas. Com todos os processos inteiramente online, sem perder a qualidade humana e a resposta empática a seus clientes, as respostas são imediatas e os processos simples.

O desafio

A companhia é a responsável pela produção da ¡GetAppa!, aplicação mobile que permite pagamentos online em diversas lojas de shoppings centers na Argentina a partir do celular do comprador. A aplicação mobile desse produto consulta diversas APIs já inteiramente instalada e rodando na plataforma da AWS.

Entretanto, seu deploy era executado por uma ferramenta especializada para a tecnologia que utilizam, ou seja, possuíam seu próprio processo de CI/CD, sem utilizar as ferramentas de DevOps da AWS. Mas, devido ao crescimento da demanda, manter um ambiente de QA para testes automatizados e manuais, com RDS e ElasticSearch mostrou-se uma solução cara.

Dessa forma, a companhia desejava ter um ambiente de QA que iniciasse por demanda – e que não ficasse 24 horas no ar -, mas com os mesmos componentes, somente em menor escala. Para isso, precisavam entender e desenhar todo processo, uma vez que serviços como RDS, ElasticSearch e Elasticache não podem ser desligados e reiniciados somente quando serão utilizados.

A Solução

A partir do entendimento da demanda da Pareto, a NubeliU Logicalis foi escolhida como parceira de tecnologia para gerenciar as contas da AWS em conjunto com sua fábrica de Software. Além disso, é responsável pela criação de um projeto de ambiente de testes totalmente lançado por demanda, a partir de um comando ou página acessível aos desenvolvedores. Os seguintes serviços da AWS foram utilizados:

  • EC2 para as APIs;
  • Elasticache para controle de sessão de usuário;
  • RDS para seus bancos de dados relacionais;
  • AWS ElasticSearch cluster para velocidade de suas consultas;
  • VPC e subnets para cada ambiente (QA e Produção);
  • ALB com certificados digitais para HTTPS controlados por ACM;
  • Route53 para controle do DNS de seus domínios.

Assim, ao finalizar trabalho, o desenvolvedor deve ser capaz de lançar o ambiente de testes e utilizá-lo para testar as modificações realizadas no produto. Esse ambiente contém EIPs previamente registrados na ferramenta de deploy da Fábrica de Software e os dados do RDS são restaurados durante o lançamento do ambiente.

A solução apresentada utiliza tasks de Cloudformation para construir todo o ambiente onde a aplicação será testada, utilizando uma VPC, para executar os serviço isoladamente, em um ambiente confiável e seguro, subnets e security groups previamente construídos, com EIP alocados e registrados na ferramenta de instalação do sistema do cliente. Além disso, ao iniciar as tasks de Cloudformation, funções Lambda serão ativadas por um script e executarão o restore de um dos backups do RDS (tipicamente o do dia anterior). A pedido do cliente, o ambiente será destruído somente por outro comando executado manualmente.

Diagrama

Os benefícios

Com a solução proposta, ao preparar as tasks de Cloudformation, o processo de IaC já fica configurado para uma eventual criação de um ambiente de disaster recovery. Além disso, é esperada uma redução de custo de 75% para o ambiente, enquanto o deploy de versões estáveis e sem bugs deverá garantir um uptime próximo a 5 noves, impondo aos ambientes uma característica de alta disponibilidade de serviços gerenciados. Ora, com a adoção dos serviços em nuvem da AWS, o cliente terá em suas mãos uma aplicação mais segura e confiável para a execução dos serviços, haja vista o uso do AWS IAM. Além disso, através da arquitetura desenhada pelo time da Logicalis, o cliente recebeu um projeto com valor menor do que estimado inicialmente.