Replacing a background-job system is risky because the jobs do real work. The fix is to never rewrite the jobs: wrap each one in a thin consumer that only handles transport and delegates to the existing class. Add retry parity, a dead-letter queue per queue, and a five-step rollout, and you can move an entire app's background work without a scary weekend.