Nikdy neprocházejte 1 milion uživatelů ve smyčce uvnitř request handleru — rozprostřete práci přes frontu, omezte tempo na to, co každý poskytovatel dokáže přijmout, udělejte každé odeslání idempotentní a chybující zprávy směrujte do DLQ pro opakování. Volání API pouze zařadí úlohu do fronty; pomalé I/O provádějí workery.
Architektura
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
