Projeto backend estruturado em serviços independentes para gestão de clientes, planos, assinaturas, faturamento e consulta de planos ativos.
servico-gestao: serviço principal com foco em clientes, planos e assinaturasservico-faturamento: registra pagamentos e publica eventosservico-planos-ativos: consulta rápida de assinaturas ativas com cacheapi-gateway: centraliza o acesso HTTP aos serviços internos
- Node.js 22
- TypeScript
- Express
- PostgreSQL
- RabbitMQ
- Redis
- Docker Compose
As rotas do serviço de gestão são expostas externamente pelo API Gateway com o prefixo /gerenciaplanos. No enunciado, os endpoints do serviço principal aparecem com o prefixo /gestao; nesta implementação, a diferença está apenas no ponto de entrada externo definido pelo gateway. As responsabilidades funcionais permanecem as mesmas: listagem de clientes e planos, criação de assinaturas, atualização de plano e consultas de assinaturas. Essa decisão foi adotada para centralizar o acesso ao serviço principal e manter desacoplada a comunicação entre cliente e serviços internos.
docker compose up --buildIsso inicia:
- API Gateway na porta
3000 - ServicoGestao na porta
3001 - ServicoFaturamento na porta
3002 - ServicoPlanosAtivos na porta
3003 - PostgreSQL de gestão
- PostgreSQL de faturamento
- RabbitMQ
- Redis
- Instale as dependências:
npm install
cd servico-gestao
npm install
cd ..
cd servico-faturamento
npm install
cd ..
cd servico-planos-ativos
npm install
cd ..
cd api-gateway
npm install
cd ..- Garanta a execução local de:
- PostgreSQL para gestão na porta
5433, com bancooperadora_gestaoe credenciaispostgres/postgres - PostgreSQL para faturamento na porta
5434, com bancooperadora_faturamentoe credenciaispostgres/postgres - RabbitMQ na porta
5672 - Redis na porta
6379
- Inicie cada serviço em um terminal:
cd servico-gestao && npm run build && npm start
cd servico-faturamento && npm run build && npm start
cd servico-planos-ativos && npm run build && npm start
cd api-gateway && npm run build && npm startGET http://localhost:3000/gerenciaplanos/clientesGET http://localhost:3000/gerenciaplanos/planosPOST http://localhost:3000/gerenciaplanos/assinaturasPATCH http://localhost:3000/gerenciaplanos/planos/:idPlanoGET http://localhost:3000/gerenciaplanos/assinaturas/:tipoGET http://localhost:3000/gerenciaplanos/asscli/:codcliGET http://localhost:3000/gerenciaplanos/assinaturaplano/:codplanoPOST http://localhost:3000/registrarpagamentoGET http://localhost:3000/planosativos/:codass
Observação:
- o endpoint
assclicorresponde à consulta de assinaturas por cliente - o endpoint
assinaturaplanocorresponde à consulta de assinaturas por plano
- Listar clientes
- Listar planos
- Criar assinatura
- Consultar assinaturas por tipo
- Atualizar custo do plano
- Registrar pagamento
- Verificar se a assinatura permanece ativa
Use a coleção Postman:
npx newman run eduarda_silva_santos_Desenvolvimento_de_Sistemas_backend_Fase-2.postman_collection.jsondomain: entidades e contratosapplication: casos de usoinfrastructure: persistência, mensageria e cacheinterfaces: controllers e rotas
- O banco de gestão é populado automaticamente com 10 clientes, 5 planos e 5 assinaturas.
- O serviço de gestão consome eventos de pagamento e atualiza
dataUltimoPagamento. - O serviço de planos ativos invalida o cache ao receber evento de pagamento.