Construye un único servicio al que cada equipo llame con un tipo de notificación + destinatario, y deja que el servicio resuelva el canal, la plantilla, las preferencias del usuario y la prioridad. La decisión de diseño clave son los carriles de prioridad (priority lanes) — un OTP no puede esperar detrás de un envío masivo de marketing a 2M de usuarios.
Arquitectura
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)
