Cloud vs on-premise in 2025 🚢
Navigating the infrastructure landscape and figuring out where you should host software
In late 2022 the tech world raised its collective eyebrows when the ever-contrarian DHH announced that Basecamp was leaving the cloud.
DHH argued that for a stable, medium-sized business like theirs, renting computers from AWS was simply a bad deal: servers are overpriced and the simplicity savings are overrated. So they packed their bags and headed back towards their own hardware.
Since then, Basecamp not only has not backtracked — it has doubled down, also exiting S3 (which they didn’t intend to leave initially) and announcing they will be completing the final leg of their cloud exit on June 30th.
(worth noting it took almost three years anyway!)
So, is the Basecamp’s story educational and/or representative of a wider trend? Or is Basecamp just a peculiar outlier, thriving in conditions most companies can’t replicate?
Fast forward to today, some things are actually changing, but the pendulum hasn't decisively swung one way or the other:
On one side, stories and surveys point to a high interest in cloud repatriation: data from the end of 2024 shows that 86% of CIOs plan to move some public cloud workloads back to private cloud or on-premises in 2025 — the highest ever on record, and up 2x from the previous year.
On the other side, cloud services continue to grow, both in their offering of managed services, and in spending numbers. Last November Gartner forecasted $723.4 billion in worldwide public cloud spend for 2025, up a whopping 21% from 2024.
Reality, as always, is nuanced. Choosing where to run your software isn't a binary toggle — it's a spectrum, a complex matrix of decisions that include technical, human and business factors.
So, in this article, we'll try to dissect the modern infrastructure landscape and navigate the tradeoffs between the various options you have at disposal.
Here’s the agenda:
🗺️ Infrastructure landscape — beyond cloud vs on-prem, exploring all the layers and options available today.
🖥️ Application needs — how complexity, traffic, performance, and data influence your choices.
🛠️ Team factors — skills, platforms, and devex. Evaluating your team's capabilities, and the rise of platform engineering.
💼 Business realities — unpacking TCO, speed, FinOps, and technical strategy.
🔭 Looking ahead — summarizing a decision process for 2025 and beyond, looking at current trends and predicting where the puck is going.
To cover all of this, we will draw on original insights, fresh research, and most importantly, weave in real-world stories shared by leaders within the Refactoring community.
As always, the goal isn't to give you the answer, but to equip you with the right questions and frameworks to find your own best answer.
Let's dive in!
🗺️ Infrastructure landscape
When we talk about "cloud vs on-premise," this often evokes a simple image: you're either renting everything from Amazon, Google, or Microsoft, or you've got servers blinking away in your basement.
Reality is, of course, more layered. To understand the options, it helps to break down infra into two fundamental layers:
🔩 Physical infrastructure — this is the tangible stuff: the actual servers (compute, storage), the networking gear (routers, switches, cables), the power, the cooling, and the physical security of housing it all.
🪄 Virtual infrastructure — this is the software and processes sitting on top of the physical hardware, that allow you to provision, manage, deploy, and operate your apps. Think virtualization, container orchestration, deployment pipelines, etc.
Your full setup involves making choices at both of these layers. So let's look at the common options for each:
1) Physical infrastructure 🔩
Where do the actual servers live, and who owns them? You have four main options here:
True on-premise — this is when you own and manage everything: the building (your office or a dedicated facility), power, cooling, physical security, and the server hardware inside.
Co-location ("co-lo") — you still own your server hardware, but you rent rack space (and power, cooling, etc.) in a third-party datacenter. This is what Basecamp did. It eliminates the need to manage the physical facility, but you're still responsible for procuring, installing, and maintaining your own servers.
Dedicated Servers / Bare Metal Cloud — you rent entire physical servers from a provider (e.g. Hetzner, OVH). You get root access to the bare metal, but you don't own the hardware or manage the datacenter environment it sits in.
We rent a physical machine from OVH and our external sysadmin proxmox-es a bunch of VMs on top of it... Boring, inflexible, ... also dirt-cheap, and most of the time totally painless. — Matej Vitasek, CTO at Realpad
Cloud (Infrastructure as a Service) — this is the standard hyperscaler model (AWS EC2, GCE, Azure VMs). You rent virtualized compute, storage, and networking resources on demand, running on hardware owned and managed entirely by the cloud provider. You pay for what you use, benefiting from elasticity and a vast array of complementary services.
2) Virtual Infrastructure / Management Layer 🪄
Once you have sorted out the physical layer — how do you manage and deploy applications on top of it?
Here are the main ways: