Problema
Campanhas de SMS partem de arquivos CSV, usuários, empresas e autenticação entre serviços. Validar e persistir no mesmo processo que dispara milhares de mensagens acopla a API ao ritmo da operadora e da fila.
Restrições
O ambiente precisa ser reproduzível. Autenticação entre serviços não pode depender de JWT opaco sem revogação. Consumidores em mais de uma linguagem existem para comparar o mesmo contrato de mensageria.
Decisão
Sete aplicações: APIs NestJS de usuários/autenticação e de empresas/campanhas; consumidores equivalentes em Node.js/TypeScript, Go e Rust; provisionador declarativo de exchanges, filas e bindings; gerador de massa CSV. PostgreSQL/TypeORM para dados relacionais na API; MongoDB para resultado do consumo; Redis para cache de token opaco (revogável); gRPC para autenticação entre serviços; RabbitMQ com exchanges topic para os lotes. A API publica e segue sem bloquear no ritmo da operadora.
Estado atual
Repositório público com Docker Compose para PostgreSQL, MongoDB, Redis e RabbitMQ. A arquitetura separa domínio, aplicação e infraestrutura nos contextos de usuários, autenticação e empresas; os três consumidores implementam o mesmo contrato de mensagem.
Limitações
É um artefato de estudo e operação local de mensageria, não um produto comercial com SLA de operadora. Os três consumidores demonstram o contrato; não afirmam que as três linguagens rodam juntas em produção do autor.