One self-hosted console to run your entire business — commerce, ERP, HRM, CRM & manufacturing

Cloud Repatriation for SMBs: When Leaving the Hyperscalers Saves Money, and When It Doesn't

A line-by-line comparison of compute, managed database, egress, backups and ops hours, with the 37signals numbers, a stay-or-move decision tree and a migration plan that keeps a rollback open until the last step.

Author

Anichur Rahaman

4 days ago10 min read1 views
Cloud Repatriation for SMBs: When Leaving the Hyperscalers Saves Money, and When It Doesn't

The cloud invoice reads $9,400. The owner of a 40-person online retailer opens it on the third of the month. Last October it was $6,100, and traffic grew by a third, not by half. One line, "data transfer out", has doubled to $1,150 and nobody on the team can say which feature caused it.

She starts asking whether the whole stack would be cheaper on rented servers. Half the internet says yes. The other half says that is how companies end up with a 3 a.m. outage and no one to call.

Both camps are right, for different companies. Cloud repatriation means moving workloads from public cloud back to servers you rent or own, and it pays when load is steady, data volumes are large and someone owns operations. It loses when load is spiky, the team is tiny or the managed services are doing real work. This article puts line items on that trade so you can run the numbers for your own shop.

What repatriation means and what the evidence shows

The word covers a spectrum. At one end is a full exit to your own hardware in a colocation rack. At the other is moving only the expensive, steady parts, such as the database or the file storage, to a dedicated server while the rest stays put. Most small and mid-sized businesses should think about the second end first.

The best-documented case is 37signals, the company behind Basecamp and HEY. According to The Register's report of May 2025, it spent about $700,000 on Dell servers and cut its cloud bill by roughly $2 million a year. It then moved about 18 petabytes of storage off Amazon S3 onto Pure Storage arrays costing around $1.5 million, expecting to save another $1.3 million a year. AWS waived roughly $250,000 in egress fees for the exit, and the company projects $10 million saved over five years. Its CTO said no extra staff were needed.

Read that carefully. 37signals had a $3.2 million annual bill, years of operations experience and flat, predictable demand. The numbers are real, and they belong to a company with those three traits. The Register's write-up is worth reading for the detail.

The wider pressure is about waste, not only price. Flexera's 2026 State of the Cloud report, a survey of more than 750 cloud decision-makers and users, estimates that 29% of cloud spend is wasted, the first rise in five years, with AI workloads a driver. In the same survey, 85% named managing cloud spend as a top challenge (Flexera press release). Waste you can fix inside the cloud is the cheapest saving, and it comes before any move.

Where the money leaks

Four cost drivers explain most of the gap between a cloud invoice and a server rental.

Egress

Moving data into a cloud is free. Moving it out to the internet is metered. AWS lists $0.09 per GB for the first 10 TB a month after a free 100 GB, with cheaper tiers above that. A store serving product images, invoice PDFs and API responses can cross 8 TB without noticing. Dedicated servers usually include 20 TB or more of traffic in the monthly price.

The managed-service premium

A managed database with a standby replica in a second zone costs several times the raw compute underneath it. You are paying for automated failover, patching and point-in-time recovery. That is a fair price when nobody on your team can do those jobs and an expensive one when someone can.

Idle capacity

Instances sized for the peak day run at 15% on every other day. Autoscaling helps only if the application scales out cleanly. A fixed server sized for the peak has the same idle problem but at a much lower unit price.

AI workloads

GPU instances, vector storage and the traffic they generate bill by the hour and by the gigabyte. Flexera ties the rise in waste to exactly these workloads. Run experiments in the cloud, where you can switch them off, and price the steady inference load separately.

A worked monthly comparison

Here is an illustrative shop: a web app, background workers, a PostgreSQL database and about 8 TB of outbound traffic a month. These are round numbers for the exercise, not quotes. Ops time is priced at $75 an hour.

Line item (illustrative)Hyperscaler, on demandTwo dedicated servers + two for the database
Compute (app and workers)$900$230
Database (primary + replica)$1,100 managed$230 self-managed
Egress, 8 TB$711$0 (included allowance)
Backups and snapshots$190$60 off-site object storage
Load balancer, logs, monitoring$450$90
Ops hours25 h = $1,87545 h = $3,375
Total per month$5,226$3,985

The egress line is plain arithmetic: 8,000 GB minus the free 100 GB is 7,900 GB, times $0.09, which is $711. The monthly saving is $1,241, about 24%, or $14,892 a year.

Look at the last row before celebrating. Hardware and bandwidth fall from $3,351 to $610, but ops time rises by 20 hours. Break-even sits where $610 plus $75 times the hours equals $5,226, which is about 61 hours a month. Above that, the cloud was the cheaper choice.

Now apply a one-year commitment discount of 30% to the cloud compute and database. The cloud total drops to $4,626, the gap shrinks to $641 and break-even falls to about 54 hours. A migration of 200 engineering hours costs $15,000 and pays back in roughly twelve months at the original gap, much longer at the smaller one.

Bar chart of illustrative monthly cost, hyperscaler versus dedicated servers, at 0.25x, 1x, 2x and 4x traffic, with the crossover between 0.25x and 1x
The same shop at four sizes: cloud is cheaper while it is small, and the gap reverses once traffic and data keep growing.

Stay or move: four questions

The decision rarely turns on price alone. Four questions, in this order, sort most businesses.

First, is the load steady and the bill large enough to matter? Below roughly $3,000 a month the saving cannot cover the extra attention. Trim waste and buy committed capacity instead.

