Comparison
BulkheadvsNoisy neighbour
Bulkhead
you give each downstream its own pool of connections so one slow dependency cannot consume every thread you have.
Partitioning resources so that exhaustion in one compartment cannot sink the whole service. In practice: separate connection pools, thread pools or instances per dependency or per tenant. It converts a total outage into a partial one, which is the entire goal of resilience engineering.
Full entry →Noisy neighbour
one customer's enormous batch job makes every other customer's requests slow, on shared infrastructure they cannot see.
One tenant's resource consumption degrading others on shared infrastructure. It is the defining operational problem of multi-tenancy, and it appears at every layer: CPU, connection pools, cache space, database locks. Per-tenant quotas, bulkheads and fair queueing are the mitigations; "we will notice" is not.
Full entry →