Stackbook Logo
resilienceestablished · medium operational burden

Static Stability

Also known as: data-plane-independence, constant-work-recovery

Intent

Design systems so the data plane keeps working with its last known state when the control plane or a dependency is unavailable.

Problem

Recovery mechanisms that depend on other services, such as launching new instances during an outage, can fail precisely when they are needed. Control planes are more complex and less available than data planes.

Forces

  • •Control planes are complex and fail more often
  • •Overprovisioning costs money
  • •Cached configuration can go stale
  • •Recovery actions can overload shared services

Solution

Overview

Amazon popularized static stability as a design goal. A statically stable system stays in its steady state when something it depends on breaks, rather than needing to take action to survive.

How it works

The data plane serves traffic and the control plane configures it. Failure of the control plane must not affect serving.

control plane (create, scale, config)   <- may be down
        | push, cached locally
data plane (serve requests)             <- keeps running

For capacity, provision so that losing one of three zones leaves the other two able to carry full load, which means running about 150 percent of needed capacity in total. If a zone fails, no new instances need to be launched, so there is no dependence on the compute API during the incident. Health-based routing shifts traffic automatically.

Pitfalls

  • A small call to a configuration or identity service per request quietly reintroduces a dependency. Audit runtime calls.
  • Cached credentials and configs need a long enough lifetime to outlast an incident, with explicit alerting when they age.
  • Static capacity decisions cost money, so size them from real failure domains, not guesses.
  • Fail-open vs fail-closed choices on stale data must be explicit, especially for security configuration.
  • Test by actually disabling the control plane in a game day.

Key takeaways

  • Keep the data plane independent from the control plane.
  • Provision headroom ahead of failure instead of scaling during it.
  • Cache the last known good configuration.
  • Verify the property with fault injection.

✓ When to Use

  • •Cloud infrastructure and API platforms
  • •Multi-zone deployments that must survive a zone loss
  • •Systems where recovery paths share fate with the failure

✗ When Not to Use

  • •Prototype systems where cost matters more than availability
  • •Workloads that can tolerate minutes of recovery
  • •Cases where configuration changes must take effect immediately everywhere

Pros

  • +Survives control plane outages
  • +Faster, more predictable recovery
  • +Avoids recovery-time dependency storms

Cons

  • −Higher steady-state cost from overprovisioning
  • −Stale configuration risks
  • −Needs disciplined dependency analysis

Cost Profile

Infrastructure

High, spare capacity in every zone

Operational

Medium, dependency reviews

Cognitive

Medium to high, architectural separation

Failure Modes

  • Hidden runtime dependency on the control plane breaks the assumption

  • Cached state expires and the data plane stops serving

  • Insufficient headroom after a zone loss causes overload

Real-World Examples

Alternatives

    Related Patterns

    • graceful-degradation

    Competency Domains

    reliability opseconomics evolution