Esse projeto foi baseado na masterclasse da rocketseat sobre Background Jobs (FILAS) com NODEJS
Link do Video no youtube
Muitas tarefas da nossa aplicação não precisam executar de forma síncrona, por exemplo, e-mails, relatórios, etc. Nesses casos, o melhor a se fazer é processar essas tarefas em segundo plano. Geralmente ao criamos uma API utilizamos a arquitetura Cliente-servidor e, portanto, existem requisiçōes e respostas HTTP.
Dessa forma, quando uma requisição requer processamento que inevitavelmente leva mais tempo para executar, como a geração de um relatório, deve ser considerado que tal processamento seja feito em background.
Existem várias libs em NODEJS que permitem o gerenciamento de background tasks. Neste projeto foi utilizado o Bull que nos permite não só executar background tasks mas também monitorar falhas, realizar retentativas, adicionar prioridades e tudo isso de uma forma extremamente simples e performática. Existe Também o Bee-Queue que é até mais performático que o Bull, porém, possui algumas features que considero importante em um projeto como realizar retentativas e definir prioridades entre jobs.
Tanto o Bull quanto bee-queue utilizam o Redis para realizar o gerenciamento das filas, também chamadas de background tasks. O Redis é o banco de dados que trabalha com o conceito de armazenar somente tupas Key-Value (chave-valor), o que o torna perfeito para o cenário de gerenciamento das filas criadas para execuçao em backgroun seja pelo bull, bee-queue ou similares.
É importante perceber que em desenvolvimento tanto a API Node quanto o serviço de gerenciamento de jobs podem estar na mesma máquina, porém em produção deve-se considerar a execuçao em maquinas com hadwares diferentes para melhor desempenho. Além disso, também é interessante utilizar ferramentas como o Sentry para monitorar erros que venham ocorrer durante a execução dos jobs.
- Execute o Redis:
docker run --name redis -p 6379:6379 -d -t redis:alpine
- Faça um clone desse repositório;
- Entre na pasta
cd masterclass-bgjobs
; - Rode
yarn
dentro da raiz do projeto - execute
yarn dev
pra iniciar o servidor de desenvolvimento;
- Faça um fork desse repositório;
- Cria uma branch com a sua feature:
git checkout -b minha-feature
; - Faça commit das suas alterações:
git commit -m 'feat: Minha nova feature'
; - Faça push para a sua branch:
git push origin minha-feature
.
Depois que o merge da sua pull request for feito, você pode deletar a sua branch.
Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Estudo feito a partir de videos e tutoriais da Rocketseat 👋 Entre na nossa comunidade!