DevOps garante plataforma produtiva e de validação ágil, estável e escalável

Sobre a Wingoo

A Wingoo é uma empresa de serviços nas áreas de tecnologia da informação e marketing digital. Fundada em 2015, oferece às empresas de diversos segmentos de mercado uma plataforma digital de relacionamento e pagamento com objetivo de facilitar os processos de captação e retenção de seus clientes finais.

O desafio

Com mais de 1,2 milhões de usuários, a plataforma da Wingoo demandava constantes mudanças e adaptações para atender seus clientes, gerada principalmente por universidades e centros de ensino.

Diante desse cenário, a Wingoo desejava criar uma plataforma produtiva e de validação de qualidade que fosse estável e escalável, que seu deploy fosse mais ágil. Além disso, buscava uma infraestrutura escalável, segura e facilmente gerenciável para minimizar o risco de falhas e downtimes com o maior custo-benefício possível.

A solução

Como solução, a NubeliU Logicalis, em parceria com a AWS, desenvolveram junto com a Wingoo uma solução composta de VPCs distintas, para cada um dos ambientes do sistema do cliente, para isolar os ambientes e aumentar a segurança dos acessos. Ora, os serviços utilizados ao longo da execução do projeto, foram:

  • AWS EC2;
  • AWS RDS;
  • AWS Route53;
  • AWS ElastiCache;
  • AWS VPC;
  • AWS ELB;

Dessa forma, foi instalado uma instância EC2 com Open VPN para que os desenvolvedores conseguissem trabalhar de forma descentralizada, juntamente com a equipe de operações. Dessa forma, nenhum acesso fora dessa VPN é autorizado. Para todo o ambiente criado foi utilizado Terraform e foi configurado por meio da playbooks Ansible.

Por conta do trabalho descentralizado de desenvolvedores e equipe de operações, uma instância EC2 com OpenVPN foi instalada. Nenhum acesso fora dessa VPN é autorizado. O banco de dados MongoDB é executado em um cluster em 3 subnets distintas em instâncias EC2. O SGBD PostgresQL roda em uma instância RDS com backups automáticos e Multi-AZ implementados. Ele é acessado pela plataforma administrativa da Wingoo, enquanto o MongoDB é utilizado para as APIs.

O cliente utiliza uma solução de integração contínua chamada GoCD, também implementada em uma instância EC2 que conecta-se ao repositório remoto de código no BitBucket que, ao receber um Pull Request nas branchs “qa” e “prod”, inicia o processo de build e deploy da aplicação, em um esquema de round deploy, onde somente uma instância é atualizada por vez. Por não utilizar bancos de dados relacionais, as migrações de esquema de dados são transparentes.

Para o suporte de várias instâncias da aplicação, a sessão de usuário é armazenada e consultada no AWS Elasticache, em um cluster REDIS com dois nós. Wingoo armazena seu conteúdo estático em um bucket S3, acessado como website. No S3 ainda são armazenados backups e a base de dados de estados do Terraform.

Para a Wingoo prover serviços para diversos clientes, foi configurado um ALB para que seus clientes possam utilizar o próprio domínio como endereço de sua interface no sistema. Além disso, os certificados digitais para HTTPS são gerenciados pelo ACM e validados em nome dos clientes da Wingoo usando DNS.

Diagrama

Os benefícios

A profissionalização do ambiente do cliente permitiu que ele suportasse mais de 5.000 acessos simultâneos e a sazonalidade da sobrecarga do sistema com um custo aceitável para o cliente. A capacidade de executar vários deploys durante o dia, ou seja, uma nova versão da aplicação (roll-up), sendo uma máquina por vez. Assim, mesmo em horário comercial, permitiram que os desenvolvedores apresentassem versões cada vez mais estáveis do sistema.

Além disso, com as definições de Infraestrutura como código e configuração como código, foi simples migrar os ambientes do cliente de região da AWS quando os custos em manter o sistema na região da América do Sul (sa-east-1) aumentaram e a Wingoo optou por utilizar a região da Virginia (us-east-1), dado o processo de análise de custo construído pela Logicalis, garantindo ao cliente a melhor opção de migração. A migração de todo o entorno foi executada em 24 horas.