1
1 Comment

It costs me $4.15/day to run a free tier — here's the full breakdown

It costs me $4.15/day to run a free tier — here's the full breakdown


I'm a solo founder running a container hosting platform. Deploy for free, pay when you need always-on uptime. Classic freemium.


Everyone asks: "How do you afford a free tier?"


Here's the honest answer with real numbers.


What the free tier actually costs me


My production AWS account runs about $4.15/day. That covers everything — the platform itself, all user containers, load balancers, DNS, monitoring.


The breakdown:


- ECS Fargate (platform + user containers): ~$2.10/day

- Application Load Balancer: ~$0.55/day

- DynamoDB (24 tables): ~$0.30/day

- ECR (container images): ~$0.20/day

- Route53 + CloudWatch + misc: ~$1.00/day


That's about $125/month to run the entire production environment.


The trick: auto-sleep


Free containers auto-sleep after 15 minutes of idle time. Sleeping containers cost me almost nothing — no Fargate compute charges, just a few cents of metadata storage.


When traffic arrives, the container wakes up in about 60 seconds. The user sees a loading page, the container spins up behind it, and they get their app.


This means I'm only paying Fargate costs for containers that are actively serving traffic. Most free-tier containers sleep 90%+ of the time.


The dev account trick


I run two AWS accounts. Production handles real users. Dev handles my own development and testing.


Dev account costs ~$2.98/day. But here's the thing — I built shutdown scripts that scale everything to zero when I'm not working. ECS services go to 0 tasks, EC2 instances stop. I run them at end of day and start everything back up in the morning. Takes about 2-3 minutes to restart.


That saves me roughly $16/day on dev costs when I'm not actively coding.


The DynamoDB lesson


This one cost me real money. I originally set up all 33 DynamoDB tables with provisioned capacity and auto-scaling. Sounds smart, right?


Auto-scaling kept thrashing — scaling up for tiny traffic spikes, then slowly scaling back down, then scaling up again. The result: $743/month in DynamoDB costs alone. For a platform with near-zero traffic.


I switched every table to on-demand billing in a single afternoon. New cost: $214/month. Saved $529/month by changing one setting on each table.


On-demand charges per-request instead of per-hour. When you have low, unpredictable traffic (which is every early-stage startup), on-demand wins by a landslide.


Can this sustain?


At $125/month production cost, I need roughly 3 paying customers on the $45/month tier to break even on infrastructure. Or 10 customers on the $12/month tier.


That's a very reachable number. The free tier exists to get people deploying and discovering they need always-on uptime. The conversion event is when someone's app gets real traffic and the 60-second wake time becomes unacceptable.


What I'd tell other founders considering a free tier


- Know your per-user marginal cost. Mine is near-zero because sleeping containers don't cost anything. If yours isn't, a free tier might kill you.

- Auto-sleep is not a compromise — it's the business model. It lets me offer genuine free hosting without losing money on every user.

- Switch to on-demand pricing for everything until you have predictable load. Provisioned capacity is for scale, not for early stage.

- Run shutdown scripts on dev environments. It sounds trivial but $16/day adds up to $480/month.


Happy to share the shutdown scripts or the DynamoDB migration process if anyone's in a similar situation.

posted toAvatar for product SnapDeploy
SnapDeploy
  1. 1
    the dynamodb provisioned-vs-on-demand lesson is one a lot of solo founders learn the hard way. same for shutdown scripts on dev accounts. these are exactly the kind of "small individually, painful collectively" things that show up on a bill. auto-sleep for containers is a really nice trick, honestly never thought about that one. the trick is knowing what's worth fixing vs what's just noise.