Autoscaling Controller · View 06 of 37 · 2 · Structure
Decisions
- Every service is stateless. All state is in the row below, and no service reads another region's copy of it.
- PostgreSQL Flexible Server holds both authoritative stores, because the registry and the desired state must be written in one transaction when a bound changes.
- The journal leaves through Event Hubs rather than being written synchronously, so a journal outage cannot stall a decision.
Technology
- Control plane: Go services on AKS, three availability zones.
- Signal store: Grafana Mimir on Blob storage — Prometheus-compatible, and the rollup story is native.
- Journal: Event Hubs → Azure Data Explorer for query, plus an immutable Blob copy for the tamper-evident record.
Assumptions
- Azure Data Explorer is chosen over self-hosted ClickHouse to keep the controller's own operational cost inside the 1.5% budget; ClickHouse is the portable substitute if that budget is spent elsewhere.
- AKS hosts the controller but is also a scaling target. The controller's own node pool is excluded from its own management, and sized statically.