Kurrë mos bëni loop mbi 1M përdorues brenda një request handler — shpërndani përmes një queue (fan out), kufizoni ritmin (throttle) sipas asaj që mund të pranojë secili provider, bëjeni çdo dërgim idempotent, dhe drejtoni dështimet drejt një DLQ për riprovim. Thirrja e API-t vetëm i vendos në queue; workers bëjnë I/O-në e ngadaltë.
Arkitektura
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
