How a $40 server becomes a $400 bill

We see this story again and again. It is a composite rather than one client, but if your business runs on AWS, Azure or Google Cloud, some of it will sound familiar.

A developer puts the company website on a single cloud server. It costs about $40 a month. Everyone is happy.

Then a staging copy goes up so changes can be tested before they go live. The database moves to a managed service because someone read that it is safer. Backups get switched on, which is good. Detailed logging gets switched on, which is also good. A contractor launches a much bigger server to run a load test, finishes the contract three months later and moves on. The server does not.

Two years later the bill is $400 a month. The website gets the same traffic it always did. Nobody can say what the other $360 pays for, and nobody wants to delete anything in case the site breaks.

That last part is the real problem.

Cloud waste is rarely one big mistake. It is twenty small things, each too minor to chase on its own, and each kept alive by the fear of switching it off.

Why cloud bills only ever go up

Old-style hosting charged a flat fee. The cloud charges by the hour, by the gigabyte and by the request. That is wonderful while you are growing and expensive when nobody is watching.

The catch is in a single word. You pay for what you provision, not for what you use. A server ticking along at 3% CPU costs exactly the same as one working flat out. A disk you detached last spring keeps charging until somebody deletes it.

Cloud consoles are also built for engineers, not for whoever pays the invoice. So bills drift upward quietly. Nobody ever decides to spend more. It just happens, a few dollars at a time.

Nine places the money leaks

The prices below are rough figures for AWS's main US region at the time of writing. Azure and Google Cloud charge for the same things under different names, so the advice applies to all three.

1. Servers sized for a day that never came

When people choose a server size, they guess high. Nobody wants to be the person whose site fell over on launch day. So a website that needs 2 GB of memory ends up on a machine with 16.

Open the CPU and memory graphs for the last 30 days. If average CPU sits under 10 to 15% and memory never comes close to full, you can usually drop one or two sizes. Each step down roughly halves the price of that machine.

2. Test servers that work office hours but run all night

Staging, testing and demo environments get used for perhaps 40 hours a week. You pay for all 168. Schedule them to switch off at night and over weekends and their cost falls by about 70%. In our experience, nobody notices except the person reading the bill.

3. Zombie storage

Delete a server and its disk often stays behind. So do old snapshots, abandoned backups, and storage buckets full of files from a project that wrapped up years ago. Storage is cheap per gigabyte, which is exactly why it piles up without anyone noticing.

4. Public IP addresses

A small one, but a classic. Since February 2024, AWS has charged for every public IPv4 address, about $3.60 a month each, attached to anything or not. Ten forgotten addresses come to $36 a month for nothing at all.

5. Data leaving the cloud

Sending data into the cloud is free. Sending it out to visitors is not. On AWS the first pricing tier is around $0.09 per gigabyte, and a site serving large images or video straight from its own server can end up paying more for traffic than for the server.

The usual fix is a CDN (content delivery network) such as Cloudflare or Amazon CloudFront in front of the site, with images compressed properly. As a bonus, it is also one of the quickest ways to make a slow site feel fast.

6. The NAT gateway nobody asked for

This one surprises almost everyone. A NAT gateway lets servers on a private network reach the internet, and plenty of setup guides add one by default. It costs around $32 a month just for existing, plus a fee on every gigabyte that passes through. For a small business with two or three servers there is often a simpler, cheaper design.

7. Logs kept forever

Logs earn their keep for about a month. After that most are never opened again, yet many services keep them indefinitely by default, and you pay to store every line. Set a retention period of 30 to 90 days unless a regulation in your industry says otherwise.

8. A database bigger than the app

Managed databases are worth paying for. They handle backups, security patches and failover so your team does not have to.

They are also easy to oversize, and some options, such as a standby copy running in a second data centre, double the price. Keep the standby for a production system your customers rely on. For staging, you almost certainly do not need it.

9. Paying full price for steady work

If a server has run around the clock for a year and will keep doing so, the hourly on-demand rate is the most expensive way to pay for it. AWS Savings Plans and Reserved Instances, and their equivalents on Azure and Google Cloud, cut that price by up to 72% in return for a one or three year commitment.

