Your Cloud Bill Is Lying to You: A Cost Optimization Comparison

| 5 min read |
cloud aws cost-optimization infrastructure

A direct comparison of cloud cost optimization strategies -- what actually moves the needle vs. what just makes finance feel better.

Quick take

Reserved instances aren’t a strategy. Visibility is. Most teams burn money on idle resources they can’t even find, then negotiate a discount on the waste. Fix the waste first.


I’ve managed cloud spend at three startups now. A fintech startup where every penny in margin mattered. A mobility platform at Dropbyke in Seoul where we ran real-time services on a shoestring. And currently at Decloud, where – ironically – the whole product is about making cloud infrastructure sane.

I keep seeing the same pattern. Someone gets a scary AWS bill. Leadership asks engineering to “optimize cloud costs.” Engineering buys reserved instances, saves 20%, and calls it done. Meanwhile, half the staging environments are running 24/7, there are EBS volumes attached to instances that were terminated months ago, and nobody knows which team owns the NAT gateway that’s costing $400/month.

Reserved instances are a pricing mechanism, not a strategy. Here’s what actually works, ranked by effort vs. impact.

The Real Comparison

StrategyEffortTypical SavingsWhen It HelpsWhen It’s a Trap
Kill idle resourcesLow15-30%Always. Literally always.Never a trap. Just do it.
Right-size instancesMedium10-25%After you have utilization dataBefore you have data – you’ll guess wrong
Storage lifecycle policiesLow5-15%When you have >1TB of objectsWhen access patterns are unpredictable
Reserved instances / savings plansLow (to buy)20-40% off on-demandSteady, predictable workloadsFast-changing services, early-stage products
Spot / preemptible instancesHigh60-90% off on-demandCI, batch jobs, stateless workersAnything stateful or latency-sensitive
Architecture changesVery high10-50%When compute patterns are fundamentally wastefulWhen the org isn’t ready for the migration cost

That table tells a story most FinOps consultants won’t: the highest-ROI work is the boring stuff at the top.

Start With Visibility, Not Discounts

At the fintech startup, I inherited an AWS account with zero tagging discipline. Costs were allocated to “engineering” as a single line item. Completely useless. My first week, I enforced four tags on every resource:

Environment: production | staging | dev
Team: platform | data | product
Service: api | worker | web | ml-pipeline
Owner: <person who provisioned it>

Within two weeks, we found three full staging environments nobody was using. One had been running for five months. That single discovery saved more than the next quarter’s reserved instance commitment would have.

Tags are free. Use them.

Right-Sizing: The Unsexy Middle Ground

Most instances are oversized. This isn’t controversial. Every cloud provider’s own tooling will tell you this. The question is what to do about it.

My approach, applied at every place I’ve worked:

  1. Collect two weeks of utilization data. Not one day. Not peak hour. Two weeks across normal traffic patterns.
  2. Start with non-production. Dev and staging environments are almost always 2-4x oversized because someone copied the production config.
  3. Target p95 CPU below 60% after resizing. You want headroom. This isn’t about running hot.
Instance TypeMonthly CostAvg CPUp95 CPUAction
m5.2xlarge$2808%15%Downsize to m5.large ($70)
r5.xlarge$18345%72%Keep. Good fit.
c5.4xlarge$49612%20%Downsize to c5.xlarge ($124)
t3.medium$303%5%Ask if this service is still needed

That last column is the one that matters most. Sometimes the right size is zero.

Spot Instances: High Reward, High Effort

I’m a fan of spot capacity for the right workloads. At Decloud, we run all CI builds on spot instances. Saves us roughly 70% on build infrastructure. But I wouldn’t touch spot for anything user-facing or stateful.

The honest comparison:

WorkloadSpot-safe?Why / Why Not
CI/CD pipelinesYesBuilds are idempotent. Retry is cheap.
Batch ETL jobsYesCheckpointable. Interruption adds minutes, not risk.
Dev environmentsYesNobody cares if dev goes down for 2 minutes.
Stateless API workersMaybeOnly if you have enough replicas and proper drain handling.
DatabasesNoJust… no.
Single-instance anythingNoSpot + single instance = eventual outage

The Thing Nobody Talks About: Data Transfer

Cross-AZ traffic on AWS is $0.01/GB each way. Doesn’t sound like much until you’re pushing 10TB/month between services in different availability zones. That’s $200/month just for services talking to each other inside your own VPC.

Three fixes that cost nothing but attention:

  • Keep chatty services in the same AZ. Schedule pods to co-locate when latency and bandwidth matter.
  • Use VPC endpoints for AWS services. S3 traffic through a NAT gateway is money on fire.
  • Cache aggressively at the edge. A CDN in front of your API responses (where appropriate) cuts both latency and egress.

At Dropbyke, data transfer was our third-highest line item after compute and RDS. Moving our real-time location services into a single AZ and adding a VPC endpoint for S3 cut that bill by 40% in one sprint.

What I Actually Do Every Month

I don’t have a FinOps team. At startup scale, cost discipline is an engineering habit, not a department. Here’s my actual routine:

Weekly: Glance at the cost dashboard. Look for anything that jumped more than 20% week-over-week. If something spiked, find it before the month closes.

Monthly: Review top 10 services by cost. Check for idle resources – unattached volumes, orphaned load balancers, forgotten test clusters. Five minutes of cleanup saves hundreds.

Before any commitment: Right-size first. Always. Buying a reserved instance for an oversized instance just locks in the waste at a discount.


Cloud cost optimization isn’t a project with a finish line. It’s hygiene. Like writing tests or reviewing pull requests – you either build the habit or you pay the tax forever.

The teams that manage cloud spend well aren’t the ones with the best FinOps tooling. They’re the ones where every engineer can see what their service costs and cares enough to keep it reasonable.