SaaS Cost Optimization · AWS Guide

AWS Cost Optimization for SaaS: Know What Each Customer Costs You

Most SaaS teams know their AWS bill. Almost none know their AWS bill per customer. Without that number, you’re pricing on instinct, tiering by guess, and discovering margin problems at Series C instead of Series A.

This guide covers the mechanics specific to SaaS on AWS: silo vs pool architecture trade-offs, building cost-per-customer visibility across multi-tenant infrastructure, aligning cloud spend with usage-based billing, and the unit economics benchmarks your investors will eventually ask about.

Pool vs silo cost trade-offs
Per-tenant attribution without full re-architecture
Cloud cost benchmarks by ARR stage
Aligning spend with usage-based billing

Why SaaS AWS Cost Optimization Is Different

A single-product startup has one workload. Costs are directly attributable to the product. SaaS has multiple tenants sharing the same infrastructure - which means standard AWS tagging, the approach that works fine for a single-product startup, breaks down immediately.

The attribution problem

A shared RDS instance serves 200 tenants. One DynamoDB table holds all tenant data. One EKS cluster runs all tenant workloads. You can't tag your way to per-tenant costs without application-layer instrumentation.

Pricing tier misalignment

Your lowest-revenue tier is almost always your most expensive to serve. Without per-tier cost data, you won't catch this until your gross margin starts compressing - often 12–18 months after the problem begins.

Invisible floor costs

Even a tenant who isn't actively using your product generates baseline costs: idle ECS tasks kept warm, S3 data at rest, CloudWatch log retention. In pooled architectures, these are invisible without active metering.

Multi-Tenant Architecture Cost Patterns

Architecture choices at the tenancy layer are the single biggest determinant of cost structure and attribution complexity. Here are the three models and their cost trade-offs.

Silo

One account (or VPC) per tenant

High fixed, low shared complexity

Advantages

  • Cost attribution is trivial - linked accounts give you per-tenant breakdowns in Cost Explorer
  • Compliance boundaries are clean, useful for enterprise and regulated tiers
  • No noisy-neighbour risk - one tenant's burst doesn't affect others

Cost risks

  • · Provisioning overhead per tenant: EKS clusters, RDS instances, NAT Gateways all multiply
  • · Reserved Instance and Savings Plans utilisation drops - commitments are per-account
  • · Minimum floor per tenant is high - unprofitable below a certain ACV

Best for: High-ACV enterprise tiers, regulated workloads (healthcare, fintech)

Pool

All tenants share infrastructure

Low fixed, hard to attribute

Advantages

  • Best unit economics at scale - shared EKS nodes, shared RDS, one NAT Gateway
  • Reserved Instances and Savings Plans are fully utilised across tenants
  • Marginal cost per new tenant is low once base infrastructure is paid for

Cost risks

  • · Cost attribution requires instrumentation - you must tag or meter at the application layer
  • · Noisy-neighbour risk requires throttling and fair-use policies
  • · Pricing model misalignment risk - what you charge vs what each tenant actually costs can diverge silently

Best for: SMB and self-serve tiers, early-stage (pre-$5M ARR), usage-based pricing models

Bridge

Silo at the tier boundary, pool within each tier

Balanced - attribution by tier, metered within

Advantages

  • Enterprise tenants get isolated accounts; SMB tenants share pooled infrastructure
  • Savings Plans and RIs can be optimised per-tier account
  • Cost-per-customer calculation is scoped to tier, simplifying unit economics

Cost risks

  • · More operational complexity - multiple account structures and tagging strategies to maintain
  • · Attribution within the shared pool still requires application instrumentation

Best for: Series B–C with mixed tiers: a few large enterprise accounts + a long tail of SMB

Building Cost-Per-Customer Visibility

The goal isn’t perfect accounting. It’s a good-enough approximation that lets you make pricing and architecture decisions with data instead of intuition. Start with the approach that fits your current tenancy model, then evolve it.

