Construa um único serviço que toda equipe chama com um tipo de notificação + destinatário, e deixe o serviço resolver canal, template, preferências do usuário e prioridade. A jogada chave do design são as faixas de prioridade (priority lanes) — um OTP não pode esperar atrás de um disparo de marketing para 2M de usuários.
Arquitetura
Services ─▶ Notify API ─▶ [validate + enrich] ─▶ Kafka topics
├─ otp/txn (high lane)
└─ marketing (bulk lane)
│
┌──── Dispatcher (per lane) ────┐
│ prefs check ─▶ template render │
└────┬──────┬──────┬────────────┘
Push Email SMS In-App
(provider adapters + rate limit)
