Skip to content

What serverless means on AWS

AWS describes a serverless technology by five characteristics: no infrastructure to provision or patch, automatic scaling from zero to peak demand, pay-for-value billing with no charge for over-provisioning, built-in high availability, and built-in integrations with other services.

The label is applied more loosely than that list implies, and the criterion that decides the bill is the one most often missing: whether the thing scales to zero. A service that scales down still costs money overnight and at weekends. Before accepting “serverless” as shorthand for “costs nothing when idle”, check the floor.

Aurora Serverless v2 does scale to zero. Setting the cluster’s minimum capacity to 0 Aurora Capacity Units turns on automatic pause: after a configurable idle interval — five minutes by default, up to one day — instances with no user connections pause, and the instance charge stops. The first connection resumes them in roughly fifteen seconds, or longer if they have been paused more than a day. Storage is still billed throughout, and several ordinary configurations prevent a pause: an attached RDS Proxy, logical or binlog replication, a zero-ETL integration to Redshift, or being the primary cluster of an Aurora global database. The feature needs Aurora PostgreSQL 13.15, 14.12, 15.7 or 16.3 and above, or Aurora MySQL 3.08 and above. See Amazon Aurora Serverless for the rest.

Neptune Serverless does not. Its capacity range runs from a minimum of 1.0 Neptune Capacity Units to a maximum of 128, and the minimum is a floor, not a pause: there is no idle state in which compute charges stop. A Neptune Serverless cluster bills for at least one NCU for as long as it exists.

Both are labelled serverless, both scale automatically, and only one of them is free at three in the morning. The same question — what does this cost while nothing is happening? — is the one to ask of every service wearing the label.