Cutting the AWS Bill — 28 case studies

Part 1: The Cost Equation, Twelve Levers and Fourteen Patterns

Part 1 of 10 · beginner

Sep 26, 2026 · devops · 19 min read · 3728 words beginner

Cutting the AWS bill: the cost equation, twelve levers and fourteen thinking patterns.

devops aws finops cloud-cost

Most AWS bills are not reduced by a clever trick. They are reduced by a method: make the bill queryable, question every large number, and attack the right term of a simple equation. This first part distils 28 public, numbers-backed AWS cost-reduction stories (published 2012 to September 2026) into one cost equation (spend is quantity times unit price times time times topology, plus the choice of venue), twelve levers, an eight-step order of operations, four shapes of spend and fourteen recurring thinking patterns. The stories range from a $2,410-a-month clean-up at Levels.fyi to Dropbox's $74.6 million storage exit. Every later part in this series zooms into one group of cases; read this one first, because it gives you the vocabulary they all share.

Get the full report. This series expands the research report Cutting the AWS Bill: 28 Case Studies (53 pages, PDF, 780 KB). One click starts the download.

⬇ Download PDF

1. Why study other people's AWS bills

Cloud cost work has a strange property: the techniques are public, the tools are cheap, and yet most organisations still overspend by a large margin. The gap is rarely knowledge of a single feature. It is the habit of looking. The 28 case studies behind this series were selected because each one is public, AWS-centric (or directly about leaving AWS), and contains concrete numbers or specific, reproducible techniques. Together they cover startups, scale-ups, enterprises and Amazon itself.

The point of reading them is not to copy the headline percentage. It is to see how the engineers reasoned: what made them look, how they tested a hypothesis before acting, what they refused to trust, and what they got wrong. Techniques change every time AWS launches a new storage class or instance family. Thinking patterns last.

Read the numbers with care. Savings figures come from the companies themselves (or, where noted, from AWS or another vendor). They were not audited, and percentages rarely share a scope: "90%" for Prime Video describes one internal service, while "20%" for Duolingo describes the whole cloud bill. Prices quoted are approximate us-east-1 list prices as of September 2026. Treat every number as a signal of what is possible, then measure your own.

1.1 The range of outcomes

MeasureValueWhat it tells you
Case studies28Startups, scale-ups, Amazon itself, enterprises
Distinct levers12Each case combines one to seven of them
Typical reduction15-90% scoped, 15-40% whole-billFull-bill programmes land in the teens to forties
Dollar-quantified savings$130M+ (excluding projections)Dominated by Dropbox ($74.6M) and HERE ($50M)
Smallest win$2,410 per month (Levels.fyi Part 2)Four fixes, nothing switched off

2. The cost equation

Every AWS line item is a product of a few terms. Seeing the bill this way turns the vague instruction "cut costs" into specific questions about which term to attack.

Spend = Quantity x Unit price x Time x Topology     (plus: where it runs at all, the venue)
Five terms, five questions Quantityhow many GB,requests, lines?delete / cache Unit pricewhich product,class, generation?swap / commit Timehow long doesit exist?schedule / TTL Topologywhat path dobytes take?endpoints / zones Venueshould it run onAWS at all?compare TCO Most successful programmes attacked quantity and time first; venue last.

Fig. 1 - The cost equation. Pick the term before you pick the tool.

TermWhat it meansHow to attack itSeen in
QuantityHow many instances, GB, requests, log lines, snapshots or state transitions you consumeDelete idle resources, right-size, shorten retention, send fewer requests, log less, cache longerLevels.fyi, Segment, Duolingo
Unit priceWhat AWS charges per unit: depends on product, class, generation and purchase modelGraviton and newer generations, cheaper storage classes, Spot, Savings Plans and RIs, Aurora I/O-Optimized, DynamoDB Standard-IACanva, Pinterest, HERE, Salesforce
TimeHow long the resource exists or the data is keptAutoscaling to the traffic curve, schedules for non-production, TTLs and lifecycle rulesPinterest 2012, Moneysmart
TopologyThe path data takes: across AZs, through NAT, out to the internet and back, through per-request edge servicesGateway and interface endpoints, zone-aware routing, PrivateLink, avoiding hairpinsDoorDash, nOps, Levels.fyi
VenueWhere the workload runs at allStay, move to a cheaper provider, or run on owned hardware37signals, Dropbox, OneUptime
Choose a unit metric before you start. Absolute spend should rise with a growing business. What must fall is cost per unit of value: per ride (Lyft), per event processed (Segment), per active learner, per GB ingested, per thousand page views. Pick one, chart it weekly, and make every optimisation report its effect on that number. A rising bill can be healthy; a rising cost per unit never is.

