Autoscaling Controller  ·  View 03 of 37  ·  1 · Context and scope

The Control Loop

The six steps of one 15 second interval, and the fact that it closes.

Editable source SVG draw.io All views
Observe read signal store Qualify fresh, complete, sane Decide policy + damping Declare desired capacity Converge reconcile the delta Verify Serving healthy + registered Control Loop 15 s · per target raw samples qualified inputs proposed capacity one durable number provider calls observed actual The Control Loop — One 15 Second Interval Application we own Decision point Data store Six steps, one direction. A step that cannot complete holds the last declaration rather than guessing the next one. v 1.0 · owner Data & AI Global Practice · date 2026-09

Decisions

  • The loop closes on verify-serving, not on actuate. Capacity that has been requested but is not yet healthy and registered does not count.
  • The interval is 15 s by default and configurable per target between 5 and 300 s; the cost of a shorter interval is provider API pressure, not compute.
  • A step that cannot complete holds the last declaration. The loop never advances on a guess.

Why closed loop, not a schedule

  • A schedule is a policy input, not a control strategy: it cannot see the burst it did not predict.
  • Per-target evaluation cost is independent of fleet size, so holding the interval constant as the fleet grows to 2,000 targets is a sharding problem, not a loop-design problem.

Risks

  • A loop this tight amplifies a bad signal quickly. The qualification step exists to bound that, and the damping in act 4 bounds what survives it.
  • Verify-serving depends on the provider reporting health honestly; a crash-looping instance can report healthy and is handled as the poison-target failure class.