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.