Stackbook Logo
resilienceestablished · medium operational burden

Bulkhead

Also known as: bulkhead-pattern, resource-isolation

Intent

Isolate critical resources (threads, connections, memory) so failure in one component doesn't starve others.

Problem

A single misbehaving downstream service consumes all caller resources (thread pool, connection pool), causing total outage.

Forces

  • Shared resource pools create single point of contention
  • Different downstreams have different criticality
  • Resource exhaustion cascades across unrelated operations
  • Need to prioritize critical paths during degradation

Solution

✓ When to Use

  • Caller has multiple downstreams with different SLAs
  • Critical path must stay responsive during non-critical downstream issues
  • Prevent noisy neighbor problem in shared infrastructure

✗ When Not to Use

  • Single downstream (circuit breaker sufficient)
  • Very low throughput where isolation overhead exceeds benefit
  • When resource pooling is required for efficiency (e.g., DB connections)

Pros

  • +Strong isolation — failure contained to one bulkhead
  • +Enables priority-based resource allocation
  • +Observable: per-bulkhead metrics reveal bottlenecks

Cons

  • Reduces resource efficiency (unused capacity in idle bulkheads)
  • Complexity: sizing, monitoring, tuning per bulkhead
  • Can cause false resource exhaustion if sized too small

Cost Profile

Infrastructure

Low — configuration, no new infrastructure

Operational

Medium — monitor per-bulkhead saturation

Cognitive

Medium — capacity planning per dependency

Failure Modes

  • Bulkhead too small → false rejections under normal load

  • Bulkhead too large → no isolation benefit

  • Cascading rejection: bulkhead rejects → caller retries → upstream bulkhead saturates

Real-World Examples

Alternatives

  • circuit-breaker
  • rate-limiting
  • priority-queue

Related Patterns

  • circuit-breaker
  • rate-limiting
  • retry-with-backoff

Competency Domains

reliability opsdistribution communicationeconomics evolution