Skip to content

Circuit breakers are per instance, with a shared force-open override

Each Lambda execution environment keeps its own circuit breaker per downstream dependency in memory. Sharing breaker state through a datastore would add a network call to every request and a new failure mode to the thing meant to contain failures. Instances learn independently within a few calls; operators can force a breaker open fleet-wide through a DynamoDB flag that instances poll at most every few seconds.

Considered Options

  • Breaker state in DynamoDB or Redis on every call: globally consistent, but slower and itself a dependency that can fail.