Your PostgreSQL database chokes on a €20 VPS. Sales pitches bare metal "for all the CPU." Bill ×3, 48h delivery, manual migration — and benchmarks show a missing index, not the hypervisor, was the bottleneck.
Bare metal: rented physical server, OS on hardware (or IPMI reinstall). Cloud VM: virtualized slice with API, snapshot, resize in clicks. Bare metal rigidity pays when you measurably saturate VM resources and neighbor isolation matters — not when app tuning is missing.
Operations comparison
| Criterion | Cloud VM | Bare metal |
|---|---|---|
| Provisioning | Seconds–minutes | Hours–days |
| IOPS / disk latency | Variable (neighbors) | Typical dedicated NVMe |
| Sustained CPU | Possible burst credits | Fixed cores |
| Snapshots / restore | Native API | IPMI, imaging, slower |
| Scale up | Resize instance | Machine change |
| Small project cost | Low | Often higher floor |
| Isolation | Hypervisor | Physical |
Buying bare metal to compensate for an unindexed SQL query moves real work to the hardware bill.
When to stay on VM (majority web case)
WordPress sites, moderate APIs, early SaaS. VPS or cloud instance + monitoring until metrics prove otherwise.
Need elasticity. Horizontal VM scale + load balancer vs fixed rack.
Disposable environments. Staging, CI runners — hourly VM.
Limited ops budget. Snapshots, API rebuild, no datacenter calls.
Hetzner Cloud, OVH Public Cloud, Scaleway Instances: local NVMe profiles narrow gap with entry bare metal for many loads.
When bare metal defends itself
Proven I/O bound. High iowait, saturated disk queue on already-tested premium VM.
100% sustained CPU. Transcoding, rendering, simulations — not 5-minute burst.
Per-socket licensing. Sometimes savings on Oracle/SQL Server (verify contract).
Strict isolation compliance. Client forbids multi-tenant hypervisor — rare but documented.
Providers like Leaseweb, OVH Bare Metal document profiles — compare in directory.
4-step decision method
- 7 days metrics: CPU steal, iowait, disk p99, RAM swap
- Tune app + DB on current or higher VM tier
- A/B benchmark premium VM vs entry bare metal (same region)
- Calculate 36-month TCO including migration and ops
The peak: rigidity is bare metal hidden cost
Decide and move forward without blind spots
- Profile real load 7–30 days.
- Optimize before hardware class change.
- Test higher VM tier vs entry bare metal.
- Document bare metal rebuild procedure (RTO).
See S3 or block storage. Compare tool for dedicated profiles.
Frequently asked questions
Is bare metal always faster than a VM?
Often on I/O and sustained CPU. Well-sized NVMe VM may suffice — measure.
What do I lose on bare metal?
Slow provisioning, less flexible snapshots, scale = migration, sometimes no hourly billing.
Which workloads justify bare metal?
Heavy-write DBs, transcoding, analytics — not unoptimized average WordPress.
Is VM enough for compliance?
Yes with documented isolation. Bare metal does not auto-add GDPR.
Before signing dedicated hardware, ask: did you saturate your host's largest VM with a tuned app? If not, bare metal can wait.
