I added Redis and a job queue to a service before it had any real traffic. A year later, I removed both.

The traffic was maybe 20 writes per minute. Postgres could handle that with a simple SKIP LOCKED worker loop and a status column. No extra service, no extra failure mode.

What I kept from the experiment:

  • The worker interface (so I can swap the backend later)
  • The metrics and retry policy

What I removed:

  • Redis
  • The queue library
  • A deployment and a set of alerts

The lesson isn't "never use a queue." It's "earn your infrastructure." Start with the database you already have.

I'm reading about SQLite internals for a side project. The more I learn about storage engines, the more I appreciate Postgres.