3. The twelve levers

Across the 28 cases, every action fits one of twelve levers. Counting how many cases used each one says something important: the biggest wins rarely come from a pricing trick alone.

LeverCases using itTypical move
Storage tiering8Match S3 class to real access patterns; lifecycle rules
Right-size / autoscale8Requests, task counts, node consolidation, schedules
Visibility and attribution7CUR / Data Exports in a warehouse, tags, unit metrics
Architecture / code7Fix chatty designs, inner loops, IPC, hot partitions
Leave the cloud (partially)6Repatriate steady, storage-heavy workloads
Spot5Interruptible, restartable, diversified workloads
Graviton / newer generation5Arm instances, gp3, newer families
Culture and ownership4Showback, leaderboards, cost in design docs
Network path / data transfer4Endpoints, zone-aware routing, no hairpins
Commitments4Savings Plans, RIs, Database Savings Plans
Eliminate idle4Delete forgotten instances, volumes, caches
Retention and logging3Set retention, stop logging payloads, cheaper destinations

Notice that storage tiering and right-sizing lead the count, while commitments sit near the bottom. Pricing tools are the cheapest lever in engineering terms, but they are rarely the biggest one, and they are dangerous when applied too early.

4. Order of operations

The cases converge on a sequence. Doing the steps out of order is the most common way to waste effort, for example buying three-year commitments for instances that right-sizing would have halved.

StepVerbWhat it involves
1SeeMake spend queryable and attributable: CUR 2.0 / Data Exports, tags, per-team views, anomaly detection
2StopDelete what nobody needs: idle instances, orphaned volumes and caches, forgotten environments
3ShrinkRight-size instances, containers and databases; shorten retention; cut log volume
4SwapMove to better price-performance: Graviton, gp3, newer generations, cheaper storage classes
5FlexMatch capacity to demand: autoscaling, schedules, Spot, Karpenter consolidation
6RedesignFix chatty paths, hairpins, cross-AZ fan-out and per-request inner loops
7CommitBuy Savings Plans, RIs or Database Savings Plans on the new, smaller baseline
8RelocateFor steady, storage-heavy workloads, compare other venues on full cost of ownership
See, Stop, Shrink, Swap, Flex, Redesign, Commit, Relocate 1 See 2 Stop 3 Shrink 4 Swap 5 Flex 6 Redesign 7 Commit 8 Relocate Free and safe on the left; expensive or hard to reverse on the right.

Fig. 2 - The order matters: commitments discount whatever you run, waste included.

5. Four shapes of spend

Before choosing tools, classify each large line item by its shape over time. The shape tells you which lever fits.

ShapeTypical examplesBest-fit leversSeen in
Flat baselineDatabases, core services, always-on clustersRight-size, Graviton, then commit (Savings Plans / RIs / Database Savings Plans)HERE, Zomato
PeriodicWeb tiers with day/night cycles, office-hours non-productionAutoscaling, schedulesPinterest 2012, Moneysmart
Spiky / batchETL, CI/CD, analytics jobs, ML trainingSpot, Karpenter, serverless at low duty cyclesSalesforce, Tinybird, Lyft CI
Growing with dataS3, snapshots, logs, DynamoDB tablesLifecycle, tiering, TTLs, retention policyCanva, Snap, Duolingo

6. Fourteen thinking patterns

These are the recurring moves that separated successful programmes from generic cost-cutting. Each lists evidence from the cases and a concrete way to apply it.

6.1 Patterns about looking (P01-P05)

P01. Start from the bill, not the diagram. Engineers tend to optimise the components they know. The bill shows what actually costs money, which is often something nobody thinks about: a CDN, backups, a NAT gateway. Apply it: rank the top 20 line items by cost and by month-over-month growth, and investigate both lists. Evidence: Levels.fyi (both parts), Segment, Duolingo, Lyft.

P02. Ask "expected or buggy?" and watch slopes. A large number can be fine; a small number growing every day is a lead. Levels.fyi chased a $26 line item because it kept rising; Segment noticed its bill rising faster than usage. Apply it: plot each service's daily cost with a 30-day trend line, and alert when growth outpaces your unit metric.

