Como automatizei o roteamento de microsserviços com Node.js
Quem trabalha com microsserviços sabe que o gerenciamento de rotas pode se tornar um gargalo. Toda vez que um novo serviço nasce, lá vamos nós configurar manualmente o proxy reverso, abrir portas, configurar SSL e atualizar o dashboard de monitoramento.
Decidi resolver isso criando um API Gateway Dinâmico em Node.js que utiliza a própria estrutura de pastas para se autoconfigurar.
O Problema: A Fadiga da Configuração
Em ambientes de desenvolvimento ágil, o tempo gasto configurando infraestrutura básica de rede para cada pequena API reduz a produtividade. Eu queria algo onde bastasse eu "soltar" a pasta do serviço em um diretório e o sistema fizesse o resto.
A Solução: Convenção sobre Configuração
Utilizei o Express com http-proxy-middleware para criar um sistema que escaneia a pasta services/.
A lógica principal funciona assim:
O Gateway lê os arquivos package.json dentro de cada subpasta em services/.
Ele extrai metadados como endpoint, url de destino e port.
Instancia dinamicamente as rotas de proxy.
Destaques Técnicos do Projeto
Roteamento Dinâmico: Não há um arquivo de rotas estático. Se você adicionar /services/auth-api, o Gateway entende que deve criar a rota https://dominio.com/api/auth-api.
Health Check Consolidado: O Gateway não apenas redireciona, ele testa a saúde de cada microsserviço e entrega um JSON único com o status de todo o ecossistema.
Automação com PM2: Criei scripts que geram o ecosystem.config.js em tempo de execução, permitindo que o pm2 start suba o Gateway e todas as APIs detectadas de uma só vez.
Segurança Nativa: Implementação de Rate Limiting por IP e suporte a HTTPS automático buscando certificados na pasta de configuração.
Exemplo de Estrutura
Bash
gatewayapis/
├── services/
│ ├── api-vendas/ (package.json define endpoint: 'vendas')
│ └── api-users/ (package.json define endpoint: 'users')
Resultado: O Gateway expõe automaticamente /api/vendas e /api/users.
Conclusão e Código Aberto
A ideia é que o Gateway seja "invisível" e facilite a vida do dev backend. O projeto está aberto para contribuições, especialmente em melhorias de métricas e suporte a WebSockets.
Se quiser conferir os scripts de automação ou usar no seu projeto, o link está aqui:
Link para Projeto
O que acham dessa abordagem de detecção automática? Alguém utiliza algo similar ou prefere ferramentas como Kong/Tyke?