The pets-versus-cattle metaphor was coined by Bill Baker (then at Microsoft) around 2012 to describe the shift from individually-named servers you nurture to interchangeable instances you replace. For hyperscalers and SaaS companies the shift happened a decade ago. For most SMB server rooms, it has not happened at all — and every audit, migration, and incident is harder because of it.
This article is the canonical SMB server room blueprint we use in 2026. Built for the 50-300 seat company that still has 8-25 physical or virtual servers running business-critical workloads. The goal: a reference architecture where any server can fail, be rebuilt from code in under 2 hours, and produce no incident report longer than "host died, replacement provisioned, service resumed, root cause analysis filed".
What "pets" look like in practice
The SMB server room we walk into for the first engagement, common patterns:
- "PROD-SQL-01" running an unsupported Windows Server build. Nobody knows the patches applied since 2022.
- "BACKUP-NAS-NEW" (the actual hostname) which is now 4 years old.
- "DC01" running Server 2016 with the smart-card AD CA configured by someone who left in 2021.
- "VM-HOST-MAIN" ESXi running 14 VMs including the very Domain Controller that authenticates the ESXi management interface.
- "FILESHARE-OFFICE" — a tower under someone's desk, full of files, with the original install media in a drawer.
- Backup target labelled "BACKUP-DAILY" that has not actually rotated tapes since the original install.
Every host has a name, a personality, a story, and a specific person who knows how it was configured. The bus-factor is 1. The runbooks live in head-memory. The rebuild plan, if one exists, was written for hardware that has not been sold in 5 years.
The cattle target state
The reference architecture we build toward:
- Every host defined as code. Terraform / Pulumi for the infrastructure shape; Ansible / Salt / Puppet for the configuration; a custom golden image for the OS baseline.
- Hosts are interchangeable. Hostnames carry no meaning — they are just identifiers. A new host gets the next available identifier and the role gets assigned via tags + automation.
- State lives off-host. Databases on dedicated managed services or replicated clusters. File shares on the NAS or object storage. Application config in version control. No state lives "on the server" except cached / regenerable data.
- Rebuild is the recovery procedure. "Restore the host from backup" is replaced by "destroy the broken host, run terraform apply, the new host pulls config from source of truth, service resumes". Backup remains for data, not for host state.
- Automated patching with documented rollback. Hosts patch on a schedule, in waves, with monitoring. A bad patch rolls back via redeploy, not via uninstall.
- Documentation lives next to the code. Markdown READMEs in the same Git repo as the Terraform. Updates to docs and code happen in the same pull request or neither happens.
The reference topology for 2026
For a 50-300 seat SMB with mixed on-prem + cloud:
Compute layer
Two or three Proxmox hosts (or vSphere if the licensing is grandfathered) running the on-prem workloads. Proxmox specifically because: open source, EU-friendly, mature enough for production, cheaper than VMware-by-Broadcom in 2026.
Each Proxmox host is identical hardware (same vendor, same generation, same CPU class). Replacing a failed host is a procurement decision, not a re-architecture. We standardise on Dell PowerEdge R660 or HPE ProLiant DL360 G11 for the SMB tier — well-supported, EU-distributable, reasonable price-performance.
Storage layer
One of three patterns, in order of preference:
- Ceph cluster on the same Proxmox nodes (HCI pattern). 3+ nodes, replicated storage, survives a node loss. Operational depth required is real; pays back at scale.
- TrueNAS Scale as a dedicated NAS, NFS / SMB / iSCSI to the Proxmox hosts. Simpler than Ceph, single point of failure unless you cluster TrueNAS (which is non-trivial).
- Dedicated SAN (Dell ME5, HPE MSA) for shops with existing SAN expertise. Still defensible in 2026 for specific workloads.
For most SMBs, Pattern 1 (Ceph on Proxmox) is the right answer if the team has the depth. Pattern 2 (TrueNAS) if not.
Network layer
10GbE switching as the floor. 25GbE for the storage backplane. Spine-leaf if there are 4+ Proxmox nodes. Aruba CX, Cisco Nexus, MikroTik CRS depending on budget and operational preference.
The non-obvious point: out-of-band management network. A dedicated 1GbE switch with iDRAC / iLO / IPMI access on its own VLAN. When the main network is down, you can still reach the host BMC and intervene. Adding this after the fact is painful; designing it in costs almost nothing.
Identity layer
Hybrid identity with Entra ID as primary, an on-prem AD as the secondary (for legacy applications that cannot do modern auth) running on dedicated VMs. The AD lives in code: GPOs, OUs, group definitions all version-controlled in a Git repo, applied via PowerShell DSC or a similar configuration management layer.
The on-prem AD is itself cattle: rebuildable from the metadata in source control, with FSMO role placement explicitly chosen and documented.
Backup layer
The 3-2-1-1-0 pattern from our backup-strategy article. Concretely:
- Proxmox Backup Server (or Veeam) as the primary backup target
- S3-compatible object storage (Wasabi, Backblaze B2, or local Minio) for the off-site copy with Object Lock retention
- Optional air-gapped tape rotation for the highest-tier workloads
- Monthly restore drill on a representative VM
The IaC repository structure
The Git repo that defines the server room. Every config that matters lives here:
infra/
├── terraform/
│ ├── proxmox/ # Host definitions, VM templates
│ ├── network/ # Switch configs (where supported by provider)
│ ├── dns/ # PowerDNS / pihole records
│ └── modules/ # Reusable modules
├── ansible/
│ ├── inventory/ # Dynamic inventory from Terraform output
│ ├── roles/
│ │ ├── common/ # Baseline (users, sudoers, monitoring agent)
│ │ ├── proxmox-host/
│ │ ├── ad-domain-controller/
│ │ ├── file-server/
│ │ ├── database-server/
│ │ └── ...
│ └── playbooks/
├── packer/
│ ├── ubuntu-server-2404.json # Golden image for Linux VMs
│ ├── windows-server-2025.json # Golden image for Windows VMs
│ └── ...
├── docs/
│ ├── runbooks/
│ │ ├── host-failure.md
│ │ ├── disk-replacement.md
│ │ ├── network-troubleshooting.md
│ │ └── ...
│ └── architecture-decision-records/
└── .github/
└── workflows/ # CI/CD for IaC validation
The repo is private, audit-logged, and access-controlled. Every change is a pull request with at least one reviewer. The change is applied via CI/CD with explicit confirmation, not by an engineer running terraform apply from their laptop.
The patching and lifecycle discipline
Patching cadence
- Weekly: security patches on dev/staging hosts. Automated reboot.
- Bi-weekly: security patches on production hosts. Wave-based rollout with monitoring window between waves.
- Quarterly: minor OS version updates (e.g., Ubuntu 24.04.x → 24.04.x+1).
- Annual: major OS version updates (e.g., Ubuntu 22.04 LTS → 24.04 LTS).
- 3-year: hardware refresh cycle.
Rollback pattern
Two-phase rollback for any patch:
- Phase 1: redeploy from previous golden image. If the patch causes an issue within the first hour, the host is destroyed and rebuilt from the prior image version. Cattle-style; fast.
- Phase 2: if the issue is data-related, restore from backup. Slower, retained as a fallback.
The golden image versioning is the enabler. Packer builds a new image weekly with the latest patches; the previous image is retained for 30 days; rollback is a host redeployment pointing to the previous image artefact.
The monitoring stack
The monitoring stack we layer over a cattle architecture:
- Prometheus + node_exporter on every host. Storage on a dedicated monitoring host.
- Grafana for visualisation. Dashboards version-controlled (JSON exports in the IaC repo).
- Loki for centralised logs. Promtail agents on hosts ship to Loki.
- Alertmanager for alert routing to Slack / Teams / PagerDuty.
- Healthchecks.io or equivalent for cron-job and backup-job liveness monitoring.
The non-obvious requirement: the monitoring stack monitors itself. A dedicated external probe (UptimeRobot, Hetzner Statuspage probe) verifies that the monitoring host is reachable and the alerting pipeline is healthy. Otherwise the monitoring is blind to its own failures.
The "one engineer who knows" problem
The whole point of cattle architecture is to defuse the bus-factor problem. The mechanisms:
- Knowledge is in the repo, not heads. A new engineer can read the IaC and runbooks and rebuild the entire estate without talking to anyone.
- Pull request reviews force knowledge sharing. Every infrastructure change is reviewed by someone other than the author. Two-person knowledge minimum.
- Quarterly rebuild drills. Pick one VM. Destroy it. Time the rebuild via the documented procedure. The drill catches drift between documentation and reality.
- On-call rotation includes infra-only days. Junior team members do infrastructure on-call on quiet days, in pairs with seniors, to build muscle before the real incident.
The migration path from pets to cattle
Most SMBs cannot rebuild everything in a quarter. The pattern that works is incremental:
Phase 01: Inventory + classification (weeks 1-3)
Document every host. For each: name, role, dependencies, criticality, current state of automation. Classify into Tiers (1: production critical; 4: archive). Plan tackles Tier 4 → Tier 1 (low-risk first, learn the patterns).
Phase 02: Foundation (weeks 4-8)
Build the IaC repository, the Proxmox cluster, the monitoring stack, the backup target. Build out the golden image pipeline for Linux + Windows. Validate the rebuild process on a sacrificial host.
Phase 03: Migrate Tier 4 + Tier 3 hosts (weeks 9-16)
Move the lowest-risk workloads first. Dev / staging / internal tools. Validate the patterns on workloads where a 4-hour outage is recoverable.
Phase 04: Migrate Tier 2 (weeks 17-24)
The middle tier — important but not bet-the-business. File shares, internal apps, monitoring infrastructure, identity (carefully).
Phase 05: Migrate Tier 1 (weeks 25-36)
Production databases, the primary line-of-business application, customer-facing services. Slowest phase; most testing; explicit rollback plans per workload.
Phase 06: Decommission + operate (weeks 37+)
Old hosts retire. Quarterly drill cadence starts. The operating discipline becomes the new normal.
Where this approach fails (the honest section)
Three patterns where pets-to-cattle is harder than it sounds:
- Legacy applications with state in odd places. Older ERPs, accounting systems, MES platforms sometimes embed state in registry, host-local files, or vendor-specific binary blobs. Containerising / cattle-ifying these requires vendor cooperation or a re-platforming exercise.
- Compliance regimes that require host-level audit trails. Some sector regulations (older banking, certain healthcare) expect identifiable host audit. Rebuild-from-image breaks the chain unless you preserve the audit artefacts separately.
- Vendor licensing tied to hardware UUID. Some software licenses are bound to specific hardware identifiers. Rebuilding requires either license re-binding (vendor cooperation) or accepting that the rebuild is slower than the technical capability suggests.
The bill of materials for a reference 3-host Proxmox cluster
| Component | Spec | Cost (EUR, list) |
|---|---|---|
| 3× Dell PowerEdge R660 | 2× Intel Xeon Gold 5520+ (32C each), 256GB RAM, 8× 1.92TB NVMe | €48,000 |
| 2× Aruba CX 8325 (10/25GbE) | Storage + workload backplane | €18,000 |
| 1× Aruba CX 6100 (1GbE OOB management) | iDRAC + IPMI | €1,800 |
| Rack + PDUs + cabling | 42U + dual feeds + Cat 6A / fibre | €4,500 |
| UPS (10kVA online double-conversion) | APC Smart-UPS SRT or Eaton 9PX | €5,500 |
| Backup target (Proxmox Backup Server) | 1× R250 with 8× 18TB HDD in RAIDZ2 | €6,500 |
| Monitoring host | Existing VM on cluster | €0 marginal |
| Total CAPEX | €84,300 |
Amortised over 5 years: €16,860/year. For a 200-seat SMB this is roughly €7/seat/month for the underlying infrastructure. Add operational engineering (0.3-0.5 FTE for the on-prem estate) and the all-in TCO compares favourably against equivalent cloud workloads for steady-state usage patterns.
What we have learned from running this for clients
- The migration is mostly a documentation exercise. 60-70% of the project time is writing down what each host does, why it exists, and what depends on it. The code follows.
- The drill cadence is what keeps the system honest. Without monthly drills the IaC drifts back into "the actual host is different from the code" territory within 6 months.
- Pet-named hosts persist culturally even after they are technically cattle. Engineers refer to "DC01" even when DC01 is now
ad-dc-prod-eu-001in IaC. Let the cultural lag persist; it does not hurt anything. - Hardware standardisation matters more than vendor choice. Three identical Dell servers beat one Dell + one HPE + one Lenovo. Pick a vendor and stay with it for the cluster lifetime.
- The on-prem story is not dead. For predictable workloads, the bare-metal TCO at SMB scale beats cloud after ~18-24 months. The decision is workload-pattern-specific, not religious. See our bare-metal-vs-cloud deep-dive.
The one paragraph version
The pets-to-cattle migration that hyperscalers did a decade ago has not happened in most SMB server rooms. The 2026 reference architecture: 3× Proxmox hosts running identical hardware, Ceph or TrueNAS storage, 10/25GbE networking with OOB management, hybrid identity (Entra primary, on-prem AD as cattle), IaC repository defining everything, Packer-built golden images on a weekly cadence, Prometheus / Grafana / Loki / Alertmanager monitoring stack with external self-monitoring, 3-2-1-1-0 backup pattern. The migration takes 9 months for a 200-seat SMB and produces a host-failure recovery time of 30-90 minutes via documented runbooks anyone in the team can execute. The bill is €84k CAPEX amortised over 5 years; the operational discipline is the real product.
If you want this designed + migrated + operated, that is the engagement shape under our Azure Cloud Infrastructure service (where on-prem becomes the cattle target for cloud-extended workloads) and Hardware & Endpoint Management for the procurement + lifecycle. The on-prem pattern itself is part of every infrastructure engagement that touches the server room directly.