We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
System Design Masterclass · Reliability Resilience
Free preview: the first 2 parts of this 7-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Reliability Resilience
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
It is easy and good
“It is really nice and good Please join the course”
GitHub was acquired by Microsoft in October 2018. Within weeks, traffic patterns shifted in ways nobody had modeled. Developers who had been avoiding GitHub because of uncertainty started returning. New Microsoft internal teams migrated to GitHub for source control. Traffic grew faster than any historical trend had predicted, headroom evaporated, and the infrastructure team had to react instead of plan.
The postmortem was clear: annual capacity reviews are not enough. GitHub moved to a quarterly capacity loop with monthly reviews, and they started modeling growth from business events (acquisitions, enterprise deals, free tier expansions) instead of extrapolating from historical RPS alone.
This is the core tension of capacity planning. Spreadsheets are always wrong. They assume the future looks like the past, which is true right up until a product launch, an acquisition, a viral moment, or a marketing campaign changes the shape of traffic overnight. But spreadsheets are also the best tool you have if you combine them with real load tests, business inputs, and enough headroom to absorb forecast error. The goal is not to predict the future perfectly. The goal is to never be caught without enough capacity to serve your users.
Capacity planning is not one meeting or one spreadsheet. It is a continuous pipeline with four stages, and each stage feeds the next.
| Stage | Input | Output | Owner |
|---|---|---|---|
| Measure | /Datadog metrics at minute resolution, 2+ years of history | Baseline: current RPS, CPU, memory, queue depth per service | Platform team |
| Forecast | Baseline + growth model + event calendar | Projected demand per service per month for the next 6 to 18 months | Capacity team + product |
| Plan | Forecast + headroom policy (30-50% above forecast peak) | Month-by-month table of required cores, memory, and quotas | Capacity team + finance |
| Execute | Plan + cloud provider lead times | Reserved instances ordered, quota increases filed, autoscaler bounds set | Cloud ops |
The pipeline runs quarterly. Between quarters, monthly check-ins compare forecast to reality and adjust if the gap grows beyond 10%. The entire point is to order capacity before you need it, because cloud providers are not infinitely elastic. Large instance types sell out regionally during peak events, quota increase requests take days or weeks, and stateful database expansions cannot happen in minutes.