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.
Also known as: data-plane-independence, constant-work-recovery
Design systems so the data plane keeps working with its last known state when the control plane or a dependency is unavailable.
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.
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.
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.
High, spare capacity in every zone
Medium, dependency reviews
Medium to high, architectural separation
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