Visual overview
Observe demand, adjust capacity, then distribute work to the resulting fleet.
Technical reference
Scaling changes capacity; elasticity adds demand-responsive adjustment.
Change the resources of an individual node.
Add or remove nodes.
Capacity grows and shrinks instead of staying sized for peak.
Automated scaling can react to measured, known, or predicted demand.
Vertical and horizontal scaling
Vertical scaling, often called scaling up or down, changes the capacity of an individual resource—for example, moving a workload to a compute instance with more CPU or memory. It can be straightforward when software is difficult to distribute, but individual resource types have size limits and resizing may require interruption depending on the service and technique used.
Horizontal scaling, often called scaling out or in, changes the number of resources. A web application might add more instances behind a load balancer as requests increase and remove instances as demand falls. Horizontal scaling can also improve resilience because work is no longer tied to one machine, but it requires the application and data architecture to support distribution correctly.
- Scale up/down: change the capability of one resource.
- Scale out/in: change the number of resources handling the workload.
- Horizontal designs often pair naturally with load distribution and automated scaling policies.
Reactive and automated scaling
AWS Well-Architected reliability guidance recommends scaling resources when they are needed and using automation where possible. A reactive scaling policy observes a signal such as utilization or another workload metric and changes capacity in response. Amazon EC2 Auto Scaling is a common example for fleets of EC2 instances, while other AWS services expose their own scaling mechanisms or manage scaling behind the service interface.
Good scaling requires useful signals and safe boundaries. Scaling too late can create a performance bottleneck; scaling too aggressively can add unnecessary cost or cause instability. Minimum and maximum capacity, cooldown behavior, service quotas, downstream bottlenecks, and the time a new resource needs to become healthy all matter.
Design implications
Elasticity is easiest when workload components are loosely coupled and replaceable. Stateless application tiers, queues that buffer bursts, and data stores designed for the expected access pattern allow individual parts of the system to change capacity independently. A single stateful component with a hard limit can become the bottleneck even if every surrounding layer scales automatically.
The goal is not to maximize scaling activity but to keep enough healthy capacity for the workload without maintaining unnecessary headroom. Monitoring establishes the demand signal, scaling mechanisms adjust the resources, and load testing verifies that the architecture behaves as expected before a real peak occurs.
Key takeaways
- 01
Scalability describes the ability to accommodate changing workload; elasticity emphasizes matching capacity to changing demand.
- 02
Vertical scaling changes a resource's size; horizontal scaling changes the number of resources.
- 03
Automation can make scaling responsive, but metrics, limits, quotas, and downstream dependencies must be designed deliberately.
- 04
Elasticity supports cloud economics when resources can be reduced as demand falls.
Official AWS sources
Use these primary AWS resources for the source material behind this article and for deeper reference.