How 37signals Saved $10M by Leaving AWS for Owned Hardware

37signals moved HEY and Basecamp off AWS to owned servers, projecting over $10M in savings over five years. The lesson: cloud economics invert at scale.

Infrastructure · intermediate · 12 min read · 2065 words · By Sandip Das · Published

Public postmortem: based on what the organisation published. Sources are listed below.

What this covers

  1. Background
  2. What Happened
  3. Root Cause
  4. Detection and Response
  5. Impact
  6. The Fix
  7. Lessons for Your Team
  8. Apply It Yourself

Key numbers

MetricBeforeAfter
Annual AWS spend (HEY and Basecamp combined)~$3.2M per yearProjected well below $2M/yr equivalent on owned hardware
Projected 5-year savings$0 (no exit)Over $10M over five years

Key components

  • EC2 / RDS / ElastiCache — The AWS managed services that provided compute, database, and caching — replaced by owned equivalents running directly on bare metal.
  • Co-location data center — Physical facility providing power, cooling, and network connectivity for 37signals' owned servers, removing the need to operate a private data center.
  • Five-year TCO model — The financial analysis comparing amortized hardware capex plus co-lo opex against ongoing cloud spend — the analytical tool that justified the migration.
  • Systems administrator hire — The organizational prerequisite for the migration: a person with the skills to operate MySQL, Redis, and Linux directly on bare metal without managed-service abstractions.
  • HAProxy — Open-source load balancer used to replace AWS ALB in the owned-hardware architecture.

Background

37signals is the company behind Basecamp and HEY, a project management tool and an email service respectively. Both products run on Ruby on Rails and serve hundreds of thousands of paying customers. The company is privately held, bootstrapped, and famously opinionated about software and business.

For most of their modern infrastructure history, 37signals ran on AWS — EC2 for compute, RDS for MySQL, ElastiCache for Redis, S3 for object storage, CloudFront for CDN. This is a completely conventional, well-understood stack. The decision to leave it was not driven by technical failure but by a financial reckoning that DHH documented publicly in late 2022 and updated in 2023.

This case is unusual in the postmortem genre: nothing broke catastrophically. The "incident" was a slow-motion cost accumulation that only became visible when someone did the arithmetic carefully. That makes it more instructive, not less — most infrastructure decisions that cost companies money never produce an outage ticket.

The rest of this case study — the trade-offs, the scaling numbers and the build prompt — is available to LearnXops members. Create an account or see membership.

Sources

Topics: infrastructure, cost-optimization, cloud-exit, bare-metal, capacity-planning

Related case studies

Browse all case studies