Edition 1·Updated 2026-10-03·23 min read
Sources
About this book
An overview of the book, with source information for further reading.
The Art of Capacity Planning Scaling Web Resources in the Cloud
John Allspaw Arun KejariwalA practical, field-tested guide for web operations professionals on how to measure, plan, and manage the technical resources needed for a growing web application to ensure high performance and availability.
This book provides a practical, real-world approach to capacity planning for growing websites and mobile apps, rejecting complex mathematical models in favor of adaptive, empirical methods. It guides engineers, developers, and managers through the entire process: setting performance and availability goals, measuring system and application metrics to find resource ceilings, forecasting future needs based on historical trends, and deploying and managing capacity, including modern practices like cloud-based autoscaling. Instead of getting bogged down in queuing theory, the authors, drawing from their experiences at companies like Twitter and Flickr, offer a common-sense framework for justifying expenditures, managing procurement, and ensuring that infrastructure can handle both expected growth and unexpected traffic spikes, ultimately tying technical capacity directly to business success.
Movement I
Orient
What this book claims, and who wrote it.
- — The book's one-line promise
- — The author and where the book stands
A practical, field-tested guide for web operations professionals on how to measure, plan, and manage the technical resources needed for a growing web application to ensure high performance and availability.
The need-to-know
Capacity planning is an ongoing, adaptive process, not a one-time task. Effective capacity planning is based on empirical measurement of real system usage, not abstract models or artificial benchmarks. System-level statistics (CPU, memory, disk I/O) must be correlated with application-level business metrics (e.g., user signups, photo uploads) to provide context and justify costs.
About this guide
The guide describes these challenges, steps and possible outcomes.
Who it is for
An engineer (systems, software, SRE) or manager responsible for a growing website or mobile application who wants to ensure it remains fast, reliable, and available for users without overspending on infrastructure.
Challenges
- In practice · The website or app is experiencing or anticipating rapid growth, leading to performance degradation, slow response times, and potential outages that frustrate users and harm the business. It's difficult to know how much hardware or cloud resources to provision, when to do it, and how to justify the cost.
- For the reader · They feel anxious and reactive, constantly firefighting performance issues and fearing the next traffic spike. They lack the data and a clear process to confidently plan for the future, making them feel unprepared and unable to articulate their needs to business leaders.
Steps to consider
- 1Set Clear Goals: Define specific performance, availability, and reliability targets (SLAs) for your application.
- 2Measure What Matters: Continuously collect and graph both system-level (CPU, disk I/O) and application-level (user actions) metrics to understand your current system and find its resource ceilings.
- 3Forecast the Future: Use historical data and trend analysis to create robust predictions for future needs and establish a timeline for procurement.
- 4Deploy and Manage: Implement automated deployment and configuration systems to efficiently bring new capacity online and manage it.
- 5Leverage the Cloud: Master autoscaling principles to dynamically manage capacity in a cloud environment, balancing cost and performance.
Risks
The website/app will suffer from slowdowns and frequent outages as traffic grows. Users will become frustrated and abandon the service, damaging the brand and revenue.
Intended result
The reader will have a clear, data-driven understanding of their system's capacity and limits. They can confidently predict future needs and justify capital expenditures to leadership.
Set the record straight
What this book sets straight
The common beliefs this book pushes back on.
Capacity planning requires complex mathematical models and queuing theory.
Practical capacity planning is adaptive and based on empirical observation of a live system's usage, not on static theoretical models which are often irrelevant in fast-changing web environments.
Performance tuning is the same as capacity planning.
Performance tuning optimizes existing systems, while capacity planning determines what new resources a system needs and when it needs them; you should plan based on current performance and treat future tuning gains as a bonus.
You can simply buy more powerful hardware (vertical scaling) to solve capacity problems.
Horizontal and diagonal scaling are often more effective and cost-efficient for web applications, and architectural design has a greater impact on scalability than simply upgrading individual components.
Movement II
Map
The book's main ideas and how they connect.
The Art of Capacity Planning Scaling Web Resources in the Cloud's own model — and how it sits inside its field.
- — 11 constructs the book works with
- — Where it agrees with the field, exceeds it, or fills a gap
The constructs
How they connect (12)
- Architectural Divisibility → influences → Resource Headroom
- Capacity Planning Process Rigor → influences → Resource Headroom
- Elastic Provisioning Strategy → influences → Resource Headroom
- Automated Deployment and Configuration → influences → Time to Provision New Capacity
- Hardware Selection and Homogeneity → influences → Time to Provision New Capacity
- Capacity Planning Process Rigor → influences → Operational Efficiency
- Hardware Selection and Homogeneity → influences → Operational Efficiency
- Elastic Provisioning Strategy → influences → Operational Efficiency
- Resource Headroom → influences → Application Performance
- Resource Headroom → influences → Application Availability
- Time to Provision New Capacity → influences → Application Availability
- Operational Efficiency → influences → Cost-Effectiveness of Infrastructure
Where this book diverges from the corpus
- exceeds The field folds capacity planning (forecasting, headroom, provisioning) into one broad construct, while the book treats it as a continuous measure-forecast-manage process in its own right, with more operational depth.
- fills gap Matching hardware or instance types to component workloads and keeping configurations homogeneous is not covered by any field construct.
- exceeds The field mentions headroom only as part of capacity planning, while the book defines it as a margin between peak utilization and a ceiling, which makes it usable as a concrete measure.
- fills gap The field's delivery lead-time measures concern code changes, not the procurement-to-production time for new infrastructure capacity, so this is uncovered.
Movement III
Master
Explore the book's ideas, examples and practical tools.
How the author makes the case — section by section, with the book's own tools.
- — 11 sections, in the book's order
- — The book's frameworks, checklists, and worked cases
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section defines how much spare capacity to hold between your peak load and the point where service degrades. It shows how to set that margin deliberately instead of by instinct.
Resource Headroom
The margin of available capacity between the typical peak resource utilization (e.g., CPU, disk I/O) and the established resource ceiling (the point of failure or unacceptable performance degradation).
Why it matters. Too little headroom turns a traffic spike or a node failure into an outage, while too much quietly drains budget.
Myth
If average utilization is low, you have plenty of headroom.
Reality
Headroom is measured against peak load and the real ceiling, not the average. The ceiling is usually below 100%, because latency often degrades well before a resource is exhausted. Losing a node also removes its share of capacity, so remaining machines absorb more than the average suggests.
- Application AvailabilityFramework — How this mechanism is run, step by step, as the literature describes it.
- Architectural DivisibilityFramework — How this mechanism is run, step by step, as the literature describes it.
- Operational EfficiencyFramework — How this mechanism is run, step by step, as the literature describes it.
- Resource HeadroomFramework — How this mechanism is run, step by step, as the literature describes it.
- Capacity Planning Process Rigor — decision rulesChecklist — 5 checkpoints
- Resource Headroom — decision rulesChecklist — 5 checkpoints
- Architectural DivisibilityCase study — The source's MySQL example isolates one user database during a peak hour.
- Elastic Provisioning StrategyCase study — Take the single Apache web server in the passages.
- Operational EfficiencyCase study — The source's web tier shows the method.
- Resource HeadroomCase study — The source's own example sets web servers at 85 percent CPU as the upper limit, reserving 'enough headroom to handle occasional spikes'.
- Component Ceiling SheetTemplate
- Tier Efficiency Audit SheetTemplate
- Resource Headroom WorksheetTemplate
- Headroom is peak load against a tested ceiling, never average load against theoretical maximum.
- Size the margin to survive one node loss and the growth that arrives while new capacity is being built.
- Monitor every resource per tier, because the first to saturate sets your real headroom.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Resource Headroom Worksheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 13 tools for this section. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section breaks down the full path from recognizing a capacity need to serving production traffic on the new resource. It shows where the delay hides and how to shorten it.
Time to Provision New Capacity
The total time elapsed from identifying a need for new capacity to having that new capacity fully deployed, configured, tested, and serving production traffic. This is also referred to as the 'procurement pipeline' time.
Why it matters. Provisioning time determines how far ahead you must forecast and how long you remain exposed if demand outruns your headroom.
Myth
Lead time is mostly the vendor's delivery or boot time, so it's outside your control.
Reality
In most organizations the delay is internal: approvals, rack-and-cable work, OS installs, configuration, and testing. Even in the cloud, the instance boots in minutes but the process of validating and routing traffic to it can take days. Mapping each stage usually reveals that the longest waits are queues, not machine time.
- Time to Provision New CapacityFramework — How this mechanism is run, step by step, as the literature describes it.
- Automated Deployment and Configuration — decision rulesChecklist — 5 checkpoints
- Cost-Effectiveness of Infrastructure — decision rulesChecklist — 5 checkpoints
- Time to Provision New Capacity — decision rulesChecklist — 5 checkpoints
- Capacity Planning Process RigorCase study — The source's Flickr example shows the measure-to-forecast loop.
- Time to Provision New CapacityCase study — The book describes an operations engineer told they have one week to prepare for an unknown amount of extra traffic, for instance from a new feature launch or a link from a major site.
- Procurement Pipeline Lead-Time LogTemplate
- Measure lead time from the moment the need is identified to production traffic, not from the purchase order.
- Waiting in approval and handoff queues often outweighs the technical build time.
- Your forecast horizon should be at least as long as your realistic, not best-case, provisioning time.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Procurement Pipeline Lead-Time Log” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 7 tools for this section. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section looks at how well you convert provisioned compute, memory, power, and rack space into served load. It shows where idle and over-provisioned capacity accumulates.
Operational Efficiency
The degree to which infrastructure resources (e.g., compute, memory, power, rack space) are utilized effectively to serve application load, minimizing waste from idle or over-provisioned components.
Why it matters. Efficiency determines how much of what you pay for does useful work, and that feeds directly into the cost of running the service.
Myth
High utilization is always the goal, so the fewer idle resources, the better.
Reality
Pushing utilization toward the ceiling removes the headroom that protects performance and availability. Efficiency means minimizing waste while keeping the margin you have deliberately chosen. A fleet at 40% peak utilization with planned headroom can be more efficient than one at 90% that fails under a spike.
- Efficiency is waste removed beyond your intended headroom, not maximum utilization.
- Idle capacity outside peak hours is often the largest recoverable waste, and elasticity addresses it.
- Measure efficiency per tier, because a fleet-wide average hides over-provisioned components.
The deep drill-down: 9 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Tier Efficiency Audit Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section ties user-facing speed, meaning response time, latency, and page load, to the capacity decisions behind it. It explains how to read performance as an early warning of capacity trouble.
Application Performance
The speed and responsiveness of the application as experienced by the end-user, typically measured by metrics like response time, latency, and page load time.
Why it matters. Users judge the service by how fast it feels, so performance is where capacity shortfalls first become visible and costly.
Myth
If servers are not maxed out on CPU, the application's performance cannot be a capacity problem.
Reality
Latency typically climbs well before any resource hits 100%, as queues form in connection pools, disks, or locks. Performance degrades along a curve as headroom shrinks, so slowdowns can appear while dashboards still look healthy.
- Application PerformanceFramework — How this mechanism is run, step by step, as the literature describes it.
- Application Performance — decision rulesChecklist — 5 checkpoints
- Application Performance Requirement and Gap SheetTemplate
- Provisioning Lead-Time and Automation AuditTemplate
- Latency rises before resources are exhausted, so use it as an early indicator of shrinking headroom.
- Percentile response times reveal capacity problems that averages conceal.
- Derive your capacity ceiling from the load at which latency crosses your target.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Application Performance Requirement and Gap Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 4 tools for this section. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section connects uptime targets and SLAs to the two capacity factors that most threaten them: thin headroom and slow provisioning. It helps you see where capacity causes downtime.
Application Availability
The percentage of time that the application is operational and accessible to users, often expressed as a number of 'nines' (e.g., 99.99%) and measured against Service Level Agreements (SLAs).
Why it matters. Each additional nine of availability allows far less downtime, so capacity shortfalls that were once tolerable can breach your SLA.
Myth
Availability problems come from failures such as crashed servers and bad deploys, not from capacity.
Reality
Running out of capacity looks like an outage to users, since overloaded systems time out or reject requests. Slow provisioning stretches that outage, because you can't add capacity until the pipeline delivers it. Capacity shortfalls are a routine cause of SLA breaches.
- Application Availability — decision rulesChecklist — 5 checkpoints
- Architectural Divisibility — decision rulesChecklist — 5 checkpoints
- Application AvailabilityCase study — The source's real example is Twitter and the FIFA World Cup.
- Application PerformanceCase study — Before the 2014 FIFA World Cup, Twitter had a recurring performance and availability problem.
- Availability Red-Line WorksheetTemplate
- Saturation is experienced by users as downtime, so capacity belongs in your availability analysis.
- Redundancy delivers availability only if the survivors can carry peak load.
- Faster provisioning shortens the duration of capacity-driven outages.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Availability Red-Line Worksheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 5 tools for this section. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section frames infrastructure spending, both CapEx and OpEx, relative to the performance and availability it delivers. It shows how to judge whether the money is well spent.
Cost-Effectiveness of Infrastructure
The financial efficiency of the infrastructure, reflecting the balance between operational expenditure (OpEx) and capital expenditure (CapEx) against the performance and availability delivered.
Why it matters. Judging cost on the bill alone leads you to cut spending that protects service quality, or to keep paying for capacity that serves no one.
Myth
Moving to the cloud's pay-as-you-go model automatically lowers infrastructure costs.
Reality
OpEx pricing removes up-front outlay but not waste: idle or oversized instances are billed continuously, and steady baseline load can be cheaper on reserved or owned capacity. Cost-effectiveness depends on how efficiently resources are used and on matching the pricing model to the load pattern.
- Cost-Effectiveness of InfrastructureFramework — How this mechanism is run, step by step, as the literature describes it.
- Operational Efficiency — decision rulesChecklist — 5 checkpoints
- Cost-vs-Delivered-Performance Review SheetTemplate
- Cost-effectiveness is spend relative to delivered performance and availability, not a lower bill.
- Match pricing models to the load shape: commitments for baseline, on-demand for peaks.
- Gains here come mainly from operational efficiency, so reducing idle capacity moves cost the most.
The deep drill-down: 9 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Cost-vs-Delivered-Performance Review Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 3 tools for this section. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section shows how splitting an application into separately measurable tiers determines where capacity can be added. It also shows how that choice shapes the headroom you can maintain.
Architectural Divisibility
The degree to which a web application's architecture is segmented into independent, single-purpose components (e.g., web servers, database clusters, microservices) that can be measured, managed, and scaled separately.
Why it matters. A monolith forces you to scale everything to relieve one bottleneck, so headroom is expensive and you can't tell which part is running out.
Myth
Breaking an application into microservices automatically makes it easier to scale.
Reality
Divisibility pays off only when each component has its own metrics, its own ceiling, and a clean interface. Without them you have more moving parts and the same blind spots. The benefit comes from being able to scale the database tier without touching the web tier, not from the number of services.
- A component is only divisible if you can measure it and add capacity to it in isolation.
- Divide first along the lines of your actual bottlenecks, since that is where independent scaling saves money.
- A shared stateful backend undoes the divisibility of the tiers in front of it.
The deep drill-down: 9 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Component Ceiling Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section covers the measure-forecast-procure loop that turns raw metrics into decisions about future resources. It explains what separates a continuous practice from an occasional spreadsheet exercise.
Capacity Planning Process Rigor
The extent to which an organization systematically and continuously engages in measuring system and application metrics, forecasting future resource needs based on historical trends, and managing the procurement and deployment pipeline.
Why it matters. Without a repeatable process you buy capacity after the traffic arrives, which leaves you with outages when you underbuy and idle spend when you overbuy.
Myth
Capacity planning is a forecasting exercise: get the growth curve right and the rest follows.
Reality
A forecast is only as good as the measurements feeding it and the pipeline that acts on it. A perfect prediction delivered to a team with a six-week procurement cycle still arrives too late. Rigor lies in the loop, meaning continuous measurement, regular re-forecasting, and a tested path to deployment.
- Capacity Planning Process RigorFramework — How this mechanism is run, step by step, as the literature describes it.
- Capacity Planning Cycle SheetTemplate
- The value of capacity planning is the closed loop of measure, forecast, and act, not any single forecast.
- Forecast against business drivers, then check the forecast against actuals every cycle.
- Subtract your provisioning lead time from the forecasted ceiling date to get the real deadline.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Capacity Planning Cycle Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 2 tools for this section. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section explains how scripted OS installs, code deploys, and configuration management make new servers identical and quick to add. It focuses on the effect on how fast capacity can arrive.
Automated Deployment and Configuration
The degree to which an organization uses automated tools (e.g., Chef, Puppet, SystemImager) to install operating systems, deploy application code, and manage server configurations consistently and without manual intervention.
Why it matters. If building a server involves manual steps, every capacity increase is slow and error-prone, and your plan is only as fast as your slowest hand-built machine.
Myth
Automation is a convenience for large fleets and isn't worth the effort for a handful of servers.
Reality
The payoff comes at the moment you need capacity urgently, when manual builds are the most likely to drift or fail. Automation also records how a correct server looks, so every new node starts in a known state. That matters at five servers as much as at five hundred.
- Automated Deployment and ConfigurationFramework — How this mechanism is run, step by step, as the literature describes it.
- Automated Deployment and ConfigurationCase study — The source's own arithmetic: your capacity forecast says you run out in six weeks, and adding new hardware takes three weeks, so you have only three weeks of breathing room.
- Automation shortens provisioning only if the entire build is scripted, with no manual steps.
- Rebuilding servers from scratch regularly is the only reliable test that your automation works.
- Consistent builds also make servers interchangeable, which simplifies troubleshooting and capacity math.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Provisioning Lead-Time and Automation Audit” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 2 tools for this section. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section compares ways to add and remove capacity: scaling out, scaling up, mixing the two, and letting the cloud adjust resources automatically. It helps you pick a method that matches your load pattern.
Elastic Provisioning Strategy
The approach used to add or remove capacity, including horizontal/diagonal scaling, and the use of cloud-native features like autoscaling to dynamically adjust resources based on real-time load.
Why it matters. The strategy you choose sets how closely capacity follows demand, which decides whether you pay for idle servers or watch performance collapse during a surge.
Myth
Turning on autoscaling means you no longer need to plan capacity.
Reality
Autoscaling reacts to load that has already arrived, and new instances take time to boot and warm up. It also cannot fix a bottleneck in a non-scaling component such as a database, and it can run up costs if limits aren't set. You still need to know your ceilings, minimums, and maximums.
- Elastic Provisioning StrategyFramework — How this mechanism is run, step by step, as the literature describes it.
- Elastic Provisioning Strategy — decision rulesChecklist — 5 checkpoints
- Elastic Scaling Policy SheetTemplate
- Autoscaling is a mechanism within a plan, and it works only if you know the limits of what sits behind it.
- Choose scaling triggers from the resource that saturates first, and tune them to your boot and warm-up time.
- Set hard maximums so a traffic anomaly or runaway loop can't produce an unbounded bill.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 6 failure modes, and the “Elastic Scaling Policy Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 3 tools for this section. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
strong · 1 source
- The Art of Capacity Planning Scaling Web Resources in the Cloud
This section covers choosing the right server or instance type for each role and keeping servers in a role identical. It links those choices to faster provisioning and less waste.
Hardware Selection and Homogeneity
The practice of selecting hardware (or virtual instance types) that is appropriate for the specific workload of a given architectural component, and maintaining consistency in hardware configurations for servers performing the same role.
Why it matters. A mismatched or sprawling hardware mix makes capacity planning guesswork, slows every build, and leaves expensive resources idle.
Myth
Buying the biggest, most powerful machines for every role is the safe choice.
Reality
A workload's dominant resource differs by role: a cache wants memory, a database wants disk I/O, a web tier wants CPU. Oversized general-purpose machines waste the resources the role doesn't use, and a mixed fleet makes per-node capacity inconsistent. Fit and uniformity matter more than raw size.
- Hardware Selection and HomogeneityFramework — How this mechanism is run, step by step, as the literature describes it.
- Hardware Selection and Homogeneity — decision rulesChecklist — 5 checkpoints
- Cost-Effectiveness of InfrastructureCase study — The Ellen DeGeneres Oscar tweet in 2014 produced a huge spike in views and retweets in a short time, and the outage that followed traced to a missing architecture component in one data store and in the search tier.
- Hardware Selection and HomogeneityCase study — The source's own example is a database server answering queries from frontend web servers.
- Role Configuration CardTemplate
- Pick hardware to match the resource that limits each role, not the biggest option available.
- A uniform fleet lets you express capacity as a known number of load units per node.
- Change standards by role, as a whole, rather than allowing a patchwork of one-off upgrades.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Role Configuration Card” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 5 tools for this section. Included when you buy this guide.
Grounded in: The Art of Capacity Planning Scaling Web Resources in the Cloud
Movement III · The run-it-now depth
The Playbook
Practical tools and examples from this guide.
Frameworks
Application Availability
How this mechanism is run, step by step, as the literature describes it.
- 1Write the availability target as a number tied to a contract. State the percentage (for example 99.99 percent), then translate it into allowed unavailability: 99.99 percent means 0.01 percent of the time the service can be down and still meet the SLA. Record what counts as 'unavailable' before anyone measures anything.
- 2Separate availability from performance in the requirement. Define load and capacity requirements with specific metrics: response times, consumable capacity, and peak-driven processing. Peak-driven processing is the workload your web servers, databases and other resources carry at peak usage. A service that responds too slowly under peak is effectively failing, so set the 'degradation affects end-user experience' point explicitly.
- 3Map the backend and treat each component as its own availability risk. A typical modern app has a cache, persistent storage, a queue, a search service and an authentication service. Plan capacity for each service or microservice individually, and account for upstream and downstream services in an SOA or microservice architecture.
- 4Find each component's red line. For each piece, such as a database server, determine how many queries per second it can serve before performance degradation affects users. Adjust for periodic spikes, subtract a comfortable percentage of headroom (safety factor), and keep the resulting single number per configuration and role.
- 5Use the red line to set alert thresholds and growth triggers. The red line tells you the load that makes the component unresponsive or forces a fail-over. It also tells you what to expect from adding or removing similar servers, and when to begin sizing the next order of capacity.
- 6Include the failure point in every calculation. Treat the point of failure as mandatory input, not optional. Run a segmented architecture so you can isolate the limits of each part of the backend.
- 7Plan for spikes using past events, then question the cost. Compare the magnitude of past spikes to normal traffic for a first-cut estimate of the next one. Decide explicitly whether to deploy capacity for one-time events that sit idle most of the year, and decide how you will handle unplanned events such as a power failure.
- 8Cover Disaster Recovery and failover as availability inputs, and re-run the process continuously. The source says expected availability shapes capacity planning in part through DR and failover. It also says that in an Agile environment planning is continuous, flexible and adaptive, and that static theoretical models fail.
Application Performance
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Architectural Divisibility
How this mechanism is run, step by step, as the literature describes it.
◆ The full 9-step framework — included with this guide purchase
Automated Deployment and Configuration
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Capacity Planning Process Rigor
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Cost-Effectiveness of Infrastructure
How this mechanism is run, step by step, as the literature describes it.
◆ The full 9-step framework — included with this guide purchase
Elastic Provisioning Strategy
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Hardware Selection and Homogeneity
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Operational Efficiency
How this mechanism is run, step by step, as the literature describes it.
◆ The full 9-step framework — included with this guide purchase
Resource Headroom
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Time to Provision New Capacity
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Checklists
Application Availability — decision rules
- If the SLA promises a percentage such as 99.99 percent, then convert it into the allowed 0.01 percent unavailability and treat any component whose failure alone could consume that allowance as a priority for redundancy or failover.
- If a component's load approaches its red line (measured capacity minus spike adjustment and headroom), then begin sizing new capacity and alert before the point where it becomes unresponsive or fails over.
- If an event is predictable (Super Bowl, a show launch), then estimate the spike from past spikes relative to normal traffic, and weigh the idle-capacity cost against the downtime risk before provisioning.
- If you have only a week to prepare for unknown extra traffic, then do not build a queuing model; measure each component's limit, apply headroom, and fix the weakest point first, since models go stale as code and usage change.
- If the architecture is SOA or microservices, then compute capacity per service with its upstream and downstream dependencies included, because one service's ceiling caps the availability of what depends on it.
Application Performance — decision rules
◆ All 5 checkpoints — included with this guide purchase
Architectural Divisibility — decision rules
◆ All 5 checkpoints — included with this guide purchase
Automated Deployment and Configuration — decision rules
◆ All 5 checkpoints — included with this guide purchase
Capacity Planning Process Rigor — decision rules
◆ All 5 checkpoints — included with this guide purchase
Cost-Effectiveness of Infrastructure — decision rules
◆ All 5 checkpoints — included with this guide purchase
Elastic Provisioning Strategy — decision rules
◆ All 5 checkpoints — included with this guide purchase
Hardware Selection and Homogeneity — decision rules
◆ All 5 checkpoints — included with this guide purchase
Operational Efficiency — decision rules
◆ All 5 checkpoints — included with this guide purchase
Resource Headroom — decision rules
◆ All 5 checkpoints — included with this guide purchase
Time to Provision New Capacity — decision rules
◆ All 5 checkpoints — included with this guide purchase
Case studies — including what didn't work
Application Availability
The source's real example is Twitter and the FIFA World Cup. Before the 2014 World Cup, Twitter's recurring story was that the service became unavailable during the previous tournament: every time Brazil or Japan scored, the tweet-volume spike took the service down, and the Fail Whale became the symbol of those availability problems. The 2014 goal was therefore stated as absolute zero downtime, alongside a fast mobile app for photo sharing. The method the source suggests is to analyze the magnitude of past spikes relative to normal traffic and derive a first-cut estimate of the next spike. It then raises the cost question: should you deploy capacity for such one-time events when it will mostly sit underutilized? It also points to unplanned events, such as the power failure during Super Bowl XLVII in 2013, which no traffic forecast covers. The conclusion is that high availability in these moments requires a systematic approach to both architectural design and capacity planning, not a larger server count alone.
Application Performance
Before the 2014 FIFA World Cup, Twitter had a recurring performance and availability problem. In the previous World Cup, every time Brazil or Japan scored, the spike in tweet volume took the service down, and the Fail Whale became popular as a result. The 2014 goals were zero downtime and a blazingly fast mobile app for sharing photos. The source's first-cut method is to analyze the magnitude of past spikes relative to normal traffic and project the next one. It then raises the cost question: should you deploy capacity for one-time events when it will sit underutilized most of the year? It also raises the unplanned case, such as the power failure during Super Bowl XLVII in 2013. The answer is a systematic approach to architectural design and capacity planning, not a one-off fix. Write the target as a number, measure each backend component against it, and size for the estimated spike.
◆ What happened, and the outcome — included with this guide purchase
Architectural Divisibility
The source's MySQL example isolates one user database during a peak hour. The metrics are connections and INSERT/UPDATE/DELETE/SELECT rates, with a replication-lag graph beneath them. Most metrics show a few spikes, but only one stands out: replication lag peaks at more than 80 seconds. With all user queries going to slaves, a user could annotate a photo, click Submit, and not see the comment, which is an out-of-sync defect. Because the database is a separate, measurable component, the next question is which resource caused the lag. Disk utilization (reported every 60 seconds from iostat's %ioutil) hit 100 percent more than once. Lag jumped only when %iowait exceeded 40 percent. So the real ceiling is I/O wait, not raw disk utilization. The planner ties that ceiling to a user-level unit, photos per user per database, and forecasts when databases will cross it. None of this analysis is possible if the database shares a box and a metric stream with the web tier.
◆ What happened, and the outcome — included with this guide purchase
Automated Deployment and Configuration
The source's own arithmetic: your capacity forecast says you run out in six weeks, and adding new hardware takes three weeks, so you have only three weeks of breathing room. Of the stages (ordering, shipping, physical installation, OS/application/configuration installation, testing, production), the one you control most is integrating machines onto the network and beginning operations. Automated deployment and configuration compresses that stage. Suppose you pull a machine out of the crate and it needs OS, application, settings, and data. With a Chef/Puppet-style tool driven from one version-controlled repository, those steps run from code rather than by hand. You then ramp the machine by raising its weight in the load-balanced pool while measuring its capacity as in Chapter 3. The gain is not a fixed number of days; it is a shorter, more predictable install segment inside the three weeks, which widens your margin before the six-week exhaustion date.
◆ What happened, and the outcome — included with this guide purchase
Capacity Planning Process Rigor
The source's Flickr example shows the measure-to-forecast loop. Two days of data (Saturday and Sunday) put total CPU next to the photo processing rate. Sunday's peaks ran more than 20 percent higher, but in the evening its rate fell below Saturday's at the same time of day. Distilling the two series showed that every 30 photos processed per minute corresponded to an additional 25 percent CPU utilization. The authors call this extremely rough and based on a small sample, and say confirming the 25:30 ratio rigorously would mean looking at a larger range of traffic and upload rates. Even so, it gave a starting point for determining ceilings. With web traffic and upload rate both tracked, you can work out how many machines are needed if both processes run on each machine. The approach worked for more than a year in planning Flickr's web server capacity. Eventually image processing got its own dedicated cluster that could use multicore CPUs.
◆ What happened, and the outcome — included with this guide purchase
Cost-Effectiveness of Infrastructure
The Ellen DeGeneres Oscar tweet in 2014 produced a huge spike in views and retweets in a short time, and the outage that followed traced to a missing architecture component in one data store and in the search tier. The cost lesson is that always-on capacity for such a burst is not financially sound, yet an under-designed architecture fails anyway. The fix the passage points to is not buying more hardware but load testing the specific scenario (more than a million people searching for the same tweet and then retweeting it), which would have exposed the gap. Burst handling then comes from queuing and caching, which alleviate the capex overhead, rather than from permanent peak-sized servers. Capacity for the baseline is sized from measured per-component workloads and forecast growth. The spike becomes a forcing function to revisit the design, so the money goes to the architecture gap and not to idle machines.
◆ What happened, and the outcome — included with this guide purchase
Elastic Provisioning Strategy
Take the single Apache web server in the passages. Its hourly graph shows no pattern, its daily graph a smooth decline and rise, and its weekly graph shows Monday as the highest-traffic day. Memory, disk I/O and network all stay far from their limits at the Monday peak, so the binding resource is CPU. You set the web tier's upper limit at 85 percent CPU, leaving a 15 percent safety margin for spikes. You place the servers behind a load balancer and push a controlled share of live traffic to one node to confirm where its ceiling sits. The scale-out trigger is then CPU approaching 85 percent during the Monday peak cycle, adding identical, automatically configured nodes. If this were a datacenter, a three-week hardware lead time against six weeks of remaining headroom would leave only three weeks, so you would order early. In the cloud, the same trigger can fire an automated add, bounded by cost reporting.
◆ What happened, and the outcome — included with this guide purchase
Hardware Selection and Homogeneity
The source's own example is a database server answering queries from frontend web servers. Step one is to isolate that role. Step two is to fix one hardware configuration for it and ask how many QPS that configuration can serve before end users feel degradation. Suppose the measured point is Q QPS. You adjust for periodic spikes and subtract a headroom percentage H, which gives a single red-line number R for 'this database configuration in this role.' That number gives you three things: the alert threshold, the expected effect of adding or removing similar database servers (roughly N servers of the same configuration, so about N×R, though system performance does not scale linearly with traffic, so verify by measurement), and the trigger date to start sizing the next order, given long lead times. You take the request to finance as: 'if we get these new database servers, pages are X percent faster and pageviews, with ad revenue, can rise up to Y percent.' The counter-example is the 2014 Oscars tweet outage. A missing architecture component in a data store and the search tier, never exercised by load testing a million people searching for and retweeting one tweet, caused it. The lesson is to test each role's configuration against the extreme scenario, not only the average.
◆ What happened, and the outcome — included with this guide purchase
Operational Efficiency
The source's web tier shows the method. The team picks CPU as the single defining capacity metric because it tracks the work Apache does. They cap total CPU at 85 percent, which leaves headroom for occasional spikes while still using servers efficiently. They find CPU usage to busy Apache processes runs about 1:1, so either number can be computed from the other. That ceiling then becomes the yardstick for the cluster. Any host sitting well below 85 percent at peak is a candidate for consolidation or a smaller instance type. The source's pricing tables show why this matters: moving from AWS m4.large ($0.10 on-demand) to m4.16xlarge ($3.20) multiplies the hourly price 32 times, and GCE n1-standard-1 ($0.05) to n1-standard-64 ($3.04) is roughly 61 times. A database case adds a caution. Disk utilization hit 100 percent several times, but replication lag spiked only when I/O wait passed 40 percent. The tier's real limit is I/O wait, not the headline utilization number.
◆ What happened, and the outcome — included with this guide purchase
Resource Headroom
The source's own example sets web servers at 85 percent CPU as the upper limit, reserving 'enough headroom to handle occasional spikes'. That leaves a 15 percent margin of safety. The ceiling for forecasting is 85 percent, not the 100 percent at which the server fails. Say your busiest observed peak on a web server is 70 percent CPU. Against the 85 percent working ceiling you have 15 points of headroom. Against 100 percent you would wrongly count 30. The source asks why 15 percent and not 10 or 20, and answers that the number is a slippery educated guess. You justify it by looking at the spikes you have seen. The same logic applies to the database example. Find the QPS at which end-user experience degrades, subtract a comfortable percentage for periodic spikes, and the resulting single number characterizes that configuration for that role. That number sets the alert threshold and tells you when to start sizing new database capacity.
◆ What happened, and the outcome — included with this guide purchase
Time to Provision New Capacity
The book describes an operations engineer told they have one week to prepare for an unknown amount of extra traffic, for instance from a new feature launch or a link from a major site. Twitter's 2014 FIFA World Cup goal of zero downtime is a comparable case, since its match-driven tweet spikes once took the service down. Run the pipeline test against a one-week window. On the cloud path, the provisioning clock is short, but you must still size correctly and get approval. The pricing table shows why: an m4.4xlarge costs $0.80/hour on-demand versus $0.496/hour on a 1-year reserved term, so the reserved rate is about 62% of on-demand. A reserved commitment is itself a procurement decision that needs sign-off. On the owned-datacenter path, long supply-chain cycles and provisioning overhead mean a one-week window is almost certainly too short, so the choice is already made by the lead time. Before the event, add and remove a single server through the load balancer to find the per-server limit. Then divide the forecast spike by that limit to get the unit count. The book also asks whether to deploy capacity for a one-time event that will sit underutilized most of the year. Answer that question while timing the stages, not after.
◆ What happened, and the outcome — included with this guide purchase
Templates
Availability Red-Line Worksheet
Application Performance Requirement and Gap Sheet
◆ The fillable template — included with this guide purchase
Component Ceiling Sheet
◆ The fillable template — included with this guide purchase
Provisioning Lead-Time and Automation Audit
◆ The fillable template — included with this guide purchase
Capacity Planning Cycle Sheet
◆ The fillable template — included with this guide purchase
Cost-vs-Delivered-Performance Review Sheet
◆ The fillable template — included with this guide purchase
Elastic Scaling Policy Sheet
◆ The fillable template — included with this guide purchase
Role Configuration Card
◆ The fillable template — included with this guide purchase
Tier Efficiency Audit Sheet
◆ The fillable template — included with this guide purchase
Resource Headroom Worksheet
◆ The fillable template — included with this guide purchase
Procurement Pipeline Lead-Time Log
◆ The fillable template — included with this guide purchase
Items marked Paid are included when you buy this guide.
Movement IV
Reflect
Consider the book's evidence, limitations and how it compares with other sources.
How good is it — where the book stands against the field, what it leaves open, and when to trust it.
- — Its positioning, its critique, its blind spots
- — When to apply it — and when not
- — The evidence behind the advice
Book profile · in the corpus
This book’s model, against the corpus
9 of 11 constructs align with the field · 2 the book adds · 2 where it diverges · the field spans 28 constructs across 11 books
Shared with the corpus — corroborated by other sources
This book's own emphasis — where it's the authority
Where it diverges — the book and the field pull apart
The corpus adds — from 10 other sources this book doesn't cover
The full field guide folds in ideas this book doesn’t reach — drawn from 10 further sources and cited in the full model.
This book’s place in the corpus
Why the corpus guide, not just this book
The book stands on the shoulders of web-operations and capacity-engineering practice, and it is the authority on concrete infrastructure scaling: headroom, hardware homogeneity, provisioning lead time, and capacity-planning process. The reconciled field-guide still adds the human, cultural and measurement context (observability, incident response, leadership, cognitive load, business alignment) that the book largely leaves out.
This guide stands on the shoulders of this book and 10 other sources — every claim cited, the disagreements named.
Read it closely
The book, examined
Not a summary — a close analytical reading: how the book is built, what it leaves open, and where it falls short.
How it’s built — the argument in order
- 01Preface: the problem and the premise — Names the frustration of engineers and developers who have nowhere to turn when asked how much capacity the site needs. Defines the basic concepts: enough resources for expected and unexpected load, a defined procurement and approval system, justification of spending to the business, and a system to manage resources once deployed.
- 02Why the book was written and revised (case against the existing literature) — Argues that earlier capacity-planning books were built on queuing theory and on manufacturing or industrial-engineering assumptions. Says these do not fit web timelines, where code and usage change faster than a model can be built (the Google commit-volume example). Argues that Agile makes capacity planning a continuous, adaptive process. Says the authors learned more from colleagues, conferences such as Velocity and Fluent, and blogs, which is why the second edition adds Readings and Resources sections.
- 03Focus and topics (scope and stance) — States what the book will not do: build models and simulations, run benchmarks repeatedly, or teach Little's Law, Markov chains or Poisson arrivals. States what it will do: cover measurement, procurement and deployment for growing sites with real tools, kept platform-agnostic and using examples to illustrate the process. The flat-tire analogy and the 'common sense is good' claim set the adaptive-not-theoretical tone.
- 04Performance vs. capacity, and common-sense steps — Separates performance tuning (optimizing the existing system) from capacity planning (determining what a system needs and when, using current performance as the baseline). Argues that real-world observation beats artificial benchmarks, using SPEC CPU2006 and SPEC Cloud IaaS 2016 as examples of poor representativeness. Warns that tuning can become an endless time sink.
- 05Goals and architecture (per the book's overview) — Sets performance and availability goals. Argues that a site's architecture must be divisible and measurable so that planning is possible at all (flagged for Chapter 4).
- 06Measurement — Collects system statistics (CPU, memory, disk I/O) and correlates them with application and business metrics such as signups and photo uploads. This gives context and justifies cost, and it locates the resource ceiling of each architectural component.
- 07Forecasting — Uses historical trends to predict when ceilings will be reached. Turns this into justification for hardware or cloud spending and ties technical capacity to business success.
- 08Deployment and management — Covers procurement, time to provision, hardware selection and homogeneity, and automated deployment and configuration. These keep a growing fleet manageable and efficient.
- 09Cloud and autoscaling — Extends the process to elastic provisioning. Autoscaling is powerful but needs carefully designed policies to balance cost, performance and reliability. Handles unexpected spikes while keeping the whole effort tied to business outcomes.
What it leaves unsolved
How should a team prepare when it has only a week to absorb an unknown amount of extra traffic (a feature launch, or a link from a major site)?
The preface poses this scenario to show that queuing models don't help. It offers 'adaptive' practice as the alternative but doesn't say how to size for a truly unknown surge.
How can historical trends forecast demand across discontinuities such as new features, redesigns or outside social events?
The authors admit that deploys and real-world events can change usage characteristics and make models irrelevant. Their own method relies on past observation, so the same limit applies to it, and they do not say how far a trend can be trusted.
Is there any role for queuing theory or modeling, and where exactly does it become useful?
They concede that queuing models can show how large a spike the built-in queues can absorb without hurting availability. They then set the approach aside without saying when that insight is worth the effort.
How can a resource ceiling be found for each component without exposing real users to failure or distorting results with artificial tests?
The book prizes empirical measurement over artificial benchmarks and wants ceilings found 'before users experience them'. It also admits that benchmarks have some value, but the passages don't reconcile the two or show how to test safely.
How should autoscaling policies be designed to balance cost, performance and reliability?
The book says careful policy design is required but gives no decision rule for the trade-off. The right answer depends on the application and the business.
How much headroom is enough, and how do you set the performance and availability targets that drive it?
Headroom, time to provision and cost-effectiveness pull against each other. The framing is 'common sense', with no stated way to price the risk of under-provisioning against the cost of idle capacity.
How can capacity planning succeed when the architecture is not divisible or measurable?
The book makes architectural divisibility a prerequisite for planning. It doesn't say what to do with inherited monoliths or systems that can't be decomposed or instrumented.
How general are the lessons across different databases, web servers, caches and storage systems?
The authors keep the discussion platform-agnostic and use only illustrative examples, and they admit that covering every technology is out of scope. How well the process transfers to specific systems is left to the reader.
Where it falls short — a fair critique
The case against theory is partly self-undermining. The authors say models go stale because usage changes faster than a model can be built. Yet their own approach, forecasting from historical measurement and per-component ceilings, is equally exposed to code deploys and changed usage. The argument shows that any capacity estimate needs continual refreshing. It does not show that models are inferior to trend extrapolation.
The flat-tire analogy sets up a false dichotomy between endless analysis and 'just install the spare'. The choice is not between obsessing over theory and ignoring it. Light modeling alongside measurement is a middle path, and the authors themselves grant that queuing theory can estimate spike absorption.
The dismissal of earlier literature is a sweeping generalization. 'Most books' are said to assume that manufacturing and industrial-engineering concepts apply uniformly, but no specific works or passages are cited. That makes the framing of the field a straw man that is hard to check.
The evidence base is anecdote and professional networks: conversations with colleagues, conference talks, and experience at companies like Twitter and Flickr. Its main support for 'change is too fast to model' is the Google monorepo figure of 16,000 human commits a day. That is an extreme case and may not be typical. The advice may skew toward large, fast-moving web companies and fit smaller, slower-changing, or regulated organizations less well.
The critique of SPEC benchmarks is asserted, not shown. The passages say the benchmarks' characteristics differ from web applications 'based on workload analysis', but give no data. Cloud IaaS 2016 is judged unrepresentative in a sentence. The slide from 'general-purpose benchmarks mislead' to 'avoid artificial environments' also overlooks load testing of your own application on production-like systems, which is neither a SPEC suite nor purely theoretical.
The book promotes correlating system metrics with business metrics (signups, uploads) to justify spending. The passages don't address that such relationships may be nonlinear or confounded, or break down as features change. They also don't say how to show that a business metric causes resource use rather than merely tracking it.
Calling the approach 'common sense' and 'adaptive' while warning against 'detailed and rigorous capacity investigations' sits uneasily with the book's own emphasis on process rigor (procurement systems, justification, deployment management). If rigor is in the process but not the analysis, the book should say where the line falls. Otherwise 'it's all common sense' risks understating how hard measurement, ceiling-finding and forecasting are.
Before you apply it
Using it well
Where the method fits, who it’s for, and the honest case for and against — so you apply it where it works.
Is this book for you?
For you if
- You are an operations engineer, developer, or manager responsible for a growing website or mobile app's performance and availability
- You must justify infrastructure spending or procurement to the business
- You want a practical, platform-agnostic process rather than math-heavy theory
- You work in an Agile environment where capacity planning must be continuous and adaptive
Skip it if
- You want a rigorous treatment of queuing theory, Little's Law, or Markov models
- You are looking for tuning guides for a specific database, web server, or cache
- You need benchmark-driven comparisons of hardware
Need first
- Basic monitoring and metrics collection in place, for system statistics and application-level business metrics
- Familiarity with your architecture's components and how they can be divided and measured
- Clear performance and availability goals to plan against
- Some historical usage data, or the ability to start collecting it
When it applies — and when it doesn’t
- A fast-growing web app or mobile app with frequent deploys, where usage patterns shift week to week — the adaptive, empirical approach suits an environment where change outpaces detailed modeling
- Facing a traffic spike with only a week's notice (feature launch, link from a major site) — the book aims at this: measure real ceilings, add headroom, and act without waiting for a model
- Justifying hardware or cloud spend to finance or management — correlating system stats with business metrics (signups, uploads) gives a defensible case for expenditure
- Spending long cycles tuning or re-benchmarking in artificial environments — tuning is addictive and can become an endless time sink; it is a different task from capacity planning
- Enabling cloud autoscaling as a hands-off fix — it needs carefully designed policies to balance cost, performance, and reliability
- A monolithic or hard-to-measure architecture — the method relies on divisible, measurable components to find per-component resource ceilings, so architecture work may come first
- Predicting needs for a brand-new product with little or no historical data — forecasting depends on historical trends, so early estimates will be rough and need frequent revision
- Judging how large a spike your queues can absorb without an outage — the authors concede queuing theory can help here, though the book does not teach it
- Stable, slow-changing industrial or non-web systems — the book targets web environments and argues that manufacturing-style rigor does not map to short web timelines
- Choosing hardware based on published benchmarks like SPEC CPU — the authors say these workloads differ from web applications and can skew decisions to the business's harm
- Scaling a growing fleet by hand-configuring servers — the book treats automated deployment and configuration as essential to managing capacity efficiently
- Deriving queuing-theory or Markov models for your system — the authors reject this for web settings, since code and usage change before a model is finished
The honest case
Strongest case for
- Web systems change too fast for static models; with thousands of code changes a day, a model is stale before it is finished
- Real production measurements capture actual workload characteristics that artificial benchmarks like SPEC miss
- Tying CPU, memory, and I/O to business metrics turns capacity into a business-justified, defensible expenditure
- Finding each component's resource ceiling lets you predict when capacity runs out before users feel it
- Automation and divisible architecture make capacity scale repeatably and cut operational toil
- The simple, common-sense framing is usable in a crisis, like the spare-tire analogy, when there is no time for deep analysis
Strongest objection
- Rejecting modeling may forgo useful tools; queuing theory can estimate how big a spike the system can absorb
- Extrapolating historical trends fails under nonlinear shifts, such as viral events or architectural changes, so forecasts may mislead
- Empirical measurement of production gives no insight into untested failure modes unless load is deliberately pushed to find ceilings
- The advice can seem like common sense with little rigor, and the 'adaptive' label may excuse under-planning
- Ceilings measured on one code version quickly go stale as deploys change resource profiles
- Cloud autoscaling and managed services reduce the need for much manual planning, making parts of the process less relevant
The model's constructs are drawn from the source element(s); load-bearing constructs are corroborated across the shelf, emerging ones are flagged.
Ideas covered by the source notes
- Architectural Divisibility
- Capacity Planning Process Rigor
- Automated Deployment and Configuration
- Elastic Provisioning Strategy
- Hardware Selection and Homogeneity
- Resource Headroom
Movement V
Measure
Use available assessments to reflect on what you have learned.
A way to gauge yourself against the book's model, and the instruments it gives you.
- — A self-check built from the book
- — Instruments and what you'd measure next
Learning curriculum
After this book, you can…
The book's learning objectives, classified by Bloom's taxonomy and ordered so each builds on the ones before it.
- explainAfter this book you can explain why capacity planning for growing web applications should be an adaptive, empirical, continuous process rather than a one-time exercise based on queuing theory, static models, or artificial benchmarks.Check: Short written explanation contrasting adaptive and theoretical approaches, using a scenario such as a one-week warning before a feature launch or a traffic spike from a major link.
- distinguishAfter this book you can distinguish performance from capacity, and define measurable performance and availability goals (response time, latency, 'nines' of uptime) that capacity must support.Check: Given a site description, write performance and availability targets and explain how they differ from the capacity needed to meet them.
- selectAfter this book you can select the essential system-level metrics (CPU, memory, disk I/O, network) and application-level metrics (e.g., signups, uploads) to collect continuously for each component of a web architecture.Check: Produce a metrics collection plan for a sample architecture, naming the tools, data points, and collection intervals for each tier.
- determineAfter this book you can determine the resource ceiling of each architectural component using real production data and controlled testing, and define safe operating limits and headroom.Check: Analyze load and utilization data for a server role to identify its limiting resource, ceiling, and the headroom to preserve before the ceiling.
- forecastAfter this book you can forecast future capacity needs by applying trend analysis to historical data, and predict when each component will reach its ceiling.Check: Given several months of usage data and a growth assumption, produce a forecast with a projected date for exhausting capacity, and state its uncertainty.
- correlateAfter this book you can correlate system resource usage with application and business metrics to give context to load and justify infrastructure spending.Check: Given paired time-series data (e.g., CPU use vs. photo uploads), compute the relationship and write a business-oriented justification for added capacity.
- evaluateAfter this book you can evaluate whether an architecture is divisible and measurable (segmented into single-purpose, independently scalable components) and recommend changes that improve capacity planning.Check: Critique a monolithic architecture diagram and propose a split into tiers (web, application, database, cache) with reasoning about how each can be measured and scaled.
- planAfter this book you can plan for unexpected load, such as traffic spikes and launches, by sizing headroom and contingency capacity against the risk to availability and performance.Check: Develop a spike-readiness plan for a scenario in which the site is linked from a major news site, including headroom, degradation options, and quick-add capacity.
- selectAfter this book you can select hardware or virtual instance types suited to each component's workload, and weigh the trade-offs of homogeneity for efficiency and manageability.Check: Given workload profiles (CPU-bound web, I/O-bound database), choose instance or hardware types and justify the choice using utilization and cost data.
- buildAfter this book you can build a procurement and approval plan that justifies capital and operational expenditures, and that accounts for the time needed to provision new capacity.Check: Write a capacity request with a forecast, cost comparison (CapEx vs. OpEx), lead-time schedule, and business justification for management.
- designAfter this book you can design an automated deployment and configuration workflow (e.g., Chef, Puppet, SystemImager) that shortens time to provision and keeps systems consistent.Check: Specify an automated pipeline from bare server or image to a configured, tested node in production, estimating the time saved over manual installation.
- designAfter this book you can design and justify cloud autoscaling policies, and horizontal or diagonal scaling strategies, that balance cost, performance, and reliability.Check: Write an autoscaling policy (metrics, thresholds, cooldowns, min and max sizes) for a given workload and analyze its cost and performance trade-offs under simulated load.
- assessAfter this book you can assess ongoing infrastructure efficiency (use of compute, memory, power, and rack space) and revise the capacity plan continuously as usage and code change.Check: Review a quarter of utilization and cost data, identify waste or risk, and propose revisions to forecasts, headroom, and provisioning.
How to measure it
Turning each idea into a measure
For each construct: how to operationalize it, the observable signals to look for, and how well it holds up.
Assessment of the system architecture based on the number of distinct, independently scalable service tiers or clusters. A higher score indicates greater segmentation and fewer monolithic components.
- Presence of multiple, role-specific server clusters in monitoring dashboards.
- Architectural diagrams showing distinct service boundaries.
- Ability to scale one part of the system (e.g., image servers) without affecting another (e.g., database servers).
Frequency and quality of capacity planning reviews, accuracy of past forecasts, and the degree to which decisions are based on trend data from monitoring systems. Can be scored using a rubric assessing measurement, forecasting, and procurement planning maturity.
- Regularly updated capacity forecast documents or dashboards.
- Use of trend lines and curve-fitting on historical data to justify new hardware.
- Existence of a defined process for tracking the procurement pipeline.
- Correlation of system metrics with business metrics.
The percentage of production servers whose configuration is fully managed by an automated system. This is inversely related to the frequency of manual SSH logins for configuration changes.
- Use of tools like Puppet, Chef, Ansible, or CFEngine.
- Presence of a version control repository (e.g., Git) for configuration files.
- Ability to provision a new server from bare metal to production-ready without manual login.
The extent to which the infrastructure utilizes horizontal scaling and dynamic autoscaling policies versus relying on manual provisioning and vertical scaling. Can be measured by the number of services governed by autoscaling rules.
- Presence of autoscaling groups (ASGs) in cloud environments.
- Load balancers distributing traffic across multiple identical nodes.
- Historical data showing server counts fluctuating with daily/weekly traffic patterns.
The number of distinct hardware or instance-type profiles used per functional role (e.g., web server, database server). A lower number indicates higher homogeneity. Appropriateness is assessed by comparing resource bottlenecks (e.g., CPU, I/O) with hardware specifications.
- Inventory lists showing few hardware variations for servers in the same cluster.
- Procurement records indicating purchases of I/O-heavy machines for databases and CPU-heavy machines for web servers.
- Documentation of a 'diagonal scaling' hardware refresh strategy.
The percentage of a key resource (e.g., CPU, disk I/O wait) that remains unused during peak traffic periods, calculated as (Ceiling - Peak Utilization). The ceiling is determined through load testing or observation of performance degradation.
- Monitoring graphs showing peak utilization well below 100% or other defined ceilings.
- The 'safety factor' percentage used in capacity forecasting calculations.
- Absence of performance degradation during predictable traffic spikes.
The average time, measured in days or weeks, from the approval of a hardware/cloud resource purchase to the point where the new resource is successfully serving production traffic.
- Timestamps on purchase orders, delivery receipts, and deployment tickets.
- The lead time used in capacity forecast models to trigger procurement.
- For cloud resources, the time from API call to instance being healthy in a load balancer.
The average utilization percentage of key resources (like CPU) across a cluster over a given period. Higher average utilization, without compromising performance, indicates greater efficiency.
- Monitoring graphs showing average CPU utilization across a cluster.
- Reduction in server count after a 'diagonal scaling' hardware refresh.
- Cloud billing data showing reduced costs from autoscaling down during off-peak hours.
Key performance indicators measured by external monitoring services or internal application instrumentation, such as 95th percentile page load time, time to first byte (TTFB), or API response latency.
- Dashboards from Real User Monitoring (RUM) tools.
- Response time metrics in web server logs.
- Reports from external services like Catchpoint or Keynote.
- A low number of user complaints about site speed.
The uptime percentage calculated from data provided by external monitoring services that check application accessibility from multiple geographic locations at frequent intervals.
- SLA compliance reports.
- Public status pages showing service health.
- Number of outage alerts triggered per month.
- Absence of 'Fail Whale' or similar error pages shown to users.
The total infrastructure cost (hardware amortization, cloud bills, power, cooling) divided by a key business metric (e.g., number of active users, transactions processed, or ad views served) over a specific period.
- Monthly cloud provider bills.
- Quarterly financial reports on capital expenditure for hardware.
- Business intelligence reports correlating infrastructure costs with user growth or revenue.
Self-assessment
Where would you like to improve?
This is a structured self-diagnostic built from the model — a mirror for reflection, not a validated psychometric scale. For validated measurement, see the instruments below.
1 = Strongly Disagree · 7 = Strongly Agree
Proposed measures — starter instruments where no validated one was found
Architectural Divisibility Index (Proposed)
proposed · not validatedRated for your team or hiring process — not a personal self-check.
- Each major function of the web application (e.g., web serving, application logic, database, caching, file storage) runs on its own separately deployable component.
- Any individual component can be scaled, replaced, or moved to different hardware without requiring changes to the other components.
- Each component has a documented single purpose and a defined interface through which other components interact with it.
Scale: 1–7 (Strongly Disagree → Strongly Agree), rated by an evaluator or the team. Average the items; treat ≤3 as a gap to close in the process.
Capacity Planning Process Rigor Index (Proposed)
proposed · not validatedRated for your team or hiring process — not a personal self-check.
- System and application metrics (e.g., CPU, memory, disk, network, request rates) are collected continuously and retained for trend analysis.
- Growth forecasts are produced on a regular, scheduled cadence and are explicitly tied to observed metric trends and business projections.
- Capacity forecasts result in documented resource acquisition or scaling decisions that are reviewed against actual usage afterward.
Scale: 1–7 (Strongly Disagree → Strongly Agree), rated by an evaluator or the team. Average the items; treat ≤3 as a gap to close in the process.
Automated Deployment and Configuration Index (Proposed)
proposed · not validatedRated for your team or hiring process — not a personal self-check.
- New servers have their operating systems installed and configured through automated tools without manual step-by-step intervention.
- Application releases are deployed to production through a scripted or tool-driven process that is version-controlled and repeatable.
- Server configuration is defined in central code or templates, and configuration drift is detected or corrected automatically.
Scale: 1–7 (Strongly Disagree → Strongly Agree), rated by an evaluator or the team. Average the items; treat ≤3 as a gap to close in the process.
Sources
- The Art of Capacity Planning Scaling Web Resources in the Cloud — John Allspaw Arun Kejariwal · A practical, field-tested guide for web operations professionals on how to measure, plan, and manage the technical resources needed for a growing web application to ensure high performance and availability.
The cheat sheet
Everything, on one page
One key takeaway from each section, with links to read more.
- Architectural DivisibilityA component is only divisible if you can measure it and add capacity to it in isolation.
- Capacity Planning Process RigorThe value of capacity planning is the closed loop of measure, forecast, and act, not any single forecast.
- Automated Deployment and ConfigurationAutomation shortens provisioning only if the entire build is scripted, with no manual steps.
- Elastic Provisioning StrategyAutoscaling is a mechanism within a plan, and it works only if you know the limits of what sits behind it.
- Hardware Selection and HomogeneityPick hardware to match the resource that limits each role, not the biggest option available.
- Resource HeadroomHeadroom is peak load against a tested ceiling, never average load against theoretical maximum.
- Time to Provision New CapacityMeasure lead time from the moment the need is identified to production traffic, not from the purchase order.
- Operational EfficiencyEfficiency is waste removed beyond your intended headroom, not maximum utilization.
- Application PerformanceLatency rises before resources are exhausted, so use it as an early indicator of shrinking headroom.
- Application AvailabilitySaturation is experienced by users as downtime, so capacity belongs in your availability analysis.
- Cost-Effectiveness of InfrastructureCost-effectiveness is spend relative to delivered performance and availability, not a lower bill.
Publication details
Consult the sources listed in this guide for further reading. Edition 1 · Updated 2026-10-03.
Explore related books and profiles in the library.