# Resilience and safe deploys

Source: https://imqueue.org/blog/topics/resilience/

Articles on keeping Node.js services healthy under load and during deploys: back-pressure, graceful shutdown, zero-drop deploys and delivery guarantees.

6 articles tagged `resilience`, newest first.

- [Autoscale on queue depth, not CPU](https://imqueue.org/blog/autoscaling-nodejs-services-on-queue-depth/) — 2026-08-22, Mykhailo Stadnyk: CPU tells you a process is busy, not whether anyone is waiting. An @imqueue service's backlog is a Redis list, so KEDA can scale on it with no exporter, no Prometheus and no code change — and the metrics server covers the case where you need more. — [markdown](https://imqueue.org/blog/autoscaling-nodejs-services-on-queue-depth/index.md)
- [Nothing threw, and the job never ran: silent failures in a Node.js message queue](https://imqueue.org/blog/silent-failures-nodejs-message-queue/) — 2026-08-21, Andrii Glushko: A send() that resolves with a message id nobody will ever deliver. A push() that returns cleanly onto a queue redis refused to write. Neither throws, and neither can — the caller has already moved on by the time redis answers. That silence is over: here is what each of those failures now writes to the log instead, and the one upgrade note that costs you a stack trace. — [markdown](https://imqueue.org/blog/silent-failures-nodejs-message-queue/index.md)
- [One notification, every replica: the LISTEN/NOTIFY duplicate problem](https://imqueue.org/blog/postgres-notify-duplicate-listeners/) — 2026-07-31, Serhiy Morenko: LISTEN/NOTIFY is a broadcast, not a queue. Scale a Node app to three replicas and the same notification gets handled three times — no error, no warning, three charges on the card. Here's why, and what an inter-process lock actually does about it. — [markdown](https://imqueue.org/blog/postgres-notify-duplicate-listeners/index.md)
- [Graceful shutdown and zero-drop deploys](https://imqueue.org/blog/graceful-shutdown-zero-drop-deploys/) — 2026-07-28, Andrii Glushko: Every deploy sends a kill signal to a process that is probably in the middle of something. Nothing 500s, no dashboard turns red, and the work is gone anyway. Here's what actually happens to an in-flight message on SIGTERM, and the built-in drain that keeps it. — [markdown](https://imqueue.org/blog/graceful-shutdown-zero-drop-deploys/index.md)
- [Back-pressure for Node.js services](https://imqueue.org/blog/backpressure-nodejs-services/) — 2026-07-09, Mykhailo Stadnyk: When a downstream service slows down, HTTP tends to turn that into a cascading failure. A queue absorbs the spike instead. Here's the difference, and the trade-offs to watch. — [markdown](https://imqueue.org/blog/backpressure-nodejs-services/index.md)
- [Guaranteed message delivery: cost and when to use it](https://imqueue.org/blog/guaranteed-message-delivery-cost/) — 2026-07-07, Mykhailo Stadnyk: "Will I lose messages if a worker dies?" is the right question — and the answer is a trade-off, not a yes/no. Here's how guaranteed delivery works, what it costs, and how to choose per workload. — [markdown](https://imqueue.org/blog/guaranteed-message-delivery-cost/index.md)

## Other topics

- [Message queues](https://imqueue.org/blog/topics/queue/) — 16 articles
- [RPC](https://imqueue.org/blog/topics/rpc/) — 14 articles
- [Architecture](https://imqueue.org/blog/topics/architecture/) — 11 articles
- [Patterns](https://imqueue.org/blog/topics/patterns/) — 11 articles
- [Comparisons](https://imqueue.org/blog/topics/comparison/) — 9 articles
- [Developer experience](https://imqueue.org/blog/topics/dx/) — 8 articles
- [Type safety](https://imqueue.org/blog/topics/types/) — 7 articles
- [Performance](https://imqueue.org/blog/topics/performance/) — 6 articles
- [Transports](https://imqueue.org/blog/topics/transport/) — 6 articles
- [Message delivery](https://imqueue.org/blog/topics/delivery/) — 5 articles
- [Typed clients](https://imqueue.org/blog/topics/clients/) — 4 articles
- [Jobs & scheduling](https://imqueue.org/blog/topics/jobs/) — 4 articles

All articles: [https://imqueue.org/blog/](https://imqueue.org/blog/) — [markdown](https://imqueue.org/blog/index.md)

