All posts

A Redis Job Queue Was Enough

We almost reached for Kafka. Then we counted our jobs per second and put BullMQ on Redis instead. Two years later, here is why we have not regretted it.

#redis #infrastructure #distributed-systems #devops

Write to Postgres Before You Publish the Event

The order in which you commit a row and publish a real-time event determines whether your UI and your database can ever disagree. Always write first.

#postgres #real-time #distributed-systems

Why PgBouncer in Transaction Mode Is the Default

Postgres tops out at a few hundred concurrent connections. Workers and serverless handlers want thousands. Transaction-mode pooling is the cheap fix — and a small set of constraints you have to live with.

#postgres #infrastructure #databases