AWS Application Cost Profiler, which previously automated some of this, was discontinued in September 2024. The current approach is either linked accounts (silo model) or manual instrumentation with the Cost and Usage Report (CUR).

Silo model: use AWS linked accounts

Low complexity

Each tenant or tenant group maps to an AWS account under AWS Organizations. Cost Explorer's linked account dimension gives you a per-tenant breakdown with zero instrumentation. Savings Plans and RIs still apply at the payer level. This is the only approach that gives you exact attribution without application-layer work.

Pool model: tag at the resource level

Medium complexity

Effective for dedicated-per-tenant resources (e.g., one RDS instance per tenant in a partially-isolated pool). Tag resources with tenant-id and activate the tag in the Billing console. AWS Cost Explorer will surface per-tenant costs for tagged resources. Shared resources (EKS nodes, NAT Gateways) still need a second-pass allocation.

Pool model: application-layer metering

High complexity

For fully shared infrastructure, instrument your services to capture per-tenant activity: API request counts, Lambda invocations, DynamoDB consumed capacity units, S3 operations. Store this in a data store (DynamoDB, S3 + Athena) and correlate with the Cost and Usage Report (CUR) to calculate each tenant's proportional share.

Proxy metric allocation

Medium complexity

When full instrumentation isn't feasible, use a proxy: API call frequency per tenant, transaction volume, or seat count to apportion shared costs. This won't be exact, but it's accurate enough for pricing decisions and tier profitability analysis. AWS X-Ray traces can surface per-tenant latency and call volumes cheaply.

Practical starting point for pooled architectures

Enable Cost and Usage Reports (CUR 2.0) at hourly granularity. Add a tenant-id tag to any resource that’s dedicated to a single tenant (even in a mostly-pooled setup). For shared resources, pick one proxy metric - API call frequency per tenant via Lambda authorizer logs, or DynamoDB consumed capacity units per tenant partition key prefix - and use it to apportion shared costs. Publish both to Athena. A single SQL query gives you monthly CPC by tenant.

AWS tagging strategy for cost allocation →

SaaS Cloud Unit Economics: Metrics and Benchmarks

These are the metrics that matter and the benchmarks from public SaaS data and 10-K filings that give you a calibration point.

Cloud cost as % of revenue - stage benchmarks

Sub-$10M ARR

15–25%

Common and acceptable, but you need a path to efficiency before Series B diligence.

$10M–$50M ARR

10–20%

Optimization should be underway. RI/SP coverage, rightsizing, and per-tenant attribution expected.

$50M+ ARR

Under 10%

Expected by investors and acquirers. Infrastructure-heavy platforms (video, ML) may justify higher with explanation.

Source: Public SaaS 10-K filings and attrb.io benchmarking data, 2026. Infrastructure-heavy platforms (video streaming, ML inference) typically run 5–10pp higher.

Cost per customer (CPC)

Total AWS COGS ÷ active customers

The headline metric. If CPC is rising faster than ARPU, your margin is compressing. Track it monthly.

Cloud cost as % of revenue

Monthly AWS spend ÷ MRR

The benchmark number VCs and acquirers use. Target varies by infra intensity (see benchmarks below).

Cost per tier

AWS COGS attributable to each pricing tier ÷ customers in that tier

Identifies which tiers are subsidising others. The most common finding: the lowest-priced tier is the most expensive to serve.

Marginal cost per new customer

Incremental AWS cost when adding one customer

Tells you whether your architecture scales sub-linearly (good) or linearly/super-linearly (needs fixing).

Cost per feature (advanced)

AWS spend attributable to a feature ÷ customers using it

Finds features that drive disproportionate cost relative to adoption or revenue. A 2% adoption feature consuming 20% of costs is a candidate for re-architecture or tier restriction.

The gross margin connection: AWS COGS sits directly in gross margin. For SaaS, industry median gross margin runs 70–80%. If cloud costs are 20% of revenue, that alone drags gross margin 10–15pp below median. Investors know this number. If you don’t know your CPC, you’ll be explaining your gross margin from a position of uncertainty.

