The situation
A market research firm runs 180 EC2 instances, every one of them On-Demand. Finance has asked for the monthly bill to come down, and has been explicit that nothing is to be switched off to get there: the capacity is in use and the business needs it. What has to change is the rate, not the fleet. The estate divides into four groups.
Forty instances run continuously. The survey platform, its databases and the internal tools. They have run every hour for three years, they are the same instance family they started on, and nothing suggests that will change.
Sixty instances run a statistical processing job. The job is a queue of independent tasks that runs whenever a survey closes, which is roughly nine times a month, for six to eleven hours. Tasks are restartable and the job has no deadline tighter than “by the end of the next day”.
Fifty instances are development and test environments. Engineers spin them up, use them for a few days, and destroy them. The instance types vary constantly, and the team is actively migrating to a newer generation and to containers, so what runs six months from now is unknown.
Thirty instances run a licensed statistical package. The vendor licenses per physical core and audits annually, and the firm has an agreement with four years left on it.
Finance has a second condition attached to the first: whatever gets committed to must not lock the firm into instance types it is already migrating away from.
What actually matters
Start with the word “commitment”, because every discount here is calculated against one. On-Demand carries no commitment and the highest rate. The discounted options require a commitment about future usage, and the rate falls in proportion to how specific and how long that commitment is. So the question for each workload is what it can honestly commit to. A commitment it cannot keep leaves the firm worse off than no commitment at all.
On AWS, commitment for EC2 comes in two shapes. A Reserved Instance commits to a configuration: this instance family, in this Region, on this operating system and tenancy, for one or three years. A Savings Plan commits to an amount of spend per hour and leaves the configuration free to change. For a team mid-migration between generations those are not close substitutes; the first turns a planned modernisation into a stranded commitment, and the second does not.
A third shape, the Spot Instance, involves no commitment at all, and a technical condition instead. Spare capacity comes at up to 90% off On-Demand, on the condition that EC2 can reclaim the instance with a two-minute warning. That condition is a hard requirement. A workload that cannot be interrupted cannot use Spot at any discount, and a queue of restartable tasks absorbs a reclaim without losing work.
Finally, tenancy is not a discount at all but it sits in the same list and is chosen for different reasons entirely. Licence terms written against physical cores and sockets need visibility of the physical server, and that visibility is a tenancy option that costs more rather than less. A per-core licence is a tenancy requirement rather than a saving.
Commitment and capacity are separate concerns. A discount does not reserve capacity in an Availability Zone, and reserving capacity does not by itself reduce the rate.
What we’ll filter on
- Whether the workload runs predictably enough to commit to anything about it.
- Whether it tolerates being interrupted with two minutes’ notice.
- Whether the instance family and Region need to stay free to change.
- Whether a licence requires visibility of the physical hardware.
- Whether the discount survives the firm’s planned move to newer instances and containers.
The landscape
On-Demand charges by the second, with a 60-second minimum, no commitment and no discount. It is the baseline every other option is measured against, and it is what fits anything short-lived, unpredictable or new.
Standard Reserved Instances commit to a specific instance family, Region, operating system and tenancy for one or three years, in exchange for a discount up to roughly 72%. A Regional RI applies across the Availability Zones in the Region and, on Linux with default tenancy, across instance sizes within the family. A Regional RI does not reserve capacity; a Zonal RI reserves capacity in one zone and gives no size flexibility. Payment is All Upfront, Partial Upfront or No Upfront, discounting in that order. A Standard RI cannot change family, operating system or tenancy, and it can be sold in the Reserved Instance Marketplace if it is no longer needed.
Convertible Reserved Instances discount less and allow exchange for a different instance family, operating system or tenancy during the term. That flexibility is what a team mid-migration is looking for from an RI.
Savings Plans commit to an amount of spend per hour for one or three years rather than to a configuration. Compute Savings Plans are the most flexible, applying automatically across EC2, Fargate and Lambda regardless of instance family, size, operating system, tenancy or Region, at up to 66% off On-Demand. EC2 Instance Savings Plans commit to a family in a chosen Region and reach up to 72%, the same ceiling as Reserved Instances. Neither one applies to Spot usage.
Spot Instances use spare capacity at up to roughly 90% off On-Demand, and can be reclaimed with a two-minute warning when AWS needs the capacity. Nothing is committed and nothing is guaranteed. They suit batch processing, rendering, CI, and any queue of restartable work.
Dedicated Instances run on hardware isolated to one account, for a regulatory isolation requirement. They cost more than shared tenancy and do not expose the physical sockets and cores.
Dedicated Hosts allocate a whole physical server with its sockets and cores visible, which is what a per-core or per-socket licence needs, and they support Bring Your Own License. They are the most expensive tenancy option, and the hosts themselves can be reserved for one or three years at up to 70% off the On-Demand host rate.
Capacity Reservations hold capacity in a specific Availability Zone and carry no billing discount. One created for immediate use has no term commitment; a future-dated one commits for a duration you specify. They combine with a Savings Plan or Regional RI, which is how a workload gets both the guarantee and the lower rate.
Evaluation
Side by side
| Option | Discount | Commitment | Tolerates interruption | Family free to change | Exposes physical cores |
|---|---|---|---|---|---|
| On-Demand | None | None | n/a | ✓ | ✗ |
| Standard RI | Up to ~72% | 1 or 3 years, fixed configuration | n/a | ✗ | ✗ |
| Convertible RI | Lower than Standard | 1 or 3 years, exchangeable | n/a | ✓ | ✗ |
| Compute Savings Plan | Up to ~66% | 1 or 3 years, spend per hour | n/a | ✓ | ✗ |
| EC2 Instance Savings Plan | Up to ~72% | 1 or 3 years, family and Region | n/a | ✗ | ✗ |
| Spot Instances | Up to ~90% | None | Required | ✓ | ✗ |
| Dedicated Instances | Costs more | None or reserved | n/a | ✓ | ✗ |
| Dedicated Hosts | Costs most | None or reserved | n/a | ✗ | ✓ |
| Capacity Reservation | None | None, for immediate use | n/a | ✗ | ✗ |
The four workloads land on four different rows, which is why an estate running entirely On-Demand is leaving money on every one of them and why moving it entirely to Reserved Instances would be a different mistake.
What each workload can commit to
| Workload | Runs | Interruptible | Configuration stable | Commitment it can make | Option |
|---|---|---|---|---|---|
| Survey platform, 40 instances | Every hour, three years | ✗ | ✓ | Three years of this family | Standard RI, or EC2 Instance Savings Plan |
| Statistical processing, 60 instances | 9 times a month, hours at a time | ✓ | ✓ | Nothing, and tolerates reclaim | Spot |
| Dev and test, 50 instances | Ad hoc, days at a time | ✗ | ✗ | A baseline of spend per hour | Compute Savings Plan for the floor, On-Demand above it |
| Licensed package, 30 instances | Continuously, licence-bound | ✗ | ✓ | Term commitment on the host | Dedicated Host, reserved |
The solution
Cover the forty steady instances with a three-year commitment, and choose between the two shapes on how confident the firm is in the family. Nothing about the survey platform has changed in three years, so an EC2 Instance Savings Plan and a Standard Reserved Instance both fit, and both reach roughly the same discount. A Standard RI additionally reserves capacity when bought zonally, and can be sold on the Reserved Instance Marketplace if circumstances change. A Compute Savings Plan tops out nearer 66%, and the extra flexibility is not something this group needs.
Put the statistical processing on Spot. Sixty instances running nine times a month on restartable tasks with no tight deadline is the textbook fit: the discount is the largest available, and a reclaimed task restarts elsewhere, so the two-minute notice does not change the result. Run it through AWS Batch or an Auto Scaling group with a mixed instances policy, so that the job keeps progressing if Spot capacity thins out and some On-Demand capacity fills in. The commitment here is technical rather than financial: the job must be genuinely restartable, and it is.
The development estate is where the Compute Savings Plan belongs, and this is the part finance’s second condition was really about. Fifty instances of constantly changing types, mid-migration to a newer generation and to containers, cannot commit to a family without stranding the commitment. A Compute Savings Plan commits only to spend per hour and applies across instance families, sizes, Regions, and across Fargate and Lambda as well, so the discount keeps applying as the migration proceeds. Size it to the floor of the group’s usage rather than its average, using Cost Explorer’s historical data, and leave everything above that floor On-Demand. An undersized plan covers less of the usage; an oversized one is billed whether or not the usage appears.
The licensed package goes on Dedicated Hosts, and this row is not a saving. The vendor licenses per physical core and audits annually, so the firm needs visibility of the sockets and cores, which only a Dedicated Host provides. Bring the existing licence, track the entitlement in AWS License Manager so a fleet change cannot breach the agreement unnoticed, and reserve the hosts for a term since they will be in place for the four years the agreement has left.
Then make the result visible, because a purchasing decision that nobody monitors drifts. Use AWS Cost Explorer to review coverage and utilisation of the commitments monthly: a Savings Plan at 60% utilisation is being paid for and not used. Set a cost budget on the overall figure and a Savings Plans utilisation budget alongside it, alerting on the forecast rather than after the spend lands. Model anything new in the AWS Pricing Calculator first, so the estimate exists before the instances do. And keep rightsizing running alongside all of this, because a three-year commitment to an oversized instance family locks in the wrong size for three years.
What’s worth remembering
- Reserved Instances commit to a configuration (family, Region, operating system, tenancy) for one or three years; Savings Plans commit to an amount of spend per hour, which is why they survive a change of instance family and Standard RIs do not.
- Compute Savings Plans apply across EC2, Fargate and Lambda regardless of family or Region at up to 66% off; EC2 Instance Savings Plans commit to a family in a Region and reach 72%.
- Spot uses spare capacity at up to about 90% off and is reclaimed with a two-minute warning, so tolerating interruption is a requirement rather than a preference.
- Standard RIs give the largest RI discount and cannot change family; Convertible RIs discount less and can be exchanged during the term. All Upfront discounts most, No Upfront least.
- Dedicated Hosts expose the physical sockets and cores and support Bring Your Own License; Dedicated Instances give isolated hardware without that visibility. Both cost more, not less.
- A discount does not reserve capacity and a Capacity Reservation does not discount; combine a Capacity Reservation with a Savings Plan or Regional RI when both are needed.