Do this last. Committing to a server you are about to shrink simply locks the waste in for three years.

How to spot each leak

LeakWhere to lookTypical saving
Oversized serversCPU and memory graphs for the last 30 daysRoughly half per size you drop
Test servers running 24/7Anything named or tagged staging, test, dev or demoAbout 70% on those servers
Zombie storageUnattached disks, snapshots older than your retention policySmall per item, but it adds up every month
Unused IP addressesPublic IPs with nothing attachedAbout $3.60 a month each
Data transferThe "data transfer" lines on your billLarge if you serve images or video
Old logsLog groups with no retention period setGrows with every month you wait
On-demand pricingServers that have run nonstop for six months or moreUp to 72% with a commitment

A one-hour audit you can do yourself

Most of this needs no technical knowledge at all. You need read access to the billing console and a cup of something hot.

  1. Open last month's bill, split by service. On AWS that is Cost Explorer, on Azure it is Cost Management, and on Google Cloud it is the Billing reports. Sort by cost. The top three lines are usually most of the bill, so start there.
  2. Put three months side by side. A line that grows every month while your traffic stays flat is a leak.
  3. List every running server. Next to each one, write what it is for. If nobody can answer, you have found your first problem.
  4. Look for anything with nothing attached. Disks, IP addresses and load balancers with no server behind them.
  5. Check how old your stored data is. Snapshots and backups older than your retention policy can usually go. No retention policy? That is your second finding.
  6. Check every region, not just your usual one. The AWS console shows one region at a time, so a test server launched in the wrong place can hide there for years.
  7. Turn on a budget alert. All three providers let you set one up in a few minutes. Pick a figure about 10% above your current monthly bill.

One rule: do not delete anything during the audit itself. Make a list, check each item with whoever built the system, then remove things one at a time. If there is any doubt about a disk, snapshot it first. A snapshot costs pennies. A lost database costs a great deal more.

Do you need the big cloud at all?

It is an awkward question, and an agency that builds cloud systems probably should not be the one asking it. We ask it anyway.

AWS, Azure and Google Cloud are excellent for apps that need to scale quickly, handle sensitive data or run many connected services. A ten-page company website is none of those things, and plenty of small businesses would pay less and worry less with simpler hosting.

Your situationOften the better fit
Company website or blogGood managed hosting or a static site host, often free or under $20 a month
Online shop on a standard platformThe platform's own hosting
Custom web app with steady trafficOne or two well-sized virtual private servers (VPS) at a fixed monthly price
App with spiky traffic, many services or strict compliance rulesA major cloud provider, set up properly

Fixed-price hosting has one underrated advantage. The bill is boring. For a small team without a full-time engineer, boring is worth a lot.

How to stop the bill creeping back

Cutting the bill once is the easy part. Keeping it down takes a handful of habits:

  • Tag everything. Every server, disk and database gets a tag for its project and its owner. The bill can then be split by project, and "whose is this?" finally has an answer.
  • Give the bill an owner. One named person reviews it every month. When nothing has changed, that takes fifteen minutes.
  • Set budgets and alerts. One for the whole account, plus one per project if you run several.
  • Give experiments an expiry date. Anything launched for a test gets a "delete by" date in its tags.
  • Describe your setup in code. Tools such as Terraform keep a written record of what exists and why. It takes more effort at the start, but nothing gets created by hand and then forgotten.

None of this is clever. Large companies employ whole teams to do it, under the name FinOps. A small business can get most of the benefit from one person and a monthly calendar reminder.

When to bring in help

If the audit turns up a few idle servers and some old snapshots, you can fix that yourself this afternoon.

If it turns up a tangle of services nobody understands, or a design that charges you every time its own parts talk to each other, that is a job for someone who builds cloud systems for a living. Rearranging a live system without a plan is how websites go down on a Friday evening.

Qorica sets up and looks after cloud infrastructure for growing businesses: servers sized to the real workload, backups that are actually tested, monitoring that warns you before customers notice, and bills you can read. See our infrastructure services, or send us a breakdown of last month's bill and we will show you where the money is going. If you are rebuilding your site at the same time, our website redesign checklist covers speed and launch planning too.