Second, is traffic spiky or truly global? A flash sale that multiplies traffic by ten for an hour is what elastic capacity is for. Renting for peak all year costs more than paying cloud rates for peak hours. How a system absorbs such spikes is covered in the autoscaling post in this series. A CDN in front of a fixed origin handles much of the global side.

Third, does someone own patching, backups and on-call? Without a named person, the savings are not real. Pick a managed middle option instead.

Fourth, do customers or regulators dictate where data lives? If yes, the answer is a regional or in-country host, which may not be your current provider.

Flowchart with four decision diamonds: steady load and large bill, spiky or global traffic, someone owns operations, data location rules, leading to stay or move outcomes
Most businesses exit this tree in the first two questions, and that is the right answer for them.

The middle options

The choice is not only hyperscaler or your own rack.

  • VPS and dedicated servers from hosting providers. Fixed monthly price, bandwidth included, you run the software. This is what the worked example assumes.
  • Regional or sovereign cloud providers that offer familiar building blocks, such as virtual machines, object storage and managed databases, at lower prices and with a clear legal home.
  • Managed hosting, where a provider operates the servers and you keep root-level control of the application. It costs more than bare servers and less than building a team.
  • Colocation, where you own the hardware and rent rack space, power and a network port. It suits the 37signals profile: large, steady and staffed.

Portability decides how cheap a move is. An application packaged as containers and a single compose file, as self-hosted platforms such as StoreConsole are, moves between any of these in an afternoon. One welded to proprietary queues and serverless functions needs a rewrite first.

Sovereignty and the questions customers ask

Enterprise buyers now ask where their data is stored, who can legally compel access to it and whether they can leave. These are procurement questions, and a shop that cannot answer them loses deals.

Regulation is also lowering the cost of leaving. Under the EU Data Act, providers may charge only their direct costs for switching during a transition period, and switching charges, egress included, disappear on 12 January 2027. If you have EU customers or an EU contract, that date belongs in your plan. Outside the EU, ask for an exit-fee waiver in writing before you begin, as 37signals did.

Location is not security. A server in your own country is not safer than a well-configured cloud region. It answers a legal question, not a technical one.

A migration plan with rollback points

A repatriation is a series of small, reversible moves, not a weekend event. Each step below keeps a way back until the last one.

  1. Measure first. Export the bill by line item, list every service, record data sizes and peak traffic. Cut idle resources now, because you might find the move is unnecessary.
  2. Build the target and test a restore. Set up servers, patching, monitoring and backups. A backup you have never restored is a hope, so restore one end to end before anything moves.
  3. Move stateless parts. Static files, the app and workers go behind a CDN. Lower the DNS TTL to 60 seconds a few days earlier. Rollback is one DNS change.
  4. Replicate the database. Stream changes to the new primary with logical replication and compare row counts and checksums on the busiest tables. Rollback is stopping the replica.
  5. Cut over in a quiet window. Freeze writes, let the replica catch up, promote it and switch DNS. Keep reverse replication running so the cloud copy stays current.
  6. Run both for 30 days, then retire. Delete the cloud resources only after a full billing cycle and a successful month-end close on the new side.
Timeline of a 13-week migration from measuring through cutover to retiring the cloud, with a rollback point under each stage
The last easy rollback is the cutover week; after that, every step costs more to undo.

The risks that are easy to underrate

Operations skill is the main one: kernel and database patching, certificate renewal, disk-full alerts and failover drills now belong to you. Monitoring comes second, because the cloud console you relied on is gone. Security patching has a deadline measured in days when a critical CVE lands. Plan an on-call rotation of at least two people, or buy a managed layer.

What to measure after the move

Track five numbers monthly. Total infrastructure cost including ops hours, since cost without labour is flattering. Ops hours per month against your break-even. Recovery time from your last restore drill, in minutes. Patch age, meaning the days since the oldest known security update was applied. And p95 latency from your main customer regions, because moving away from a global network can cost you milliseconds.

If ops hours drift past break-even or the restore drill fails, the move is not paying, and that finding is worth acting on.

Back to the invoice

Return to the owner and her $9,400 invoice. Splitting it by line, she finds that egress and the managed database are 40% of the bill, and that most of the egress is product images served straight from the origin.

She puts a CDN in front first, which in this scenario cuts egress by more than half within a week. Then she moves the steady database and workers to dedicated servers over a 13-week plan, keeps the storefront edge and the sale-day burst capacity in the cloud, and writes the restore drill into the calendar. The invoice is a line-by-line document she can explain, and the next increase will have a name attached.

Key takeaways

  • Repatriation pays for steady, data-heavy workloads with an owner for operations. 37signals' savings came from a $3.2 million bill and years of experience.
  • Flexera's 2026 report estimates 29% of cloud spend is wasted, so fix waste, commitments and egress before moving anything.
  • Price ops hours at a real rate. In the illustrative example the move saves 24% and breaks even at about 61 hours of monthly ops work.
  • Keep spiky and global parts in the cloud and move steady parts, using a CDN and a regional or dedicated host in between.
  • Migrate in reversible steps: restore-tested backups, replicated data, a quiet cutover, reverse replication and a 30-day overlap.

Anichur Rahaman is a software architect and the creator of StoreConsole. He designs commerce and ERP systems for growing businesses, with a focus on event-driven architecture, data integrity and self-hosted operations.

About the Author

Anichur Rahaman

Continue Reading