Case:
Migração de aplicações para containers dockers e micro serviços em startup de recrutamento e seleção

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 Rankdone é uma aplicação composta de um backend em PHP, um frontend em TypeScript (Angular) e diversos micro serviços, escritos em diversas linguagens(Python, NodeJS, PHP…) , que agregam novas funcionalidades como um serviço de chat e um corretor de redações utilizando ferramentas de Machine Learning. Antes de ser migrada para Docker a aplicação enfrentava dificuldades nos deploys, que precisavam ser agendados devido a possibilidade de quebra do sistema em ambiente de produção, eram demorados e instáveis. Além disso a aplicação dependia dos serviços oferecidos pelo servidor utilizado que apresentavam instabilidade e constantemente exigiam manutenção por parte dos desenvolvedores.

  • Mapear as dependências da aplicação e encontrar soluções Open Source que fornecem os mesmos serviços.
  • Mapear as dependências de infraestrutura da aplicação.
  • Automatizar o processo de deploy incluindo toda a bateria de testes antes de atualizar a aplicação em produção.
  • Centralizar os logs das possíveis réplicas da aplicação em um único local.
  • Criar um sistema de Service Discovery para os nós da aplicação já que os endereços são dinâmicos e não podem ser fixados no código.

Solução Implementada

Para cada serviço da Rankdone (backend, frontend e os micro serviços) criamos um Dockerfile que encapsula a aplicação e um docker-compose.yml que versiona o ambiente da aplicação. Com o docker-compose o desenvolvedor consegue facilmente reproduzir toda a infraestrutura que a aplicação necessita (banco de dados, fila de mensagem, cache, etc) e o administrador pode utilizar o mesmo docker-compose como base para gerenciar a infraestrutura de produção. Implementamos pipelines, utilizando Jenkins, que utilizam essas imagens para rodar uma bateria de testes em cima do serviços e automaticamente atualizar a aplicação em produção caso erros não sejam encontrados.

  • Alta disponibilidade e escalabilidade horizontal da aplicação em ambiente de produção.
  • Redução dos custos da empresa evitando desperdícios de recursos de infraestrutura.
  • Melhoria na gestão de conhecimento e transparência por parte da equipe técnica (evitando “hacks” ou “macetes” que apenas um desenvolvedor conhece).
  • Centralização dos logs da aplicação em um único serviço.
  • Autonomia da equipe de desenvolvimento para provisionar recursos para a aplicação (não há mais a necessidade de solicitar um V.M).
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.