किसी request handler में 10 लाख यूज़र्स पर कभी loop न चलाएं — एक queue के ज़रिए fan out करें, हर provider जितना स्वीकार कर सके उतना ही throttle करें, हर send को idempotent बनाएं, और failures को retry के लिए DLQ पर route करें। API call सिर्फ enqueue करती है; slow I/O का काम workers करते हैं।
आर्किटेक्चर
Admin ─▶ Campaign API ─▶ [enqueue job] ─▶ Kafka/SQS ─┐
▼
┌──────────────── Worker pool (autoscaled) ───────────────┐
│ claim ─▶ dedup(Redis SETNX) ─▶ rate-limiter ─▶ provider │
└──────────┬──────────────────────────────┬───────────────┘
│ ok │ fail (5xx/timeout)
▼ ▼
sent_log (DB) Retry (backoff) ─▶ DLQ
