Koepe do Brasil, 2026
Relatórios que derrubavam a API
O problema
A geração de relatórios em XLSX e PDF rodava dentro da própria API. Exportações grandes carregavam tudo na memória e derrubavam o serviço para todo mundo.
Resultado
A sobrecarga de memória que derrubava a API acabou. O usuário pede o relatório, segue usando o sistema e baixa o arquivo direto do S3 por uma URL pré-assinada.
O que eu fiz
- Tirei a exportação da API e criei um microsserviço orientado a eventos com RabbitMQ.
- Fiz o worker ler o MongoDB em stream e enviar o arquivo para o S3 também em stream, sem montar o relatório inteiro em memória.
- Adicionei retry e dead letter queue, para nenhuma exportação se perder em silêncio.
- Integrei no front em React com aviso em tempo real quando o arquivo fica pronto, isolado por cliente.
Pedido
a API responde na hora e publica um evento
RabbitMQ
fila com retry; o que falhar vai para a DLQ
Worker
lê o MongoDB em stream e gera XLSX ou PDF
AWS S3
upload em stream, memória constante
Download
URL pré-assinada e aviso em tempo real