Autoscaling Controller  ·  View 10 of 37  ·  2 · Structure

Integration Surface

Five inbound interfaces, five outbound, and the rule that separates them.

Editable source SVG draw.io All views
Inbound — read only Managed Prometheus PromQL Azure Monitor REST Service Bus Mgmt Git · policy repo GitOps Forecast Feed Regional control plane Autoscaling Controller one per region Outbound — scoped identities VMSS API AKS Node Pool API Kubernetes API Event Hubs Alertmanager 10 s pull 60 s pull backlog, age versions signed hourly set capacity set count set replicas journal alerts Integration Surface — Every Interface In and Out External / third party Queue / topic Application we own Security / platform synchronous batch event / async Five inbound interfaces, five outbound. Nothing inbound can change capacity, and nothing outbound can change a policy. v 1.0 · owner Data & AI Global Practice · date 2026-09

Decisions

  • Nothing inbound can change capacity and nothing outbound can change a policy.
  • Policy arrives through Git rather than through the API, so every change to how decisions are made is reviewed before it reaches a controller.
  • The forecast feed is signed and treated as an external declaration, at the same trust level as a schedule.

Cadence

  • Prometheus 10 s pull, Azure Monitor 60 s pull — the difference is why utilization is ranked below backlog.
  • Journal writes are asynchronous; alerts are asynchronous; capacity calls are synchronous and rate-limited.

Omitted here

  • Identity per interface is in act 6; this view is about shape and direction only.
  • Provider-specific error semantics live with the adapters in view 09.