P03. Treat defaults and old decisions as suspects. Almost nothing in these cases was a bug. Log destinations, retention periods, autoscaling rules and capacity bumped during incidents were each correct once and expensive later. Apply it: for every large resource, find the decision behind it and ask whether its reason still holds.

P04. Price every copy and every day kept. Storage cost is bytes times copies times duration. Backups, versions, snapshots and logs multiply silently. Apply it: write retention as a table (what, how many copies, how long, why) and enforce it in code.

P05. Estimate cost per unit of work for each design. Services priced per request, transition or GB processed turn traffic patterns into bills. High-frequency inner loops belong in memory, not in queues, object stores or orchestrators. Apply it: in design reviews, compute cost per request, event or stream-second for each proposed path. Evidence: Prime Video, Levels.fyi Part 2, Duolingo, DoorDash.

6.2 Patterns about deciding (P06-P10)

P06. Normalise by a business unit. Absolute spend hides efficiency; cost per ride, per event or per GB reveals it and makes teams comparable. Apply it: publish one unit-cost number per product weekly, with a team breakdown. Evidence: Lyft, Segment, Canva.

P07. Do the payback maths before flipping a switch. Migrations, transitions and hardware purchases have one-off costs. The winning teams ranked options by payback period. Apply it: payback months equals one-off cost divided by monthly saving; prioritise anything under six months. Evidence: Canva, Rewind, 37signals, Dropbox.

P08. Verify from the inside before deleting. Metrics on a resource do not prove it is used; its own internals do (Redis INFO, connection counts, access logs). Apply it: snapshot, inspect, scale to zero or block access for a week, then delete.

P09. Change the unit price with low-risk swaps. Graviton, gp3, t4g and newer generations offer lower prices for equal or better performance with little code change. Apply it: build multi-arch images once and migrate the largest compute consumer first.

P10. Make workloads movable, then let automation move them. Spot, consolidation and schedules only save money when workloads handle interruption gracefully. Apply it: graceful shutdown, disruption budgets and checkpointing before you enable Spot or consolidation.

6.3 Patterns about commitment and verification (P11-P14)

P11. Optimise first, commit last. Commitments discount whatever you run, waste included, for one to three years. Apply it: commit only to the trough of the optimised baseline and ladder purchases quarterly. Evidence: HERE, Airbnb, Duolingo.

P12. Profile when compute dominates. In CPU-bound fleets, inefficiency in code looks like ordinary EC2 usage on the bill; only a profiler finds it. Apply it: set a "cores per unit of work" goal and profile the hottest service against it. Evidence: Recall.ai, Segment.

P13. Measure both sides of a change, and distrust fresh billing data. Cost Explorer's latest days are incomplete, and a change can move cost somewhere else (backend load, another AZ). Apply it: use a control line item and real-time signals, and wait several days before declaring victory. Evidence: Levels.fyi Part 2.

P14. Know what the cloud premium is buying. Elasticity, managed operations and speed are worth paying for; for steady, storage-heavy loads with in-house skills they may not be. Lift-and-shift gets the worst of both worlds. Apply it: score each large workload on variability, managed-service dependence, storage and egress share, and operations capability. Evidence: 37signals, Dropbox, Prerender, OneUptime, GEICO.

7. The scoreboard: all 28 cases at a glance

Keep this table open while you read the rest of the series. It lists each case, its dominant lever and its headline result exactly as the company reported it. Scopes differ, so compare within a lever, not across the whole column.

