AWS Reserved Instances vs Spot Instances: Which Should You Choose?
Short answer: Reserved Instances for the workloads that never turn off. Spot for the ones that can be killed and restarted without anybody noticing. Most accounts want both, applied to different tiers of the same application.
The gap between On-Demand and the cheapest correct pricing model is large enough to matter: up to 75% for a Reserved Instance, up to 90% for Spot. The reason teams leave that money on the table is rarely ignorance of the discount. It is uncertainty about which workloads can safely take it.
Reserved Instances: predictable savings
Reserved Instances discount up to 75% in exchange for committing to a specific instance family in a specific region for one or three years. The discount is automatic, applied against matching usage on your bill. There is nothing to deploy.
Good fit for Reserved
- Production databases
- Web servers with steady traffic
- Always-on application servers
- Long-running batch processes
- Anything that has not been resized in a year
Think twice about
- Development environments
- Seasonal applications
- Experimental workloads
- Anything you are mid-way through right-sizing
Reserved Instance types
| Type | Flexibility | Discount | Best for |
|---|---|---|---|
| Standard | Low | Up to 75% | Stable workloads |
| Convertible | High | Up to 54% | Applications still changing shape |
Spot Instances: maximum savings
Spot sells you spare EC2 capacity at up to 90% off On-Demand. The catch is in the terms: AWS can reclaim the instance with two minutes of warning whenever it needs the capacity back.
Read this before you switch
Spot Instances are not simply cheaper instances. They are a different failure model, and they require the application to tolerate it. Never move a stateful workload to Spot without first proving it survives an abrupt termination.
Spot practices that hold up
1. Diversify instance types
Spread across several instance types and availability zones. Configure Auto Scaling Groups with 3 to 5 candidate types so a shortage in one pool does not take the fleet down.
2. Handle the interruption notice
Poll the instance metadata service for the termination warning and drain connections inside the two minute window. Untested drain logic is the same as no drain logic.
3. Keep state off the instance
Anything that must survive goes to EBS, S3, RDS, or ElastiCache. Instance store on a Spot node is scratch space, nothing more.
Decision framework
Four questions decide the pricing model for any given workload:
Assess the workload
- Runtime duration: how long does it run, and does it ever stop?
- Fault tolerance: can it survive sudden termination without data loss?
- Flexibility: will it run on more than one instance type?
- Time sensitivity: is there a deadline that a restart would blow?
Hybrid is the normal answer
Most well-tuned accounts run both models inside one application:
Example: a web application
- Database: Reserved, because it is always on
- Base web capacity: Reserved, sized to the traffic floor
- Scale-out capacity: Spot, absorbing the peaks
- Background jobs: Spot, with retries
Cost comparison example
One m5.large running continuously for a year, at us-east-1 list pricing:
| Pricing model | Hourly rate | Annual cost | Savings |
|---|---|---|---|
| On-Demand | $0.096 | $841 | Baseline |
| Reserved (1 year, Standard) | $0.062 | $543 | 35% |
| Spot (average) | $0.029 | $254 | 70% |
Spot pricing moves, so treat that row as an average rather than a quote. Check the Spot price history for your instance family and region before you plan around it.
How to roll this out
Start with Reserved
Pull three to six months of usage data, find the flat line underneath your daily pattern, and reserve 60 to 70% of it. That is the part of your bill you are certain to pay next year regardless.
Then add Spot, carefully
Begin where an interruption is invisible: CI runners, batch jobs, dev environments. Once the drain logic has been exercised in anger a few times, extend it to the scale-out tier of production.
Not sure how much of your fleet should be Reserved or Spot? Our AWS cost audit maps it out for you, with pricing fixed before we start.
From a real engagement
On a data governance SaaS (NDA), commitment coverage plus right-sizing took 46% off the monthly AWS bill. The split looked much like the example above: Reserved for the databases and the traffic floor, Spot for batch and scale-out. Application performance was unchanged.