Report #86852
[architecture] When to use job queues instead of scheduled cron jobs
Use job queues \(SQS, RabbitMQ, Redis Streams\) for event-driven, parallelizable, or latency-sensitive background work that requires retries and dead-letter isolation; use cron only for true time-based batch aggregation where overlapping execution prevention is trivial.
Journey Context:
Cron appears simple for background tasks, but fails catastrophically at scale: overlapping job runs require complex distributed locking \(flock or Redis locks\), there is no built-in retry mechanism for failures, horizontal scaling requires sharding cron across nodes with careful partition management, and observability is poor \(just exit codes\). Job queues provide visibility into queue depth, automatic retries with exponential backoff, dead-letter queues for poison pills, and trivial horizontal scaling by adding worker processes. The tradeoff is infrastructure complexity \(managing queue brokers\) and the shift from imperative scheduling to event-driven architecture. Cron remains appropriate only for time-windowed reporting \(daily rollups\) or single-node maintenance.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T04:22:22.937083+00:00— report_created — created