AWS gives you four ways to pay for compute and three of them cut the bill. Here is how to pick, and how to stack them without painting yourself into a corner.
On-demand is the price you pay for not deciding anything. Every other AWS commitment model is you trading some flexibility for a discount, and the whole game is figuring out how much flexibility you can afford to give up on which slice of your fleet. Get that split right and you knock 30-50% off compute without touching a single workload. Get it wrong and you either overspend or lock yourself into instance families you outgrow in six months.
Here is how the four models actually behave, and the order we reach for them.
On-demand. Full price, zero commitment, cancel anytime. This is the baseline everything else is measured against. It exists to absorb spikes and to run things you can't predict. If a big chunk of your steady-state fleet is on-demand, you're leaving money on the table.
Reserved Instances. The old-school commitment. You promise to run a specific instance type in a specific region (or AZ) for one or three years, and AWS discounts it.
RIs still matter, but for plain EC2 most teams no longer buy them. Savings Plans do the same job with less rigidity.
Savings Plans. You commit to a dollar-per-hour spend rather than to specific instances. Two flavors:
The pattern repeats: the more you pin down, the more AWS pays you for the certainty.
Spot. Spare capacity, sold at 60-90% off on-demand, and AWS can reclaim it with a two-minute warning. No commitment, no term. The discount is enormous and the string attached is real: your workload has to tolerate being killed mid-run. For the mechanics of bidding, diversification, and draining nodes, we wrote a separate piece on spot instances.
Every RI and Savings Plan has two knobs.
Term: one year or three. Three-year commitments deepen the discount by roughly 15-20 percentage points, but three years is a long time in infrastructure. Graviton alone rewrote a lot of fleets. Our rule: three-year only on workloads whose shape is stable, even if the code isn't. Databases, core services, anything you'd bet still exists in 2029. One-year for everything else.
Payment: all-upfront, partial-upfront, or no-upfront. All-upfront squeezes out a few extra points, usually 1-3%, in exchange for handing AWS the cash now. Unless your finance team specifically wants to spend the capital, no-upfront captures almost the entire discount while keeping the money in your account. We default to no-upfront and only go all-upfront when someone with a budget cycle asks for it.
Two numbers tell you whether your commitments are healthy, and people constantly confuse them.
You want high coverage and high utilization, and they pull against each other. Buy aggressively and utilization drops the first time usage dips. Buy timidly and coverage stays low. The sweet spot: commit to your reliable floor, the usage you're confident you'll run 24/7 for the whole term, and let everything above it ride on-demand or Spot. Target something like 80% coverage of steady-state and near-100% utilization. Chasing 100% coverage is how you end up stranded on a reservation for a service you deleted.
We think of the fleet as a stack, bottom to top:
Do it in that order. Commitments are cheapest to get right when they sit under known, flat demand.
Run each workload through three questions:
That is most of the job. The rest is watching coverage and utilization drift and topping up quarterly.
Say you run a steady 100 vCPU baseline plus a 60 vCPU batch tier that runs nightly and tolerates interruption, on-demand list around $0.04/vCPU-hour.
All-on-demand for the same work runs about $5,180/mo. Layered, you land near $2,830 — roughly a 45% cut, with the flexible Compute Savings Plan meaning you can move families as Graviton or newer generations land. Nothing here is locked for three years, and nothing critical is riding Spot.
For the wider picture of where the rest of your bill hides, we keep a running cloud cost optimization guide.
Cover your 24/7 floor with a one-year no-upfront Compute Savings Plan, push everything interruptible onto Spot, and leave the spiky top on on-demand without apology. Only reach for three-year terms or EC2 Instance plans on the handful of workloads whose shape you'd bet your job on. Flexibility is worth more than the last few discount points almost every time, because the thing that kills these deals is not a bad price — it's committing hard to a fleet that no longer exists a year later.
Get the latest tutorials, guides, and insights on AI, DevOps, Cloud, and Infrastructure delivered directly to your inbox.
Both promise to find your slow query at 3am. One bills by data ingested, the other by host-hour. Here's how that shakes out in a real ops budget.
A shared API key between two internal services proves nothing about who is calling. mTLS makes every service present a cryptographic identity instead.
Explore more articles in this category
The observability market is huge and the pricing is a minefield. This is the map to the tools that matter, what each is best at, and how to avoid a runaway bill.
Cloud bills grow quietly until someone asks why. This is the map for cutting spend without cutting reliability: where the money actually goes, the levers that work, and the tools worth paying for.
Datadog bills climb quietly until finance forwards the invoice. Here's the playbook we run to cut spend hard while keeping every signal that matters.
Evergreen posts worth revisiting.