advanced 2 min answer

Several 2023–2024 regional cloud outages were triggered by automated control-plane or configuration changes rather than by hardware failure or code deploys. How should change management, progressive rollout and control/data-plane independence be designed?

azurecontrol-planeconfigurationprogressive-rolloutblast-radius
Show the full answer Hide the answer

The observation that should reframe your thinking

Most large-scale outages are caused by changes, and most changes are not code deploys. They are configuration pushes, feature-flag flips, capacity adjustments, routing updates, certificate rotations, policy updates and automated remediation actions.

Organisations apply enormous rigour to the code path — review, tests, canary, staged rollout, automated rollback — and frequently apply none of it to configuration, which reaches production faster, more often, and with a wider blast radius.

What configuration change management must include

  • Version control and review, identically to code. A configuration change with no diff and no reviewer is an unreviewed production change.
  • Validation and simulation before rollout: schema validation, semantic linting, and — where feasible — applying the change to a shadow copy of the system and comparing behaviour. A malformed configuration should be impossible to publish, not merely unlikely.
  • Progressive rollout with health gating between waves: one instance, then one cell, then one zone, then one region, then the rest — with an automatic hold if any wave's health signals degrade.
  • A bake time per wave that exceeds the time for the failure mode to appear. A configuration whose effect is only visible under peak load needs a bake window that spans a peak.
  • Automatic rollback, and rollback that does not itself require the control plane to be healthy.
  • A change freeze concept tied to business risk periods, which is unfashionable and repeatedly justified.

Control-plane and data-plane independence

The design property that limits the damage:

  • The data plane continues on its last-known-good configuration when the control plane is unavailable. It never blocks on fetching configuration; it uses a cached copy with a long validity.
  • The control plane is not in the request path. If serving a request requires a call to the configuration or orchestration service, that service's availability is now your availability ceiling.
  • Control-plane failure is a well-understood mode: you cannot make changes; you can still serve traffic. That is a good day compared to the alternative.
  • The control plane is itself regionalised, so a control-plane failure in one region does not prevent changes elsewhere — which matters enormously when the response to a regional problem is to shift traffic.

The rollout question people get wrong

Global configuration systems are built for speed — a change reaching every location in under a minute is a feature, and it is also the mechanism by which a bad change reaches every location in under a minute.

The resolution is not slowing everything down but separating urgency classes: a security block-list needs global propagation in seconds and should be constrained to a narrow, heavily-validated schema; a routing or capacity change does not, and goes through waves with health gates. Conflating the two gives the dangerous change the fast path.