Capacity Planning
Before you start: basic familiarity with SLOs/error budgets and Kubernetes autoscaling concepts is assumed β this course focuses on the infrastructure-sizing side, not on defining reliability targets from scratch.
How This Differs From SLOs
SLOs (Service Level Objectives) define your reliability target. Capacity planning is the separate discipline of making sure you have enough infrastructure β compute, storage, network β to actually hit that target under real and projected load. An SRE needs both, but they answer different questions: "what reliability do we promise?" vs "do we have enough headroom to deliver it?"
The Core Capacity Planning Loop
Load Testing
You can't plan capacity you haven't tested. Common approaches:
Scaling Thresholds
| Signal | Typical trigger | Action |
|---|
|---|---|---|
| CPU utilization | > 70% sustained for 5 min | Scale out (add instances) |
|---|---|---|
| Memory utilization | > 80% sustained | Scale out or investigate leak |
| Queue depth | Growing faster than consumption rate | Add consumers / scale workers |
| P99 latency | Breaching SLO threshold | Immediate scale + investigate |
Cost-Aware Headroom
Over-provisioning "just to be safe" is a real cost β capacity planning at senior level is about finding the minimum headroom that reliably meets demand, not maximum headroom. This is where capacity planning and FinOps (the practice of managing cloud spend as an ongoing engineering discipline, not just a monthly bill review) directly intersect.
Forecasting for Planned Events
Before a known high-traffic event (product launch, sale, marketing campaign), capacity planning becomes proactive: pre-scale ahead of the event, run a dedicated load test at expected peak + margin, and have a rollback/circuit-breaker plan if actual traffic exceeds the forecast.
An SLO tells you when you're in trouble (your error budget β the small amount of allowed unreliability your SLO permits before it's breached β burning down faster than expected). Capacity planning is what you do before that happens β provisioning ahead of demand so the error budget never has to be spent on a preventable capacity shortfall.

