Autoscaling Controller · View 19 of 37 · 4 · Runtime
The decision
- The answer is a hierarchy, not a single signal: rank 1 backlog age or concurrency, rank 2 utilization, rank 3 SLO burn.
- On scale-out the highest-ranked fresh signal sets the proposal. On scale-in every ranked signal must agree.
- The driving signal is recorded on the decision, so "what caused this" is answerable per interval.
Why this order
- Backlog leads demand and exists only for queue-driven targets; concurrency is its equivalent for request-serving ones.
- Utilization is universally available, lags demand, and is meaningless for I/O-bound work — hence a fallback rather than a default.
- SLO burn scales what the user actually experiences but is slow, noisy and second order, so it can veto a scale-in and rarely drives a scale-out.
Risks
- A rank-1 signal going stale silently promotes a lagging signal to driver. The journal records which signal drove, so the degradation is visible rather than inferred from worse behaviour.