Cards/ReliabilitySystem Design · Day 36Sep 5, 2026

Stop Calling The Thing That's Down

Circuit breaker states — closed, open and half-open — beside the bulkhead pattern giving each dependency its own connection pool, and a timeline of thread exhaustion without either

A dependency is failing. Every request to it times out after thirty seconds, and your service keeps calling it anyway.

Each call ties up a thread for half a minute, waiting for an answer that isn't coming. Within a minute the pool is exhausted, and now your service is down too — for reasons that have nothing to do with your code.

Two patterns, one goal: stop the failure from spreading.

A circuit breaker counts the failures. Past a threshold it stops calling entirely and fails instantly. After a pause it lets one request through to test the water — success closes it, failure opens it again.

A bulkhead borrows from shipbuilding. Ships survive because a hole floods one compartment rather than the hull. Give each dependency its own connection pool, and payments cannot drown search.

The circuit breaker says stop trying. The bulkhead says if it drowns, drown alone.

Resilience has less to do with preventing failure than with making sure failure has somewhere to stop.

Resilience has less to do with preventing failure than with making sure failure has somewhere to stop.