Adios
BlogCloud Costs

Cloud Costs

What AWS Really Costs a Small Team: Public Cases and Prices

Published numbers from teams that cut or left their AWS bills, the billing surprises that hit small accounts, and a small production app priced line by line at AWS list prices.

Adios team12 min read

AWS is where most teams start, and for good reason. But many small teams find out later that their bill is made of more than the servers they asked for. Network plumbing is billed by the hour. Some mistakes are billed by the gigabyte. And free credits run out.

We collected the cases where teams published their own numbers, the billing surprises small accounts have written about, and what the surveys say. Then we priced a small production app line by line at AWS's list prices. Every figure links to its source. We read the prices on November 7, 2026.

The short version

  • A minimal production setup for one small web app comes to about $119 a month at AWS list prices (us-east-1): a container behind a load balancer, a NAT gateway and a small Postgres database. About $60 of that is charged by the hour whether or not anyone visits: the NAT gateway, three public IPv4 addresses and the load balancer.
  • Digital Society, a bootstrapped startup, used up its $1,000 of AWS credits in under six months. Moving to Hetzner took its peak monthly bill across AWS and DigitalOcean from $559.36 to $132.96.
  • Geocodio paid $907.53 in a single day because its S3 traffic went through a NAT gateway. AWS refunded it.
  • In Flexera's 2026 survey, cloud decision-makers estimated that 29% of their cloud spend was wasted.
  • 37signals brought its cloud bill down from $3.2 million a year to $1.3 million by moving its servers off AWS.

None of this means AWS is the wrong choice for everyone. The last sections cover when it is the right call, and how to keep an AWS bill small if you stay.

Teams that published their numbers

These are teams that wrote up their own before and after costs. Most moved steady workloads to rented servers they run themselves.

TeamBeforeAfterWhat changed
Digital Society, a bootstrapped startup$559.36 a month at peak, across AWS and DigitalOcean$132.96 a monthMoved to Hetzner Cloud, a 76% cut
Datapult, a bootstrapped SaaS$24,000 a year on AWSA 90% cut, by the founder's accountMoved to Hetzner and OVH
Prosopo, a small team$3,000+ a month for MongoDB Atlas on AWS$160 a month for the serverSelf-hosted MongoDB on Hetzner
OneUptime, an observability company$38,000+ a month on AWSSaving over $1.2 million a year, two years laterIts own servers in a colocation facility
Prerender.io, at about $2.5M in yearly revenueRoughly $1M a year on AWSAround $200K a yearIts AWS setup was reworked after an acquisition
37signals, maker of Basecamp and HEY$3.2M a year on cloud in 2022$1.3M a year in 2024, all of it S3Its own servers in two data centers, then its own storage

Digital Society ran Fargate, a load balancer, RDS and a NAT gateway. They wrote: "we used up our free credits in less than 6 months." Digital Society

Datapult's founder wrote: "I was paying AWS $24,000 a year, and it felt completely wrong." Ongoing operations take the same "0.1 FTE" as they did on AWS. Datapult

Prosopo's database bill was the instance ($1,000 a month), backups ($700) and data transfer ($1,000). Their caveat: "You need to make sure it is secure, backed up, monitored." Prosopo

OneUptime spent $150,000 on servers and keeps a backup cluster on AWS that "can spin up in under 10 minutes." Two years on, they report "~14 engineer-hours/month" of upkeep, and bandwidth had been "22% of our AWS bill." OneUptime, 2023 · OneUptime, 2025

Prerender's owner, saas.group, wrote that the move was "$800K back in margin." saas.group

37signals called it "a saving of almost two million dollars per year." Their servers cost "about $700,000 in the end," paid from savings during the second half of 2023. They have since moved most of their files off S3 as well. 37signals, 2024 · 37signals, 2025 · 37signals Dev, 2026

Read these with their caveats. These figures are the companies' own accounts. Several teams now run their own databases and servers, which takes skills that a managed service would otherwise cover. Lendsqr, which made a similar move, put it plainly: "For teams without strong DevOps depth, this is where the savings can get eaten back." Lendsqr

How small bills get big

Large savings make headlines, but small teams are usually hurt by surprises: a line on the bill they didn't know existed, or a mistake that bills by the request.

  • An empty, private S3 bucket. A developer's bucket name matched a placeholder in a popular tool's default settings. Other people's systems sent it about 100 million requests, and the bill came to about $1,300. AWS cancelled it, then changed S3 so that "unauthorized requests that customers did not initiate are free of charge." InfoQ · AWS
  • S3 traffic through a NAT gateway. Geocodio found 20,167.32 GB of NAT gateway data processing in a single day, "which amounted to $907.53." A free S3 gateway endpoint would have kept that traffic off the NAT gateway. AWS refunded the amount. Geocodio
  • A file too big to cache. A 13 GB file behind a CDN was over the CDN's cache limit, so every download came from S3: "more than 30.6 terabytes" in a month, billed at $2,657.68. AWS refunded all but about $40. Chris Short
  • A function that called itself. A small Next.js app that usually cost $200 a month ran up about $4,600 in a day. Its $300 budget alert came late because CloudFront charges can take up to 24 hours to show up. AWS gave a one-time refund. Hacker News
  • Event loops. DataChef's workflow published an event that triggered itself, and the bill came to $14,000. A team on the Serverless forum reported $26,000 from a storage trigger that kept firing on its own output. Neither post mentions a refund. DataChef · Serverless forum
  • What the free tier doesn't cover. A developer on the free tier turned on Aurora PostgreSQL, which it doesn't include, and got a $103.26 bill. AWS refunded most of it. Lapcat Software

AWS often refunds honest mistakes when asked, and it has fixed some of these traps. Lambda now stops some recursive loops on its own. But refunds are up to AWS, and an alert only helps once the charges show up. AWS

