MVP Factory
ai startup development

Startup burn rate modeling: when AWS costs go non-linear

KW
Krystian Wiewiór · · 5 min read

Meta description: Flat runway models miss non-linear AWS cost spikes. Learn how spot reclamation, reserved capacity cliffs, and autoscaling steps can double your bill overnight.


TL;DR

Most startup CFO models assume infrastructure spend scales linearly with revenue. It doesn’t. Spot instance reclamation events, reserved capacity commitments, and autoscaling threshold crossings create discrete cost jumps that a flat monthly_burn / cash_in_bank formula will never capture. A B2B SaaS at $50k MRR can watch AWS spend double overnight from a single traffic spike — not because the architecture is broken, but because the cost model was never designed for non-linearity.


The flat model fallacy

Every seed-stage finance deck has the same slide: runway = cash / average_monthly_burn. It’s clean, it’s fundable, and it’s dangerously wrong once your infrastructure spend goes non-linear.

The failure mode is consistent across production systems built to serve variable traffic loads. Teams optimize for the average case, buy reserved capacity for the average case, and then get destroyed by the tail — the traffic spike, the end-of-quarter customer surge, the viral moment nobody planned for.

The real formula looks like this:

effective_monthly_burn(t) =
  fixed_costs
  + reserved_capacity_cost (committed, regardless of usage)
  + on_demand_fill_rate(t) * on_demand_unit_price
  + spot_reclamation_overhead(t)

The last two terms are non-linear functions of traffic. That’s not a rounding difference — it’s a different class of problem.


The three cost levers that break linear models

1. Spot instance mix and reclamation risk

Spot instances on AWS can run at 60–90% discount versus on-demand pricing. Teams lean into this aggressively. The problem: at high-utilization periods across a region, AWS reclaims spot capacity with a two-minute warning. Your autoscaler then frantically provisions on-demand replacements at full price, often over-provisioning by 20–40% to account for cold-start time.

A 10% spot reclamation event during a traffic spike doesn’t cost you 10% more. It costs you the on-demand rate for the replacement fleet, plus the overprovision buffer, plus the latency penalty during the transition window.

2. Reserved capacity commitment cliffs

Reserved instances are paid for whether you use them or not. Most teams buy 1-year reservations sized for their P75 traffic load. This means:

Traffic scenarioReserved coverageOn-demand spillover
Normal day (P50)Overprovisioned (~30% idle)$0
Busy day (P75)~100% (target)$0
Traffic spike (P95+)~60% covered40% on-demand at 3–4x unit cost
Spike + spot reclaim~60% covered60–80% on-demand

The P95 spike doesn’t cost you 33% more than the P75 day. It can cost 2–3x more, because on-demand pricing isn’t linear with the reserved baseline.

3. Autoscaling threshold multipliers

Autoscaling policies typically trigger at CPU or request-queue thresholds — say, 70% CPU utilization. But instance provisioning isn’t granular. You add a full instance. For a compute-heavy workload, crossing the 70% threshold might mean spinning up 4 instances to handle 15% more traffic. The cost curve is a staircase, not a ramp.


Worked example: B2B SaaS at $50k MRR

Take a B2B SaaS running on AWS at $50k MRR. Infrastructure sitting at $8,000/month on a normal month — a healthy 16% COGS ratio.

Fleet mix: 60% reserved instances, 30% spot, 10% on-demand baseline.

One large enterprise customer runs an automated batch job generating 3x normal API traffic for 18 hours. The actual bill:

Normal baseline:          $8,000/mo  ($267/day × ~30 days = $8,000/mo)
Spike day observed cost:  $1,100 (single day, vs. $267 baseline)
                          — 4x the daily rate on one day alone
Annualized spike rate:    ~$400k/yr if this happened daily
Actual projected spike:   2–3x monthly bill if unguarded

The spike triggers spot reclamation (the region is under pressure), which forces on-demand provisioning, which crosses two autoscaling thresholds in sequence. One customer, one day, doubles the AWS invoice.

The flat runway model showed 18 months of runway. The corrected model — accounting for P95 cost scenarios weighted by probability of enterprise customer growth — shows 13 months.

Five months. That’s not a rounding error. That’s a Series A conversation.


The runway formula that survives a spike

stress_tested_runway =
  cash / weighted_monthly_burn

where:
  weighted_monthly_burn =
    (P50_infra * 0.60) +
    (P75_infra * 0.30) +
    (P95_infra * 0.10) +
    fixed_opex

Weight your infrastructure cost scenarios by probability. Build the P95 scenario explicitly — don’t guess it. Run a load test, observe your autoscaling behavior, and price the spike before your enterprise pipeline forces it on you in production.


What to actually do

  1. Model P95 infrastructure cost explicitly. Run a load test at 3–5x normal traffic. Capture the actual AWS cost delta. Add a weighted version of this scenario to your monthly burn model before your next board deck.

  2. Audit your spot/reserved/on-demand mix quarterly. As your traffic profile grows, the optimal mix shifts. A ratio that was efficient at $5k MRR may be actively wasteful at $50k MRR. AWS Cost Explorer’s reservation coverage reports make this a one-hour audit.

  3. Set autoscaling thresholds with cost awareness, not just latency SLAs. A threshold calibrated to protect P99 latency may be triggering expensive scale-out events for routine traffic variance. Instrument the cost-per-scale-event and tune accordingly.

A five-month runway gap and a 2–3x cost variance on P95 days aren’t edge cases. They’re the expected outcome for a growing B2B SaaS that never stress-tested its cost curve.


Tags: startup saas devops cloud backend


Share: Twitter LinkedIn