How 37signals spent $3.2 million on AWS in one year and why they decided to leave the cloud entirely—and what this means for your SaaS.
The $3.2 Million Question
The Day 37signals Shared Their AWS Bill
On January 13, 2023, David Heinemeier Hansson (DHH), CTO of 37signals, published a blog post that shook the SaaS industry. He revealed something most companies keep secret: exactly how much they spent on Amazon Web Services in 2022.
The number was staggering: $3,201,564.
That is $266,797 every month. For context, that is more than most SaaS companies spend on their entire engineering team. And 37signals was already considered efficient at cloud usage.
The Breakdown
DHH shared the full breakdown of their AWS spend:
| Service | Annual Cost | What It Does |
|---|---|---|
| S3 | $907,838 | File storage for user uploads |
| EC2/EKS | $759,983 | Virtual servers and Kubernetes |
| OpenSearch | $519,959 | Search functionality |
| RDS | $473,196 | Managed databases |
| ElastiCache | $123,852 | Managed Redis |
| CloudFront | $66,742 | Content delivery network |
Their email service HEY alone—one product—consumed $1,066,150 per year. Just HEY's RDS database cost $355,950. Its compute resources (EC2/EKS) cost another $272,359.
The Decision
37signals did not publish these numbers to complain. They published them to explain a decision they had already made: they were leaving AWS entirely.
"We have made the decision to leave the cloud," DHH wrote. Not just reduce usage. Not optimize costs. Leave.
Over six months, they:
- Leased rack space at two Deft data centers (Ashburn, VA and Chicago, IL)
- Purchased Dell servers for four 48U cabinets
- Migrated Basecamp, HEY, and their legacy applications
- Achieved zero customer downtime during the migration
The Result
Six months later, 37signals shared the outcome:
Cost: Their infrastructure now costs "far, far less" than their AWS bill. While they have not published exact post-migration numbers, DHH stated the savings were over $1 million annually.
Performance: "Our apps are faster than ever."
Control: No more surprise bills. No more service limits. No more complexity tax.
Infrastructure: Approximately 90 servers across two data centers, running their own hardware, managed by their own team of four people.
Why This Story Matters for Your SaaS
You are probably not spending $3.2 million on AWS. But the principles that drove 37signals' decision apply at any scale:
The Cloud Tax at $10K MRR
Meet a typical bootstrapped SaaS founder running on AWS:
| Service | Monthly Cost | Annual Cost |
|---|---|---|
| EC2 instances (2) | $140 | $1,680 |
| RDS database | $200 | $2,400 |
| ElastiCache | $50 | $600 |
| S3 storage | $30 | $360 |
| Data transfer | $80 | $960 |
| CloudWatch | $40 | $480 |
| Total | $540 | $6,480 |
This founder has 500 paying customers at $20/month—$10,000 MRR. They are spending 5.4% of revenue on infrastructure alone. Add in the complexity of managing seven different AWS services, and the real cost is higher.
The Alternative
The same application on a single VPS:
| Setup | Monthly Cost | Annual Cost |
|---|---|---|
| Hetzner CPX31 (4 vCPU, 8GB RAM) | €13.60 (~$15) | ~$180 |
| Backups | Included | - |
| Bandwidth | 20TB included | - |
| Total | ~$15 | ~$180 |
Annual savings: $6,300
That is real money for a bootstrapped founder. More importantly, it is one server to manage instead of seven services.
The Dropbox Precedent: Escaping S3
37signals was not the first major company to leave the cloud. Dropbox made an even bigger bet years earlier.
In 2016, Dropbox announced they had built their own storage system called Magic Pocket. They moved 500 petabytes of data (that is 500,000 terabytes) off Amazon S3 and onto their own custom-built infrastructure.
The Economics of Exabyte Scale
Dropbox explained their decision in a 2016 blog post:
"We realized that we were leaving a lot of money on the table. At our scale, it made sense to build our own storage infrastructure."
The math was simple: at their scale, the "cloud premium"—the extra cost of using managed services—was tens of millions of dollars per year.
Building Magic Pocket required:
- Custom server hardware designed for storage density
- A proprietary software system to manage data across those servers
- A team of engineers to build and maintain it all
But the savings were massive. Dropbox estimated they saved over $75 million in the first two years after the migration.
What Small SaaS Can Learn
You are not Dropbox. You are not storing exabytes of data. But the principle applies:
When your infrastructure becomes predictable, renting becomes expensive.
Cloud services charge a premium for flexibility. If your SaaS runs 24/7 with steady traffic (which most do after the early days), you are paying for flexibility you do not use.
Why Companies Leave the Cloud
Both 37signals and Dropbox left the cloud for the same reasons that apply to SaaS companies at any scale:
1. Predictable Workloads
Cloud pricing assumes variable demand—spikes, drops, unpredictability. But most SaaS has steady-state usage:
- Users log in every day
- Background jobs run on schedules
- Storage grows predictably
When demand is predictable, renting by the hour or request is expensive.
2. The Complexity Tax
37signals' AWS bill had line items for 47 different services. Each service has:
- Its own configuration
- Its own monitoring needs
- Its own failure modes
- Its own learning curve
As DHH put it: "The cloud is a complexity trap."
3. Vendor Lock-in
The more AWS services you use (RDS, ElastiCache, Lambda, etc.), the harder it becomes to leave. Your code becomes dependent on proprietary APIs and behaviors.
37signals was able to leave because they used AWS as "dumb servers"—basic EC2 instances they could replace. Companies deep into AWS-specific services face a much harder migration.
4. Surprise Bills
AWS pricing has 947 different line items. Data transfer costs alone have dozens of variables. Even experienced teams get surprised by bills.
A $5/month VPS does not surprise you. You know exactly what you are paying.
The Elixir Advantage: Independence from Day One
Here is where Elixir becomes relevant to this story.
37signals could leave AWS because they run Ruby on Rails—a mature, efficient framework that does not require complex infrastructure. But Elixir takes this efficiency further.
What Makes Elixir Different
Elixir runs on the BEAM virtual machine (Erlang's runtime), which was built for telecommunications systems that must never go down. This gives Elixir applications three characteristics that matter for infrastructure costs:
- Massive concurrency: One server handles what takes 10 in other languages
- Fault isolation: One failure does not crash the whole system
- Built-in distribution: Adding servers is simple when you need them
The Math
A single Elixir server can typically handle:
- 10,000+ concurrent WebSocket connections
- Thousands of requests per second
- Background job processing
- In-memory caching
- All on a $5-15/month VPS
To match this with a traditional stack:
- Python: 5-10 servers + Redis + Celery
- Node.js: 3-5 servers + clustering + Redis
- Java: 2-3 large servers + Kubernetes
The infrastructure savings compound. You are not just saving on server costs. You are saving on:
- Database costs (fewer connections needed)
- Caching services (built into the language)
- Job queues (built into the language)
- Load balancers (not needed until massive scale)
- Monitoring complexity (fewer services to watch)
The Real Cost Comparison
Let us look at what you actually pay at different stages:
Pre-Revenue (Building the MVP)
| Stack | Monthly Cost | What You Manage |
|---|---|---|
| Elixir on VPS | $5 | One server |
| Python on AWS | $150-300 | EC2, RDS, ElastiCache, S3 |
| Node.js on serverless | $50-200 + surprises | Lambda, API Gateway, DynamoDB |
Early Traction ($10K MRR)
| Stack | Monthly Cost | Team Required |
|---|---|---|
| Elixir on VPS | $15-40 | One full-stack developer |
| Python on AWS | $500-800 | Backend + DevOps |
| Node.js microservices | $400-600 | Backend + Frontend + DevOps |
Growth Phase ($100K MRR)
| Stack | Monthly Cost | Infrastructure Team |
|---|---|---|
| Elixir on dedicated | $200-500 | 1 person |
| Python on AWS | $3,000-5,000 | 2-3 people |
| Node.js on Kubernetes | $2,500-4,000 | 3-4 people |
These are not theoretical numbers. They are based on actual company reports and industry benchmarks.
When the Cloud Still Makes Sense
Leaving the cloud is not right for everyone. Both 37signals and Dropbox had specific conditions that made it work:
- Predictable, steady-state workloads
- Technical teams capable of managing hardware
- Scale where the savings justify the effort
- Simple architecture without complex service dependencies
The cloud is still the right choice for:
- Variable workloads: If your traffic spikes 100x unpredictably
- Global presence: If you need data centers on every continent
- Early experimentation: When you do not know if the product will work
- Complex managed services: When you genuinely need ML, big data analytics, etc.
But for most SaaS companies—steady growth, predictable usage, straightforward web applications—the cloud premium is money that could be spent on product or kept as profit.
What This Guidebook Will Show You
Over the next chapters, we will explore how Elixir enables infrastructure independence:
- Who Uses Elixir (And What They Saved) — Discord, Bleacher Report, and companies that cut infrastructure by 90%
- Why Your Programming Language Is a Business Decision — Lessons from Ford vs. Toyota and Southwest Airlines
- The Serverless Trap — Real pricing that explains why per-request billing adds up
- The One-Server SaaS — What you can actually run on minimal hardware
- Reliability as a Feature — How Elixir's fault tolerance translates to sleep and customer trust
- The Team Size Multiplier — Why WhatsApp served 450M users with 35 engineers
By the end, you will understand:
- Whether infrastructure independence makes sense for your stage
- How to evaluate your current infrastructure costs
- What Elixir actually means for your budget and team
- How to make technology decisions with concrete numbers
Key Takeaways
- 37signals spent $3.2M/year on AWS and left to save over $1M annually
- Dropbox saved $75M in two years by building their own storage infrastructure
- The cloud charges a premium for flexibility—if your workload is predictable, you pay for what you do not use
- Elixir enables efficiency from day one—one server does the work of 5-10 in other languages
- Infrastructure independence is possible at any scale—starting with a $5/month VPS
What is Next
In Chapter 2, we will look at companies that chose Elixir and what they saved. Discord runs 25 million concurrent users with under 50 engineers. Bleacher Report cut their servers from 150 to 5 while handling 8x more traffic. These are not technical achievements—they are business decisions with measurable outcomes.