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

High-Level Architecture

Six stages: observe, decide, declare, converge, serve, explain — and one feedback edge that matters.

Editable source SVG draw.io All views
Observe Collectors 4 signal classes Normaliser one common shape Freshness Gate 90 s · plausible Decide Policy Evaluator target, step, sched Damping + Bounds hysteresis, limits Shard Leader one per shard Declare Desired-State Record PostgreSQL · RPO 0 Converge Reconciler idempotent Provider Adapters breaker, backoff Drain Coordinator 120 s deadline Serve Managed Capacity VMSS, pools, pods Serving Verifier healthy + registered Explain Decision Journal 13 months Cost Attribution per team, per hour observed actual every evaluation Autoscaling Controller — High-Level Architecture Application we own Decision point Security / platform Data store Interface / broker External / third party event / async The spine is the control loop. Actual capacity re-enters as a signal, never as an assumption. v 1.0 · owner Data & AI Global Practice · date 2026-09

Decisions

  • The only feedback into the loop is observed serving capacity. Intent is never fed back as if it were fact.
  • Explain is a stage, not a by-product: the journal is written on every evaluation, including the ones that changed nothing.
  • Declare is a separate stage from decide precisely so that a crash between them loses nothing.

Targets

  • Signal ingest to availability for decision: p99 ≤ 5 s.
  • Decision latency, signal read to desired-state write: p99 ≤ 2 s.
  • Desired-state write to first actuation call: p99 ≤ 3 s.
  • End to end, sustained breach to serving: p95 ≤ 60 s warm, ≤ 240 s cold.

Omitted here

  • Per-stage failure paths are in act 6; this view is the happy path only.
  • Warm pools appear as part of converge and get their own view in act 4.