Slavik Shynkarenko

notebook № 117 plates · 15 min to read, longer to play ·

The price of a promise

On promising just enough

part 5 of 7 in What the cloud costs · by

The cloud’s list price is for customers who promise nothing. Promise to spend a certain amount every hour for a year or three, and the price drops by a third or more. Promise to give the machine back when asked, and it drops further still. This notebook is about how big a promise to make, and what it costs when you get it wrong.

I

plate I · on demand

The list price is for strangers

Rent a machine in the cloud and, by default, you pay on demand: a price per second or per hour, no notice, no promises. Start a thousand servers at nine and stop them at five, and you pay for eight hours. That freedom is the whole point of the cloud, and the FinOps Foundation even makes it a principle: take advantage of the variable cost model.

Freedom has a price, though. The on-demand rate is the cloud’s list price, set for a customer the provider knows nothing about. The provider has to keep idle hardware around in case you show up, and it charges for that uncertainty.

Look at a week of real usage and something stands out: however much it wobbles, it rarely drops below a certain level. Night-time, weekends, holidays: there’s always a floor. That floor is the part of your bill that isn’t variable at all, and paying the stranger’s price for it is money left on the table. The rest of this notebook is about what to promise instead.

Switch between the three shapes. Which one has the highest floor compared with its average?

fig. 11.1~/usage-weekpick a workload
A simulated week of compute usage, hour by hour, in dollars per hour at on-demand prices. The dashed line is the floor: the level usage stays above 95% of the time.
II

plate II · coverage & utilisation

Drawing the waterline

A commitment is a promise: “I will pay for this much compute every hour for the next year, whether I use it or not.” In return the provider cuts the price, by around a third for a one-year promise and by half or more for three years. AWS calls these Savings Plans and Reserved Instances, Azure reservations and savings plans, Google Cloud committed use discounts.

Picture the promise as a waterline drawn across the usage curve. Below the line, usage is paid for at the discounted rate. Above it, usage spills over and is billed on demand. And wherever usage dips under the line, you pay for the promise anyway.

Two numbers describe the line. Coverage is the share of usage the commitment pays for. Utilisation is the share of the commitment you actually used. Raise the line and coverage goes up while utilisation comes down. Chasing 100% of either is the mistake: 100% utilisation means you committed too little, 100% coverage means you committed to your peak. The number that matters is the third one, the effective savings rate: what you saved, as a share of what the same usage would have cost on demand.

Drag the line to the floor, then to the peak. Where is the effective savings rate highest?

fig. 11.2~/waterlinedrag the line, or use the slider
The office-hours week from plate I with a one-year commitment at an illustrative 35% discount. Teal is usage the commitment covers, rose is spill billed on demand, hatching is commitment paid for and unused.
III

plate III · the optimum

Where the savings peak

Slide the waterline from zero to the peak and plot the savings at every height, and you get a hill. At first every extra dollar of commitment is used every single hour, so savings climb steeply. Past the floor, some of the extra goes unused in quiet hours, and the climb slows. Eventually the waste outweighs the discount and the hill turns down.

There’s a neat rule for the top of the hill. One more dollar of commitment saves the discount, d, in every hour usage is above it, and wastes the remaining 1 − d in every hour usage is below it. So it pays off as long as usage is above it for more than 1 − d of the hours. With a 35% discount, commit up to the level you exceed 65% of the time. With 55% off, up to the level you exceed only 45% of the time.

That’s why the FinOps Foundation’s maturity guidance talks about coverage targets, not utilisation targets: sample targets climb from about 60% coverage for a team starting out to above 80% for a mature one. Those targets assume a mostly steady base, and one that’s already cleaned up. On spiky usage, the best coverage is lower, and that’s fine.

Pick “batch spikes” and compare the best coverage at 35% and at 55% off.

fig. 11.3~/savings-hillworkload · discount
Savings, coverage and utilisation for every commitment level on the simulated weeks of plate I. The dot is the best commitment, found by trying every level.
IV

plate IV · term

One year or three?

Commitments come in one- and three-year terms, and the longer one is a much bigger discount. The catch is that you can’t renegotiate it. If the workload moves to another region, another instance family, or simply gets smaller after a good optimisation, a three-year promise keeps billing for the usage you used to have.

A one-year promise can be resized every year, so it follows the workload down with a lag of at most twelve months. The question is whether the extra discount pays for that risk, and it usually does, unless the drop is big and early.

This is where FinOps and engineering need to talk. A team about to move half its compute to containers, to another region or to newer chips should say so before the commitment is bought, not after. Flexible commitments soften the bet (plate VII), and buying in small slices every month or quarter rather than one big purchase a year keeps renewal dates spread out, so there’s always something coming up for review.

Drop usage by 50% in month 6. Then move the drop to month 24. When does three years stop winning?

fig. 11.4~/36-monthshow much usage drops, and when
Cumulative savings over three years against paying on demand, with illustrative discounts of 30% for one year and 50% for three. Both start committed at the same level. The one-year promise is resized to the new floor at each renewal.
V

plate V · amortisation

When the money moves

You can pay for a commitment three ways: all upfront, partly upfront or monthly. Paying earlier buys a few more percent of discount, which matters to a company with spare cash and not at all to one watching every month’s burn.

Paying upfront creates a reporting puzzle, though. In the month you buy, the bill shows one huge line. For the next eleven, the usage it pays for looks free. Neither tells a team what its servers really cost. The fix is amortisation: spread the upfront payment across the months it covers, so each month carries its share, and each team’s usage carries the discounted rate it actually got. On the bill, that’s the difference between billed and effective cost.

