SERVERLESS VS SELF-HOSTED 2026: MEDIA STORAGE COSTS COMPARED (S3 VS R2 VS B2)
Holy $300K Batman! Figma’s daily AWS bill just made every engineering manager choke on their coffee. But before you start panic-googling “how to migrate to bare metal,” let’s have an honest conversation about when self-hosting actually makes sense—and when it’s just expensive masochism.
Real talk: Serverless promised us “pay only for what you use,” but somehow that turned into “pay a premium for convenience you might not need.” Self-hosting isn’t always the hero of this story either, though.
Who Is This Guide For?
You’re an engineer, CTO, or infrastructure lead evaluating cloud costs. Your serverless bill is climbing, and you need to know whether self-hosting actually saves money — or just shifts the cost to operational overhead. You want real numbers, not vendor marketing.
By the End of This, You’ll Know
- The exact break-even point where self-hosting beats serverless for compute and storage
- How S3, Cloudflare R2, and Backblaze B2 compare for media storage costs
- The hidden costs of both approaches that don’t show up on your first invoice
- A decision framework for choosing between serverless, self-hosted, and hybrid architectures
The $109 Million Question: What’s Figma Actually Spending On?
So Figma — the collaborative design platform used by millions — spends $300,000 every single day on cloud services (that’s roughly $109.5 million annually if you’re keeping track). For a company processing 4+ billion design elements daily, that’s… actually pretty reasonable? But it got us thinking: where does all that money go?
Here’s our educated guess at how they’re burning through cash:
| Service Category | Estimated Monthly Cost | Primary Usage |
|---|---|---|
| Compute (EC2/Lambda) | $4.5M | Real-time collaboration |
| Storage (S3/RDS) | $2.8M | Design files and assets |
| Networking (CDN/Load Balancers) | $1.5M | Global content delivery |
| Database Services | $900K | User data and metadata |
Disclaimer: These are educated guesses based on industry patterns—we don’t have Figma’s actual AWS bill (sadly)
When Self-Hosting Actually Makes Sense (Spoiler: It’s Complicated)
Alright, let’s get to the meat of this. When should you consider ditching serverless for your own hardware? Based on infrastructure migration patterns documented in HashiCorp’s 2025 Cloud Complexity Report and real-world case studies:
The Magic Numbers (That Actually Matter)
Look, I’ll cut to the chase. Self-hosting starts making financial sense when:
- Your serverless bill hits $2,000-5,000/month (ouch, but still not the end of the world)
- You have predictable traffic (not the “feast or famine” startup life)
- Your workloads are CPU-hungry (serverless CPU limits will make you cry)
- You’re processing lots of data (and paying for every byte)
Let’s Get Real: A Trading Firm’s Dilemma
Picture this: You’re running a financial services company processing 10 million messages per day. Your AWS bill is starting to hurt, and your CTO is asking uncomfortable questions. Let’s break down what this actually costs:
Where I got these numbers: Serverless costs come straight from AWS pricing. Self-hosted estimates blend AWS EC2 pricing with real operational costs from Chronicle Software — a financial-grade chronicle queue provider — and AWS’s Chronicle Tune analysis.
Serverless Approach (AWS Lambda + SQS)
Assumptions: 1KB messages, 100ms processing time, 512MB memory
Lambda requests: 10M/day × 30 days = 300M requests/month
Request cost: (300M / 1M) × $0.20 = $60
Compute cost: 300M × 0.1s × 0.5GB × $0.0000166667 = $250
SQS messages: (300M / 1M) × $0.40 = $120
Monthly total: $430
Self-Hosted Approach (Chronicle Queue — financial-grade messaging queue)
Based on Chronicle Software case study recommendations
1x c5n.2xlarge (8 vCPU, low latency): $281/month
EBS storage (1TB): $100/month
CloudWatch monitoring: $50/month
Infrastructure subtotal: $431/month
Operational overhead (conservative estimate)
DevOps allocation (20% FTE): $2,000/month
Total monthly cost: $2,431/month
Important Caveats: Chronicle Queue’s advantage is latency (sub-microsecond) rather than cost for this volume. Cost advantage appears at much higher message volumes (100M+ messages/day). Real Chronicle deployments often justify costs through performance gains and reduced complexity. These numbers assume steady traffic; serverless scales better with spiky workloads.
At 10M messages/day, serverless is significantly cheaper ($430 vs $2,431). Chronicle Queue really shines when you need sub-millisecond latency or are dealing with truly massive volumes.
But Wait, There’s More: When Self-Hosting Actually Wins
Now we’re talking serious volume. Imagine you’re processing 1 billion messages per day (yes, that’s a real workload for some trading firms). Here’s where the math gets interesting:
High-Volume Trading Firm (1 billion messages/day)
Serverless costs (1B messages/month):
Lambda requests: $600 (3B requests)
Compute costs: $25,000 (processing time)
SQS costs: $1,200 (messaging)
Monthly total: $26,800
Self-hosted Chronicle Queue cluster:
3x c5n.4xlarge instances: $1,683/month
Storage & networking: $500/month
Monitoring & ops: $3,000/month
Monthly total: $5,183/month
Savings: $21,617/month (81% reduction)
This aligns with a Chronicle blog on low-latency systems, where major banks cite significant cost savings at scale alongside 100x latency improvements.
The Stuff They Don’t Tell You (Hidden Costs That’ll Bite You)
Okay, time for some truth-telling. Both approaches have sneaky costs that’ll surprise you.
Serverless: The “Gotchas” That’ll Get You
Cold starts make your users wait 200-1000ms while a function initializes. This is especially painful for synchronous APIs where every millisecond counts. Vendor lock-in means 6-18 month migration projects when you outgrow a platform. Function timeouts force you to break complex workflows into dozens of micro-orchestrated pieces. Concurrent limits cause 429 errors during traffic spikes — Black Friday is not your friend.
Self-Hosting: The “Oh Crap” Moments
DevOps engineers run $120-180K annually — someone needs to babysit your servers. On-call rotations cost $50-100K in staffing and burnout. Security updates consume $30-50K in engineering time — Patch Tuesday is every Tuesday now. Disaster recovery runs $25-75K for infrastructure you hope you never need.
Media Storage Serverless Cost Comparison: The Hidden Budget Killer
Storage is where serverless costs quietly explode. Egress fees are the primary culprit — teams budget $500/month for compute only to discover a $4,000 bill driven by data transfer costs. Here’s the real breakdown across the major providers:
Object Storage Pricing at a Glance
| Provider | Storage (per TB/month) | GET Requests (per million) | Egress (per TB) | CDN Integration |
|---|---|---|---|---|
| AWS S3 Standard | $23 | $0.40 | $90 | CloudFront ($0.085/GB) |
| Cloudflare R2 | $15 | $0.36 | $0 | Built-in (free egress) |
| Backblaze B2 | $6 | $0.004 | $0.01/GB (free via Cloudflare) | Cloudflare partnership |
| Google Cloud Storage | $20 | $0.40 | $120 | Cloud CDN ($0.08/GB) |
| Azure Blob Storage | $21 | $0.40 | $87 | Azure CDN ($0.077/GB) |
Real-World Media Storage Scenarios
Scenario 1: Image-heavy SaaS (50 TB storage, 500K requests/day, 10 TB egress/month)
For a platform serving user-uploaded images and videos, the monthly costs break down like this:
- AWS S3 + CloudFront: $1,150 storage + $200 requests + $900 egress + $850 CDN = $3,100/month
- Cloudflare R2: $750 storage + $180 requests + $0 egress = $930/month (70% savings)
- Backblaze B2 + Cloudflare: $300 storage + $2 requests + $0 egress (via partnership) = $302/month (90% savings)
Scenario 2: Video platform (200 TB storage, 2M requests/day, 50 TB egress/month)
At this scale, egress fees become the dominant cost driver:
- AWS S3 + CloudFront: $4,600 storage + $800 requests + $4,500 egress + $4,250 CDN = $14,150/month
- Cloudflare R2: $3,000 storage + $720 requests + $0 egress = $3,720/month (74% savings)
- Backblaze B2: $1,200 storage + $8 requests + $500 egress = $1,708/month (88% savings)
The Self-Hosting Storage Alternative
If you’re already running your own infrastructure, adding storage nodes changes the equation:
Self-hosted MinIO cluster (3 nodes):
3x storage-optimized instances (8 TB each): $450/month
EBS volumes (24 TB total): $2,400/month
Network egress: $0 (within VPC) or market rates (public)
Operational overhead: $1,500/month
Total: $4,350/month for 24 TB usable
For the 50 TB scenario above, self-hosted storage costs roughly $8,000-9,000/month including operations—more expensive than R2 or B2, but you control the data and avoid vendor lock-in. The break-even point for self-hosted storage typically lands around 100+ TB where the per-TB cost of managed services becomes prohibitive.
Media Storage Decision Framework
Choose Cloudflare R2 — Cloudflare’s object storage with free egress — when you need S3 compatibility without data transfer costs and your team already knows the AWS SDK. Choose Backblaze B2 — the budget object storage provider — when raw cost is the primary driver and you can leverage the Cloudflare bandwidth alliance for free egress. Choose self-hosted MinIO — open-source S3-compatible storage — when you have compliance requirements, need multi-TB scale, or want to avoid vendor dependency entirely.
Performance: When Speed Actually Matters
The latency gap between Aeron messaging and cloud functions is striking. Here’s how they compare:
Latency Comparison
| Metric | Aeron (Self-Hosted) — ultra-low-latency messaging library | Cloud Functions | AWS Lambda |
|---|---|---|---|
| P50 Latency | 0.2ms | 45ms | 65ms |
| P99 Latency | 0.8ms | 180ms | 350ms |
| Cold Start | N/A | 200-500ms | 100-1000ms |
| Throughput | 1M+ msgs/sec | 10K msgs/sec | 50K msgs/sec |
Trading firms are getting 225x better latency with self-hosted Aeron. That’s not a typo — it’s the difference between making money and watching opportunities slip by.
So… Which One Should You Pick? (The Decision Framework Nobody Asked For)
Go Serverless If You:
✅ Have sporadic traffic (like, your app gets busy twice a week)
✅ Just want to ship features (not manage infrastructure)
✅ Love event-driven stuff (webhooks are your jam)
✅ Run a small team (less than 5 engineers who wear many hats)
✅ Want someone else to handle security (sleep is underrated)
Consider Self-Hosting If You:
✅ Have predictable, heavy traffic (thousands of requests every hour)
✅ Need things to be fast (like, really fast)
✅ Build complex, stateful apps (real-time everything)
✅ Are spending serious money (>$5K/month and climbing)
✅ Have data sovereignty concerns (compliance is fun, right?)
Real Stories: The Good, The Bad, and The “We Should’ve Known Better”
Success Story: “We Actually Saved Money!”
The Setup: Mid-size e-commerce (50M requests/month)
The Move: Lambda → Kubernetes on AWS
The Results:
- 🎉 Cost reduction: 65% ($12K → $4K/month)
- � Performance boost: 40% faster response times
- 😅 Reality check: 6-month migration, had to hire 2 more DevOps folks
Cautionary Tale: “Premature Optimization Is the Root of All Evil”
The Setup: Early-stage SaaS (500K requests/month)
The Move: Vercel → Self-hosted (because optimization!)
The Results:
- � Cost explosion: 200% increase ($800 → $2,400/month)
- � Development slowdown: 30% velocity drop
- 🔄 Plot twist: Migrated back to serverless after 8 months
Moral of the story: Don’t optimize what isn’t broken yet.
The Smart Money: Why Not Both? (Hybrid Approach FTW)
Here’s the thing: Smart companies don’t go all-in on one approach. They cherry-pick what works for each piece:
Hybrid Architecture Example
# High-volume, latency-critical: Self-hosted
Core API:
- Platform: Kubernetes + Chronicle Queue
- Cost: $3,500/month
- Latency: <10ms
# Event-driven, irregular: Serverless
Background Jobs:
- Platform: AWS Lambda
- Cost: $200/month
- Frequency: 10K events/month
# Static content: CDN
Frontend Assets:
- Platform: Cloudflare + S3
- Cost: $150/month
- Global delivery
Sweet savings: $3,850/month vs $8,400 pure serverless (that’s 54% off your cloud bill)
What’s Next? Edge Computing Is Shaking Things Up
Edge vs Traditional Self-Hosting
| Aspect | Traditional Self-Hosting | Edge Computing | Serverless |
|---|---|---|---|
| Latency | 20-100ms | 5-30ms | 50-200ms |
| Setup Complexity | High | Medium | Low |
| Geographic Distribution | Manual | Automatic | Automatic |
| Cost Predictability | High | Medium | Low |
Companies like Cloudflare Workers and Fastly Edge Compute offer compelling middle ground solutions.
What You Can Actually Use Today
- AWS Lambda + S3 — standard serverless stack. Use for event-driven workloads and sporadic traffic. Directly integrate via AWS Lambda.
- Cloudflare R2 — S3-compatible storage with zero egress fees. Best for media-heavy apps with high download volumes. Cloudflare R2 docs.
- Backblaze B2 — cheapest object storage at $6/TB/month. Pair with Cloudflare for free egress. Backblaze B2.
- MinIO — self-hosted S3-compatible storage for compliance-heavy workloads. min.io.
- Chronicle Queue — sub-microsecond persistent queueing for high-frequency trading and low-latency fintech. chronicle.software.
- Aeron — ultra-low-latency messaging library for latency-critical systems. GitHub: real-logic/aeron.
- AWS Lambda + SQS — serverless event processing. See the serverless compute comparison for provider benchmarks.
Your 2025 Playbook (Based on Where You Actually Are)
If You’re a Startup (<$1M ARR)
- Start serverless: Seriously, just focus on finding product-market fit
- Set billing alerts: $500/month is your “time to pay attention” threshold
- Design for the future: Make it easy to move pieces later
If You’re Growing ($1-10M ARR)
- Go hybrid: Self-host your core, serverless for everything else
- Invest in observability: You need to see what’s actually happening
- Hire smart: Get a DevOps person when your cloud bill hits $5K/month
If You’re Enterprise (>$10M ARR)
- Optimize ruthlessly: Dedicate engineers to cost efficiency
- Don’t put all eggs in one basket: Multi-cloud is your friend
- Performance first: If you need sub-100ms latency, self-hosting pays off
The Bottom Line: What Figma’s $300K Teaches Us
Here’s the thing about Figma’s $300K daily cloud bill—it might actually be the right choice for them. At their scale and development velocity, that cost could be totally justified. The real lessons here:
- Context is everything: What works for Figma might bankrupt your startup
- Hidden costs are real: Factor in the full picture, not just the sticker price
- Performance can justify cost: Sometimes being fast matters more than being cheap
- Evolution is normal: Most successful companies end up with hybrid architectures
My advice? Start serverless, then optimize strategically. When your cloud bill hits $2-5K monthly and you’ve got predictable traffic, start moving your core services to self-hosted while keeping serverless for the peripheral stuff.
The future isn’t about picking sides—it’s about mixing and matching to get the best cost, performance, and developer happiness for your specific situation.