Executando verificação de segurança...
2

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?

Carregando publicação patrocinada...
1

Muito massa, mas vem uma pergunta bem importante: qual o custo de desempenho disto tudo?
Quando é estático, você configura manualmente e é rápido, mas quando é dinâmico assim, é necessário que a aplicação execute mais passos para que você não tenha um trabalho de adicionar manualmente.
Desenvolver aplicações dinâmicas é interessante a partir do momento que há mudanças constantes, mas adicionar um novo micro serviço não é algo que acontece duas ou três vezes por dia ou por semana, é algo que dá para você planejar, testar e etc.

Tendo isto em vista, eu falei abobrinha ou faz sentido?

2

Faz sentido, mais a automação e somente rodar um script que adiciona a aplicação nova nos script do package.json, roda npm i baixar os pacotes e adiciona no ecossistema.config.js (iniciar no pm2) e mais nada, questão de performance fica a cargo de como foi desenvolvido o microsserviço (no caso testei com apis node.js) onde cada serviço tem suas regras de negócio e performance não alterados.