Loop aldrig over 1M brugere i en request-handler — fan ud gennem en queue, throttle til det hver provider kan modtage, gør hver afsendelse idempotent, og send fejl til en DLQ til retry. API-kaldet står kun for at enqueue; workers udfører den langsomme I/O.
Arkitektur
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
