Bulkhead
Isolating resources into pools so a failure in one part cannot sink the whole ship — named after a ship’s compartments.
The bulkhead pattern isolates resources (thread pools, connection pools, compute) into separate compartments so a failure or overload in one does not consume the resources of the others — named after the watertight compartments that keep a breached ship afloat.
Worked example: a service gives each downstream dependency its own bounded thread pool; if one dependency hangs, only its pool exhausts and calls to other dependencies keep flowing — instead of every thread blocking on the slow one and taking down the whole service. Gotcha: without bulkheads, one slow dependency causes cascading failure — all threads pile up waiting on it — which is why the pattern pairs with timeouts and circuit breakers; the cost is some resource fragmentation (each pool sized separately) versus one shared pool.