Amazon EC2
Choosing a Purchasing Commitment: Savings Plans vs. Reserved Instances
- How likely the instance family/region is to change within the commitment term
- Current On-Demand spend baseline and its stability over the past quarter
- Whether Standard RI resale optionality matters as a hedge
- Existing overlapping commitments and their actual coverage (checked via Cost and Usage Report, not assumed)
Production premise
The two commitment options for EC2 are Reserved Instances and Savings Plans, and they commit to different things.
A Reserved Instance commits to a specific configuration: instance family, size, region, OS, and tenancy. In exchange you get up to ~72% off On-Demand for that exact shape.
A Savings Plan commits to a dollar-per-hour spend instead. Any eligible usage counts toward the commitment, whatever shape it runs in, so the coverage follows your usage and nothing in the commitment is tied to a resource shape. The discount is a bit shallower: Compute Savings Plans top out lower, though EC2 Instance Savings Plans match RI's ~72% within one family/region.
Failure mode & inflection point
The commitment binds whether or not you use it. Say your hourly Savings Plan commitment sits above your actual eligible usage in a given hour. You are still charged the committed amount for that hour, and the difference buys nothing.
Unused Reserved Instance capacity is dead spend too, with one exit: a Standard RI can be resold on the Reserved Instance Marketplace. Convertible RIs can't be resold, but they can be exchanged internally. Savings Plans have no exit at all once purchased — no exchange, no resale.
Then there's the order in which discounts apply, which catches teams holding several commitments at once. RIs apply first, then EC2 Instance Savings Plans, then Compute Savings Plans. Whatever usage is still uncovered after all three is billed at On-Demand.
The trap is buying overlapping commitments in the belief that they stack. A higher-priority commitment absorbs the usage first, so the overlap never discounts anything. Teams that don't understand the application order are the ones who end up here.
Production guardrail
Default to Compute Savings Plans for anything short of a genuinely static, unchanging fleet. The trade you're making is "at least this much useful discount, with room to change instance family/region later." When architecture or region needs shift, the plan's coverage follows the new usage. A deeper discount you can't adjust doesn't follow anything.
Save Reserved Instances for workloads you're confident won't move for the full term, and make them Standard RIs — the resale optionality is the hedge if the confidence turns out to be wrong.
This is not a launch-day decision either way. Put commitment coverage on a recurring review built on Cost and Usage Reports, and verify actual coverage against the report each time. It's the same discipline Aurora's I/O-Optimized decision needs.