Pricing a small production app on AWS

Here is a small production web app in the layout AWS recommends: one container on Fargate in a private subnet, an internet-facing load balancer across two zones, a NAT gateway so the container can reach the internet, and a small Postgres database on RDS. It serves 100 GB a month to visitors and writes 10 GB of logs. Prices are us-east-1 on-demand list prices, with no credits or discounts, over 730 hours a month.

ItemHow it's pricedMonthly
Fargate, 1 vCPU and 2 GB (ARM)$0.03238 per vCPU-hour + $0.00356 per GB-hour$28.84
Load balancer$0.0225 an hour$16.43
Load balancer capacity unitsAbout 100 hours at $0.008$0.80
NAT gateway$0.045 an hour$32.85
NAT gateway data, 25 GB$0.045 per GB$1.13
Public IPv4 addresses, 3$0.005 an hour each$10.95
RDS PostgreSQL, db.t4g.small$0.032 an hour$23.36
Database storage, 20 GB$0.115 per GB-month$2.30
Data out to the internet, 100 GBFirst 100 GB a month are free$0.00
CloudWatch Logs, 10 GB$0.50 per GB after 5 GB free, plus storage$2.80
TotalAbout $119

The NAT gateway, the three IP addresses and the load balancer cost about $60 together. They're charged by the hour, before the app serves a single request. The load balancer needs two of the IP addresses because it runs in two zones, and the NAT gateway needs the third.

The setup AWS recommends for high availability doubles some of these. With two containers, a NAT gateway in each zone and a database with a standby in a second zone, the same app comes to about $211 a month.

Some lines grow with traffic. Data out costs $0.09 per GB after the free 100 GB, so 1,000 GB a month adds $81. Every gigabyte through the NAT gateway costs $0.045, on top of data transfer if it leaves AWS. Neither total includes DNS, container image storage, secrets, a firewall, a staging copy of the app, support or tax.

Credits cover this for a while. AWS's self-funded startup package starts at $1,000, about eight months of the smaller setup. Investor-backed startups can get up to $200,000. New accounts get $100 in credits, and can earn up to $100 more. Their free plan lasts "6 months after sign-up or when Free Tier credits are depleted, whichever comes first." AWS Activate · AWS Free Tier

Prices come from AWS's price list and pricing pages for NAT gateways and IPv4 addresses, Fargate, load balancers, RDS for PostgreSQL, data transfer and CloudWatch.

What the surveys say

Most cloud surveys ask larger companies, and several are published by firms that sell cost tools. Their waste figures are the respondents' own estimates. They still show the same pattern:

  • Flexera, 2026. Respondents estimated wasted spend at 29%, "for the first time in five years" up rather than down, and 85% named managing cloud spend a top challenge. Flexera
  • Flexera, 2025. "Organizations are exceeding budgets by 17%." Flexera report
  • IDC. "Close to half of cloud buyers spent more on cloud than they expected in 2023," and 59% expected the same in 2024. IDC
  • HashiCorp and Forrester, 2024. At companies with more than 1,000 employees, more than nine in ten respondents (91%) reported waste in their cloud spend. HashiCorp

Other numbers cut the other way. SaaS Capital's survey of more than 1,000 private SaaS companies found that the median company spends 5% of its yearly recurring revenue on hosting. SaaS Capital IDC found that "only 8-9% of companies plan full workload repatriation." Most move some workloads, not everything.

When AWS is still the right call

The investors who made the strongest case about cloud costs also wrote: "For a new startup or a new project, the cloud is the obvious choice." a16z Some of the teams that left agree. OneUptime: "Cloud-first was the right call for our first five years."

AWS is likely the better fit when:

  • Your load swings widely, and paying only for busy hours beats paying for capacity you rarely use. Netflix found its cloud cost per stream ended up "a fraction" of its data center cost. Netflix
  • You rely on managed services that would take real work to replace.
  • You have large credits, and the work to move would cost more than they save.
  • You need a specific compliance setup, a region or a service that only a large provider offers.

How to keep an AWS bill small

If you stay on AWS, these come straight from the cases above:

  • Set budget alerts, and know they lag. Some charges take up to a day to show up, so an alert won't stop a runaway function on its own.
  • Keep S3 traffic off the NAT gateway. A free S3 gateway endpoint does it.
  • Count your public IPv4 addresses. Each one costs $3.65 a month, including the load balancer's.
  • Question the NAT gateway. If nothing needs to reach the internet from a private subnet, you may not need one. If you do, share one rather than running one per environment.
  • Watch log ingestion. CloudWatch charges $0.50 per GB ingested after the free 5 GB.
  • Guard your triggers. Make sure no function or workflow can trigger itself, and set limits on how many copies can run at once.
  • Check what the free tier covers before you turn a service on, and know when your credits run out.

Where Adios fits

Adios charges a fixed monthly price per plan for a set amount of CPU, memory, storage and bandwidth. Plans have no separate charges for NAT gateways, IP addresses or load balancers. Your app and its database run side by side on a private network and share the plan's resources.

PlanPriceResources
Plus$10 a month1 vCPU, 1 GB RAM, 10 GB storage, 500 GB bandwidth
Dev$50 a month2 vCPU, 4 GB RAM, 50 GB storage, 2 TB bandwidth
Pro$99 a month per unit4 vCPU, 8 GB RAM, 150 GiB storage, 5 TB bandwidth

This isn't a like-for-like comparison with the AWS setup above. AWS offers far more services, regions and ways to spread an app across zones. But if your app is a steady web app, API, worker and database, a plan is easier to predict than a bill made of hourly charges. You can start free with no card, and the pricing page has the details.

  All articles