Aligning AWS Spend With Usage-Based Billing

The most common SaaS cost problem isn’t total AWS spend - it’s misalignment between what you charge and what you actually spend to serve each customer. Here are the common billing model patterns and where the cost-revenue alignment breaks.

Per-seat billing with pooled compute

High misalignment risk

Seat count doesn't predict compute load. A 10-seat customer running batch jobs at 2AM can cost more than a 50-seat customer using only the UI. Attribution needs to be activity-based, not seat-based.

Fix: Add per-tenant Lambda invocation and ECS CPU metrics. Use seat count as a floor check, not the primary allocation key.

Usage-based billing (API calls, events, records)

Low misalignment risk

When billing dimensions align with infrastructure consumption drivers (e.g., billing per API call and the API call drives Lambda + DynamoDB), cost and revenue move together. This is the ideal SaaS model for infrastructure cost alignment.

Fix: Verify your billing metric actually drives infrastructure cost. If billing is per API call but the expensive operation is storage (not calls), the alignment breaks.

Flat-rate tiers with unlimited usage

Very high misalignment risk

A fixed $99/month tier with unlimited usage is a cost liability if tenant behavior is heterogeneous. One heavy user in a flat-rate tier can consume 10× the average. Without per-tenant cost visibility, you won't see this until margins deteriorate.

Fix: Instrument cost per customer within the flat-rate tier. Add soft limits or throttling policies. Use cost data to redesign tier boundaries around actual usage patterns.

Freemium / free tier

Highest risk tier

Free tier tenants generate real AWS costs with zero revenue. The math only works if conversion rates and free-to-paid upgrade economics justify the cost. Without per-tenant attribution, free tier cost is invisible until it compounds.

Fix: Set hard resource limits on free tier tenants at the infrastructure level (Lambda concurrency limits, DynamoDB on-demand caps, S3 lifecycle policies). Measure free tier CPC monthly.

SaaS-Specific AWS Waste Patterns

Beyond the standard startup waste (oversized EC2, missing Savings Plans), SaaS architectures accumulate specific waste that only shows up when you look at the per-tenant or per-tier level.

Idle warm pools per tenant

Keeping one ECS task per tenant warm for latency means N idle containers. At 200 tenants, that's 200× the baseline compute cost.

Per-tenant RDS instances in silo models

Silo deployments with db.t3.medium per tenant rarely utilise more than 5% CPU. But you can't consolidate without re-architecting. This is the most expensive silo model trade-off.

Uncontrolled free-tier data accumulation

Free tenants generate S3 objects, CloudWatch logs, and DynamoDB records indefinitely. Without lifecycle policies scoped to the free tier, storage costs compound silently.

NAT Gateway multiplied by silo VPCs

One NAT Gateway per tenant VPC at $0.065/hour is $1.56/day per tenant. At 100 tenants, that's $5,700/month in NAT baseline fees before any data processing charges.

Missing cross-account Savings Plans

In silo (multi-account) architectures, Savings Plans purchased in the management account apply across all member accounts. Teams that buy per-account lose the consolidated discount benefit.

Over-instrumented observability per tenant

Detailed CloudWatch custom metrics, per-tenant dashboards, and X-Ray traces per tenant add up. CloudWatch charges $0.30/metric/month. At 50 metrics × 500 tenants, that's $7,500/month before any logging costs.

Fixed-price · Risk-free · 3× ROI guarantee

SaaS cost audit: unit economics and per-tenant visibility

We audit SaaS AWS environments specifically: multi-tenant attribution, cost-per-customer baselines, and tier profitability analysis. Detailed report and savings roadmap delivered in 1 week. Fixed €5K.

Book Your SaaS Cost Audit →

No call needed · Accept agreements · Run one script · Done

Prefer to talk first? Free 30-min call available →