Who gets the discount is the next question. Commitments are usually bought centrally, because one promise across the whole company has a smoother floor than each team’s separately, and FinOps practice says rates are best managed centrally while usage is everyone’s job. Teams should still see the discounted rate on their own usage, or nobody notices when their changes leave a commitment unused.

Switch “all upfront” between cash and amortised. Which view would you put on a team’s dashboard?

fig. 11.5~/cash-vs-amortisedpayment · view
A one-year commitment worth $120,000 at the monthly price. Paying partly upfront saves an illustrative 2%, all upfront 4%. Real gaps vary by provider and term.
VI

plate VI · spot

Cheaper, if you can be interrupted

The other way to get a discount is the opposite promise: not “I’ll always be here” but “I’ll leave whenever you ask.” Spot capacity (Google Cloud calls it spot or preemptible VMs) is the provider’s spare hardware, sold at up to 90% off on the understanding that it can be taken back at short notice: two minutes on AWS, thirty seconds on Azure and Google Cloud.

For a web server holding live connections that’s a problem. For a batch job, a test runner, a render farm or a training run, it’s a bargain, provided the work survives being interrupted.

Survival comes from checkpointing: saving progress every so often so a restarted job picks up where it left off. Without checkpoints, every interruption sends a long job back to the start, and if interruptions come often enough it may never finish at all. With them, an interruption costs a few minutes. The same trick keeps GPU training on spot capacity affordable.

Set interruptions to one every three hours without checkpoints. Then checkpoint every hour.

fig. 11.6~/spot-jobinterruptions · checkpoints
A simulation of a 10-hour batch job on spot capacity at an illustrative 70% off, with interruptions at random and ten minutes to get new capacity each time. The same random draw is used for every setting, so only your choices change the result.
VII

plate VII · the ladder

The flexibility ladder

Every provider sells a ladder of commitments, and they all follow the same trade: the more a promise pins down, the deeper the discount. A reservation for one instance type in one region is the rigid end. A plain promise to spend so many dollars an hour on any compute, anywhere, is the flexible end, and it gives back a slice of the discount for that freedom. Spot sits off to the side, deep but revocable.

Commitments have spread beyond servers, too. Model providers sell provisioned throughput, reserved capacity for a model, by the hour, the month or longer, and databases, caches and data warehouses have their own reservations. The AI billing notebook shows why capacity bought by the hour lives or dies by utilisation.

fig. 11.7~/ladderprovider · click a dot
Commitment and spot options, with each provider’s advertised maximum discount
OptionProviderYou promiseTermFlexibilityUp to
Standard Reserved InstancesAWSOne instance type in one region1 or 3 yearsLowest. Can be resold on the RI Marketplace72%
EC2 Instance Savings PlansAWSDollars per hour on one instance family in one region1 or 3 yearsAny size, OS or tenancy within the family72%
Convertible Reserved InstancesAWSAn instance configuration, exchangeable1 or 3 yearsExchange for another family of equal or greater value66%
Compute Savings PlansAWSDollars per hour on compute1 or 3 yearsAny family, region, Fargate and Lambda66%
ReservationsAzureA VM size or service in one region1 or 3 yearsExchangeable, with limits72%
Savings plan for computeAzureDollars per hour on compute1 or 3 yearsAny size and region of eligible compute65%
Resource-based committed useGoogle CloudvCPUs, memory or GPUs in one region1 or 3 yearsAny machine shape of the same type70% (55% for most types)
Spend-based committed useGoogle CloudDollars per hour on eligible services1 or 3 yearsAcross machine types and regions46% (28% for one year)
Spot capacityAll threeNothing. You give it back when askedNoneTotal, until it’s reclaimed90% (91% on Google Cloud)
Maximum discounts as each provider advertised them in 2026, rounded. Typical discounts are lower, and they change, so check the current pages. Flexibility is my own ranking, from one instance type in one region to anything anywhere.

Most mature practices end up with a mix: the rigid kind under the part of the floor nobody expects to move, the flexible kind on top of it, on demand for the rest, and spot wherever a job can be interrupted. Buying it is the easy part. Keeping coverage and utilisation honest every month, as teams change what they run, is the actual job, and it’s why the Foundation files all of this under one capability: rate optimisation.

If you remember one rule, make it the one from plate III: promise up to the level you’re above for 1 − d of the time, and not a dollar more.

Pick AWS and click the flexible end, then the rigid end. How much discount does the flexibility cost?

Questions people ask

What is the difference between coverage and utilisation?

Coverage is the share of your eligible usage that a commitment pays for. The rest is billed at the on-demand price. Utilisation is the share of the commitment you actually used. The rest is paid for and wasted. Committing more raises coverage and lowers utilisation, so the goal is the level where the two balance out in the most savings, not 100% of either.

Are Savings Plans better than Reserved Instances?

They trade discount for flexibility. AWS Compute Savings Plans apply across instance families, regions, Fargate and Lambda, so they survive architecture changes, but the deepest discounts belong to Standard Reserved Instances and EC2 Instance Savings Plans, which lock in a family and region. Many teams cover a stable base with the rigid kind and the rest with the flexible kind.

How much should I commit to?

Commit up to the level your usage stays above for most of the time. With a discount d, each extra dollar of commitment pays off if usage exceeds it for more than 1 − d of the hours: with a 35% discount, commit up to the level you exceed 65% of the time. Deeper discounts justify committing higher.

Related material

elsewhere in the notebooks

further reading

← the Cloud FinOps series · all notebooks