Bangun satu layanan yang dipanggil setiap tim dengan tipe notifikasi + penerima, dan biarkan layanan itu menyelesaikan channel, template, preferensi pengguna, dan prioritas. Langkah desain kuncinya adalah priority lanes — sebuah OTP tidak boleh menunggu di belakang blast marketing untuk 2 juta pengguna.
Arsitektur
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)
