Cloud Exit: 37Signals and the "Unclouding" Trend
37Signals (Basecamp, Hey) left AWS in 2023-2024, claiming $7M in annual savings. Others followed. Is “cloud exit” a trend, or are these outliers? Let’s analyze.
The 37Signals Case
The Numbers
- AWS spend: ~$3.2M/year
- New hardware: ~$600K one-time
- Ongoing cost: ~$800K/year
- Annual savings: ~$2.4M/year (claimed $7M over 5 years)
What They Did
- Bought servers and colocation space
- Built their own Kubernetes-like platform (MRSK/Kamal)
- Migrated incrementally
- Kept some cloud services (S3, CDN)
Why It Worked for Them
- Predictable workloads
- Large, stable company
- Engineering talent available
- Not hyper-scale but significant traffic
- David Heinemeier Hansson’s philosophy
Who’s Following
Confirmed Exits
- Dropbox: Saved $75M over two years (2017)
- 37Signals: $7M over five years (2024)
- Some gaming companies: High bandwidth makes cloud expensive
Partial Exits
Companies moving specific workloads:
- Data processing (egress costs)
- Development environments
- Batch processing
The Economics
When Cloud is Expensive
High bandwidth + stable load + long-term = Cloud premium
| Factor | Cloud Cost | On-Prem Cost |
|---|---|---|
| Compute (stable) | $$$ | $ |
| Bandwidth/Egress | $$$$ | $ |
| Storage (large) | $$$ | $ |
| Variable workload | $ | $$$ |
| Burst capacity | $ | $$$ |
When Cloud Makes Sense
Variable load + burst needs + operational simplicity = Cloud wins
- Startups (unknown scale)
- Variable workloads
- Global distribution needed
- Lack of ops expertise
- Compliance requirements (some industries)
The Hidden Costs of Exit
Hardware Management
Servers: $500K
Networking: $100K
Storage: $150K
+ Colocation: $15K/month
+ Spares: 20% overhead
+ Refresh cycle: 4 years
= Much more than purchase price
Operational Burden
| Task | Cloud | On-Prem |
|---|---|---|
| Hardware failure | Provider problem | Your problem |
| Capacity planning | Elastic | You plan |
| Security patching | Managed options | All you |
| Disaster recovery | Built-in options | You build |
| Compliance certs | Provider provides | You prove |
Talent Requirements
Cloud: Developers who know AWS On-Prem: System admins, network engineers, security specialists
Can you hire and retain this talent?
Hybrid Approaches
What Most Companies Actually Do
├── Core workloads: On-prem/colo
├── Burst capacity: Cloud
├── CDN/Edge: Cloud providers
├── Managed databases: Cloud
└── Blob storage: Cloud (S3 compatible)
The “Best of Both” Stack
# On-prem
- Application servers
- Primary databases
- Processing pipelines
# Cloud
- CDN (Cloudflare)
- Object storage (S3/compatible)
- Disaster recovery
- Traffic spikes
- Global edge locations
Tools for the Exit
Kamal (from 37Signals)
# config/deploy.yml
service: myapp
image: myapp
servers:
web:
hosts:
- 192.168.0.1
- 192.168.0.2
workers:
hosts:
- 192.168.0.3
traefik:
options:
publish:
- "443:443"
volume:
- "/letsencrypt:/letsencrypt"
Deploy Docker containers without Kubernetes complexity.
Talos Linux
Kubernetes-focused OS:
- Minimal attack surface
- API-driven configuration
- Easy bare metal deployment
Colocation Providers
- Equinix
- Digital Realty
- Regional options (often cheaper)
Should You Exit?
Exit Makes Sense If
- Stable, predictable workloads
- High bandwidth/storage costs
- Multi-year planning horizon
- Ops talent available or buildable
- Cloud bill > $50K/month with growth
- Leadership buy-in for the journey
Stay in Cloud If
- Startup/uncertain scale
- Variable/bursty workloads
- Limited ops expertise
- Compliance requires cloud certifications
- Global distribution needs
- Innovation speed priority
The Decision Framework
def should_exit_cloud(company):
factors = {
'workload_stability': stability_score(), # 0-1
'cloud_spend': monthly_spend() > 50000,
'ops_capability': ops_team_strength(), # 0-1
'growth_predictability': predictability_score(), # 0-1
'egress_heavy': egress_percentage() > 0.3,
}
score = sum(factors.values()) / len(factors)
if score > 0.7:
return "Consider exit"
elif score > 0.5:
return "Hybrid approach"
else:
return "Stay in cloud"
The Real Trend
Cloud isn’t dying. But the “cloud-only” era is ending.
2015-2020: “Everything to the cloud” 2020-2025: “Actually, let’s calculate” 2025+: Rational hybrid decisions
Final Thoughts
37Signals’ exit worked because of their specific situation. It’s not a template—it’s a data point.
Run the numbers for your workload. Consider operational costs, not just infrastructure. Make decisions based on your company, not trends.
The cloud is a tool, not a religion. Use it where it makes sense.
The best infrastructure is the one you can actually operate.