#CompanyPrimary leverHeadline result
CS-01Levels.fyi, Part 1 (2024)Eliminate idle~15% of total cloud spend removed
CS-02Levels.fyi, Part 2 (Sep 2026)Retention and logging$28.9K a year (~$2,410 a month) across four fixes
CS-03Segment (2016-17)Visibility and attributionOver $1M a year from a three-month effort
CS-04Duolingo (2024)Visibility and attribution20% annualised cloud savings in a few months
CS-05Lyft (2018-19)Visibility and attribution~40% lower AWS cost per ride in six months
CS-06AirbnbVisibility and attributionCUR loaded into its own warehouse for team attribution
CS-07CanvaStorage tiering$3.6M a year (~$300K a month), growing
CS-08Snap Inc.Storage tieringTens of millions of dollars, same user experience
CS-09RewindStorage tiering~35% lower total S3 cost, ~6-month payback
CS-10PinterestGraviton / newer gen47% saving on one important workload
CS-11HoneycombGraviton / newer gen100% of the EC2 fleet on Graviton
CS-12ZomatoGraviton / newer gen~30% lower compute cost, ~25% better performance
CS-13ZendeskGraviton / newer genUp to 42% lower cost, up to 30% better performance
CS-14Salesforce Audience StudioSpot48% overall savings after moving to Spot
CS-15TinybirdSpot~20% off the total AWS bill (up to 90% for CI/CD)
CS-16Salesforce (EKS to Karpenter)Right-size / autoscale~5% in FY2026, 5-10% more expected
CS-17Moneysmart GroupSpot~58% net saving on Spot-managed capacity
CS-18HERE TechnologiesCommitments$50M saved plus $150M avoided over ~3.5 years
CS-19Amazon Prime VideoArchitecture / code~90% lower infrastructure cost for one service
CS-20Recall.aiArchitecture / codeOver $1M a year saved by replacing an IPC mechanism
CS-21DoorDashNetwork pathCross-AZ traffic localised inside each zone
CS-22nOps (own account)Network path$12K a month removed by one routing fix
CS-2337signalsLeave the cloud$10M+ projected savings over five years
CS-24DropboxLeave the cloud$74.6M operating-expense reduction over two years
CS-25X (formerly Twitter)Leave the cloud~60% lower monthly cloud cost (company claim)
CS-26Prerender.ioLeave the cloud$1M to $200K annual server cost (-80%)
CS-27OneUptimeLeave the cloud$230K saved a year (55%+)
CS-28GEICO (cautionary tale)Leave the cloud2.5x growth in cloud bills after ten years of migration
Reading the scoreboard. Two figures deserve special caution. The X result is a company claim made during a period of vendor disputes and deep staff cuts, and only third-party estimates exist for its dollar savings. The GEICO row is not a saving at all: it is what happens when a legacy estate is lifted and shifted without modernisation, which is why it is included as a calibration point rather than a target.

8. How to actually read a bill

Every case in this series starts with the same physical act: getting billing data into a place where an engineer can ask questions of it. There are three levels of access, and the teams that saved the most went to the deepest one.

8.1 Level one: the console

Cost Explorer is the fastest way to see the shape of a bill. Group by service, then by usage type, then by linked account. This is how Levels.fyi discovered that roughly a quarter of its bill was CloudFront. Its weakness is resolution: you cannot join it with your own business data, and its latest days are incomplete because billing data arrives late. Levels.fyi's second clean-up made this explicit by keeping a "control" line item that should not have moved, so that a real drop could be told apart from missing data.

8.2 Level two: exports in a warehouse

Segment enabled detailed billing reports in 2016, which dropped raw line items into S3, and loaded them into Redshift. Two engineers then read the bill line by line and found about fifteen problem areas that together were roughly 40% of the monthly cost. Today the equivalent is CUR 2.0 or Data Exports queried with Athena or loaded into your own warehouse. Airbnb takes the same approach at larger scale: it uses Cost Explorer for quick views but ingests the Cost and Usage Report into its internal data platform so spend can be sliced hourly, daily or monthly and attributed to owning teams.

8.3 Level three: attributed and normalised

Lyft went one step further. A Python script divided AWS spend by the number of rides and ranked engineering teams by trend; a later pipeline handled discounts and Reserved Instance costs that the raw usage reports did not reflect transparently. Cost per ride fell 40% in six months while volume grew. The transferable idea is that once billing data sits next to business data, the same analytics stack that powers the product can power cost decisions.

LevelToolYou can answerYou cannot answer
1Cost ExplorerWhich services and accounts are large or growing?Which team, feature or customer caused it?
2CUR 2.0 / Data Exports + Athena or warehouseWhich resource, tag or API operation, hour by hour?Cost per unit of business value
3Exports joined with business metricsCost per ride, event, learner or GB; team leaderboardsAnything not tagged or attributable, until you fix tagging

9. What changed in 2025-2026

Techniques date; thinking patterns do not. Four recent changes affect how you apply the patterns above, and the report calls them out explicitly.

  • Database Savings Plans (December 2025). One-year, no-upfront commitments in dollars per hour that discount Aurora, RDS, DynamoDB, ElastiCache (Valkey), DocumentDB, Neptune, Keyspaces, Timestream and DMS by up to 35%, across engines, instance families and regions. Serverless options such as Aurora Serverless v2 and DynamoDB on-demand became discountable for the first time. Discounts vary by service: roughly 20% for RDS and Aurora instances, up to 35% for their serverless forms.
  • Resale and pooling rules (2025). AWS reportedly restricted Reserved Instances and Savings Plans to a single end customer's usage from June 2025, limiting pooled "group buying" across unrelated customers. Any third-party commitment service you rely on should be re-checked.
  • Zone-aware routing in ECS Service Connect (July 2026). On by default, it keeps most service-to-service traffic in-zone, cutting cross-AZ charges and latency without code changes (Part 6).
  • Exit data transfer (since March 2024). AWS waives data-transfer-out fees for customers moving data off AWS, on request. 37signals had an egress bill of roughly $250,000 waived (Part 7).

