Case:
Orquestração de containers com Docker Swarm em infraestrutura escalável na AWS

Setor: Recursos Humanos

Tecnologias:

Sobre o cliente

A Startup Rankdone é um spin off da 4Linux , foi criada em 2016 e é a maior plataforma brasileira para aplicação de testes em candidatos durante os processos seletivos. O produto é comercializado como SaaS e possui clientes como Sicoob, KPMG e DPascoal. Em 2017, foi uma das startups escolhidas pelo InovaBra  (programa de inovação do Banco Bradesco) e com isso vem experimentando um crescimento exponencial.

A aplicação da Rankdone é composta por um backend escrito em PHP com Zend Framework 2 e um frontend escrito em JS com AngularJS. Após conseguir a conta do maior banco privado do Brasil - que realiza centenas de contratações por mês - e também de outros grandes clientes, passou a experimentar um crescimento de uso exponencial de sua plataforma, onde começou a enfrentar problemas para escalar a aplicação, que até então era monolítica e utilizava armazenamento de arquivos locais, possuindo uma série de dependências e configurações difíceis de serem replicadas o que dificultava a escalabilidade horizontal.

  • Tornar a aplicação “stateless” e passar a armazenar qualquer tipo de dados externamente.
  • Rodar a aplicação em containers.
  • Desenvolvedores deveriam utilizar em suas máquinas um ambiente muito similar ao de produção.
  • Aplicação não pode parar e precisa rodar 24x7.
  • A infraestrutura precisava ser versionada e testada de forma que fosse possível reconstruí-la em questão de minutos
  • Necessidade de atuar de forma preditiva com a aplicação e seus componentes.
  • Picos de uso podiam acontecer a qualquer momento e havia a necessidade de uma infraestrutura elástica.

Solução Implementada

Para o armazenamento de arquivos externos optou-se pelo serviço S3 da AWS.
Levantamento de todas as dependências da aplicação para criação do Dockerfile
Com o Dockerfile, criou-se o arquivo “docker-compose.yml”, que seria utilizado localmente pelos desenvolvedores e em produção pelo Swarm.
Com a aplicação pronta para rodar em containers , criou-se um ambiente de produção: um cluster de Swarm composto por 3 máquinas EC2 na AWS com autoscaling. Todo esse ambiente, inclusive as instâncias de EC2 e configurações de autoscaling foi desenvolvido através de uma playbook Ansible, versionada no GitLab e que foi inserida em uma pipeline no Jenkins com testes de infraestrutura feitos com o Inspec.

  • Ambientes em alta performance e infraestrutura com escalabilidade horizontal automática.
  • Monitoramento preditivo com Prometheus, Grafana, Traefik, Graylog.
  • Resiliência do ambiente em caso de falhas, que pode ser escalado sem a necessidade de Downtime.
  • Rastreabilidade, validação e automação de mudanças de produção de forma ágil.
  • Com toda stack no dockerfile (RabbitMQ, PostgreSQL, Memcached, Solr) . um simples “docker-compose up” ou “docker stack deploy” colocava a aplicação no ar.
Telegram logo
Whatsapp Logo
small_c_popup.png

Quer receber todos os cases da 4Linux em formato de e-book?

Ele pode servir de inspiração ou rumo para o seu próximo projeto utilizando software open source.

Ao clicar em enviar você estará de acordo com nossa Política de Privacidade e Termos LGPD.