Reserver.Reserve your spot →

Coverage drift

A reservation can stop covering its instance and never expire.

A term that ends at least ends. Coverage drift does not. Here's the three ways a match breaks, the seven dimensions behind it, and why nothing tells you it happened.

9 min read·Guides·

First, the failure mode

A reservation neither expired nor sat idle, and still stopped paying for the instance you bought it for.

Every reservation is bought to cover one kind of instance. Reserver matches it against what is actually running on every scan. Coverage drift is what happens between two scans: the instance the reservation matched last time no longer matches this time.

The reservation is still active. It still bills every hour of its term. The instance it used to cover is gone, changed, or now covered by a different reservation. Either way, the discount stops applying, and the gap has no clock counting down to a fix.

A missed renewal at least ends. The term runs out, and a new term starts once somebody buys it. Drift has no term to run out. It bills at the wrong rate until a person compares two scans and finds the mismatch.

The three causes

A drifted match breaks on one of two sides, or the instance is simply gone.

Reserver's scanner sorts every drift event into one of three kinds, because the fix is different for each one.

The instance changed

The running instance was resized, moved to a new Availability Zone, or changed engine. Its own dimensions no longer match the reservation covering it.

The reservation changed

The instance never moved. The reservation covering it was modified instead, so it now matches a different instance, or nothing at all.

The instance disappeared

The instance was terminated or replaced. The reservation is still active and still billing, with nothing left to cover.

What can change

Seven dimensions decide whether a reservation still matches, and not every one applies to every service.

Class, family, engine, Availability Zone, Multi-AZ, tenancy, and platform. A reservation matches on all the dimensions its service uses. Change one enough, and the match breaks.

EC2: class, family, Availability Zone, tenancy, platform

Five of the seven dimensions apply. A resize outside the family, a zone move, or a tenancy or platform change can drop the match.

RDS: class, family, engine, Multi-AZ

Four dimensions apply. A Single-AZ to Multi-AZ change can drop the match. So can an engine change, such as a move between SQL Server editions.

ElastiCache: class, family, engine

Three dimensions apply. A node type change or an engine change is the common cause here.

Availability Zone only binds a zonal EC2 Reserved Instance. RDS and ElastiCache reservations are bought per Region, so a zone move never drops their match. Multi-AZ applies to RDS alone. Tenancy and platform apply to EC2 alone.

Why nothing tells you

There is no AWS event for a lost match.

A reservation's own utilization metric does not help either. AWS reports how much of a reservation's capacity was used. It does not report whether that capacity was used on the instance you meant.

A reservation that drifts onto a different, similar instance can report full utilization the whole time. Nothing about that number says whether it still covers the fleet the way you expect. Seeing the mismatch takes a comparison. Check what a reservation matched last scan against what it matches this scan.

What it costs

One drifted reservation, priced at 30, 90, and 180 days.

The same illustrative on-demand premium the renewal playbook prices a lapsed term with, run over a longer window. Drift has no term to end it, so the window stays open.

$403One drifted reservation, 30 daysthe on-demand premium on the instance it used to cover, one month after the match broke.
$1210The same reservation, 90 daysstill billing, still not covering anything, for a full quarter.
$2419The same reservation, 180 dayssix months of on-demand charges on top of a reservation nobody looked at.

A lapsed renewal ends the day somebody buys the next term. A drifted reservation ends the day somebody notices the mismatch, and nothing on the bill points them to it.

How this scales with you

A manual check works once. It does not work on every scan, forever.

Startup1–10 reservations · one account

A handful of reservations covering a handful of instances is easy to check by eye, once. Drift still needs a second look after any resize or move, because nothing else will flag it.

Growthdozens of reservations · a few accounts

Dozens of reservations across a few accounts move often enough that a manual check misses one sooner or later. A comparison run on every scan catches a drifted match the same week it happens, not the same year.

Enterprisehundreds to thousands · many accounts & orgs

Thousands of reservations across many accounts make a manual comparison impossible. One drifted reservation is a rounding error. A few percent of a large portfolio, drifted and unnoticed, is real money every month.

Reserved

Stop overpaying for a steady fleet.

Reserver is in early access. Join the list and we'll onboard you as capacity opens up. Your first recommendation lands within minutes of connecting.

Reserve your spot →