10. A ten-minute exercise before the next part

Do this now, with your own account, and you will read the remaining parts as a checklist instead of a story.

  1. Open Cost Explorer, group by service for the last three full months, and list the top ten lines with their month-over-month change.
  2. For each of the ten, write which term of the equation it is dominated by: quantity, unit price, time or topology.
  3. Classify each as flat baseline, periodic, spiky or growing with data.
  4. Pick the one line that is small but has grown every month. That is your pattern-P02 lead.
  5. Write down the single unit metric you would use to judge progress, and its current value.

If you cannot do step one because nobody can tell you which team owns a line, that is itself the first finding: your programme starts with tagging and attribution (Part 2), not with any of the techniques in Parts 3 to 7.

10.1 Objections you will hear

"We are too small for this to matter." Levels.fyi's second round saved $28,900 a year with four fixes and nothing switched off. That paid for itself in hours of engineering time, and the method (largest line items first, ask whether the number is expected) scales down as well as up.

"Optimising will slow the roadmap." Duolingo's answer was to put cost estimates into design documents and quarterly spend reviews into team rituals, so cost became part of normal engineering rather than a separate project. Lyft's leaderboards did something similar with peer pressure.

"We will just move off AWS." Part 7 shows when that works (steady, storage-heavy loads with in-house operations skills) and when it fails (GEICO). Relocation is step eight of eight for a reason.

11. How the rest of this series is organised

The 28 cases fall into seven groups by their dominant lever, and each group gets one part. Every case follows the same layout so you can compare them quickly: context, what the team did, results, the thinking pattern, lessons to steal, and watch-outs.

PartCasesDominant lever
2Levels.fyi (x2), Segment, Duolingo, Lyft, AirbnbVisibility, hygiene and reading the bill
3Canva, Snap, RewindStorage tiering and data lifecycle
4Pinterest, Honeycomb, Zomato, ZendeskGraviton price-performance
5Salesforce (x2), Tinybird, MoneysmartSpot, autoscaling, Kubernetes
6HERE, Prime Video, Recall.ai, DoorDash, nOpsCommitments, architecture, network
737signals, Dropbox, X, Prerender.io, OneUptime, GEICORepatriation
8AllTechnique catalogue, maths and pitfalls
9All90-day playbook and applying it to your stack
Is a 15-40% whole-bill reduction realistic for my company?

It is what full-bill programmes in the case studies landed at, but the scope matters. Levels.fyi removed about 15% with no trade-off; Duolingo reported 20% annualised; Tinybird 20%. Single-workload figures (47% on one Pinterest workload, 90% on one Prime Video service) are best cases and should not be extrapolated to a whole bill.

Should I buy Savings Plans first, since they need no engineering?

No. Commitments discount whatever footprint you have, including its waste, for one to three years. Right-size, delete and modernise first, then commit to the trough of the new baseline (pattern P11, Part 6).

What is the single best first step?

Make the bill queryable: enable CUR 2.0 / Data Exports to S3 and query it with Athena or your own warehouse. Every successful programme started from billing data, not from the architecture diagram.

Takeaways

  • Spend is quantity times unit price times time times topology, plus the choice of venue. Naming the term you are attacking is half the work.
  • Twelve levers cover all 28 cases, and the biggest wins (storage tiering, right-sizing, visibility, architecture) are not pricing tricks.
  • The order is See, Stop, Shrink, Swap, Flex, Redesign, Commit, Relocate. Commit late and relocate last.
  • Classify each big line item by shape (flat, periodic, spiky, growing with data); the shape picks the lever.
  • Pick one unit metric and make every change report its effect on it.
  • Read every saving with its scope. "90%" of one service is not "90%" of a bill.

References & further reading

Keep it offline. The complete 28-case report, with the scoreboard, lever matrix and 90-day playbook, is one PDF.

⬇ Download PDF
← series index next: Part 2 →
© cvam — written in plaintext, served warm