Serverless means you ship code (or a container) and a cloud provider runs it on demand, scales it out, and often scales it to zero when traffic stops. Non-serverless means you keep something warm yourself: a VM, a dedicated box, a VPS, or an always-on container host that you size, patch, and pay for even when idle.
This is a decision guide, not a vendor bake-off. The same tradeoffs show up whether you call the managed side Lambda, Cloud Functions, Azure Functions, or Cloud Run scale-to-zero, and whether the always-on side is EC2, a DigitalOcean droplet, Kubernetes pods with a minimum replica, or a mini PC under the desk.
What Serverless Means (and what it does not)
Serverless is managed compute that scales with demand and, in the classic model, can sit at zero cost when nothing is running. You do not SSH in to patch the OS. You do not pick an instance family for baseline load. You upload a function or a small service, wire a trigger (HTTP, queue, cron, object storage event), and the platform provisions capacity when work arrives.
FaaS (Functions as a Service) is the purest form: short handlers with hard time limits, memory knobs, and per-invocation plus GB-second billing. Adjacent products blur the line. Some "serverless containers" still bill only while requests are in flight and can scale to zero; others keep a minimum instance warm so they behave more like managed containers with nicer autoscaling.
What serverless is not: "there are no servers somewhere." There are still servers. You just do not operate them. It is also not automatically cheaper, faster, or simpler at every scale. It moves cost and complexity into the platform, the request path, and the way you design state.
A useful analogy: serverless is a metered taxi. Non-serverless is owning (or leasing) a car that sits in the driveway whether you drive today or not.
What Non-Serverless Means
Non-serverless is anything you keep allocated on purpose: VMs, dedicated hosts, VPS boxes, and always-on containers. You (or your platform team) choose CPU and RAM, apply OS and runtime patches, set disk and network limits, and decide how many copies stay running at 3 a.m.
That includes:
- Cloud VMs (EC2, Compute Engine, Azure VMs) behind a load balancer
- Managed Kubernetes or ECS/Fargate services with a minimum replica count above zero
- A cheap VPS from a hoster that bills monthly
- A home or office always-on machine: mini PC, NAS, or Mac mini running Docker, Plex, backups, or Home Assistant
The defining trait is duty cycle you pay for even when idle. You trade that fixed cost for predictable latency, long process lifetimes, local disks, and a mental model that matches classic sysadmin work.
For the home-lab version of always-on, see Mac mini M4 Home Server Guide and Build a Plex Media Server: Everything You Need. Power outages on those boxes are a separate problem; UPS auto-shutdown for Synology, QNAP, and NUT covers that side.
How the Cost Models Differ
Serverless bills for work. Typical meters are invocations, duration (often rounded up to some millisecond granularity), memory size, and supporting services (API gateway, egress, logs, provisioned concurrency). Idle truly can be near zero on the compute line item. Spiky traffic that would otherwise force you to over-provision VMs is where the story shines.
Always-on bills for allocation. A 1 vCPU / 2 GB box running all month costs roughly the same whether it serves 100 requests or 10 million, aside from bandwidth and storage. That is boring in a good way once utilization is high and steady.
Rough intuition (numbers move by region and generation, so treat them as shape, not a quote):
| Pattern | Serverless tends to win | Always-on tends to win |
|---|---|---|
| Duty cycle | Idle most of the day; bursts | Busy most of the day |
| Request shape | Short (ms to a few minutes) | Long jobs, streams, big batch |
| Latency | Can tolerate occasional cold start | Needs flat p99 |
| Ops capacity | Small team, little patching appetite | Team already runs VMs/K8s |
| Compliance | Fine with shared managed runtimes | Needs pinned hosts, agents, or dedicated tenancy |
Hidden serverless costs show up next to the function bill: NAT gateways for VPC access, chatty service-to-service chatter, high-cardinality logs, and provisioned concurrency bought to dodge cold starts (which quietly recreates a fixed monthly floor). Hidden always-on costs are the opposite: idle capacity, weekend traffic that never justified the fleet size, and engineer time spent on patching and capacity tickets.
Cold Starts, Long Jobs, and Sticky Workloads
Cold starts happen when the platform has to spin up a fresh execution environment after idle or during a scale-out. Interpreted runtimes are often hundreds of milliseconds; heavier runtimes can be seconds. Mitigations (warm pools, SnapStart-style snapshots, minimum instances) work, and they also erase part of the "scale to zero" savings.
Long-running work fights FaaS limits. Multi-hour video encodes, big ETL, WebSockets, game servers, and anything that needs a durable local scratch disk usually want a VM, a container with no hard few-minute timeout, or a job system designed for that shape. Serverless still helps as the orchestrator (kick the job, react to completion) even when the heavy lifting is not serverless.
Sticky or chatty workloads (connection pools to a legacy DB, in-memory sessions, single-writer locks) fit always-on hosts more naturally. You can redesign around external state stores and make serverless happy. That redesign is real engineering, not a checkbox.
Ops Burden and Compliance
Serverless wins when patch Tuesdays and AMI pipelines are the pain you want to delete. The platform owns the host OS. You still own your dependency CVEs, IAM policies, secrets, and observability.
Always-on wins when auditors want a named machine, a host agent, a fixed IP story, or software that simply will not run in a stripped FaaS sandbox. Dedicated hosts and private clusters exist for a reason. So do regulated workloads that cannot spray business logic across a hundred ephemeral functions without a clear data-flow map.
Small teams often start serverless for glue (webhooks, cron, image thumbnails) and keep the boring core API on a managed container or VM. That hybrid is not a failure mode. It is usually the adult architecture.
When Each Wins (cheat sheet)
Prefer serverless when:
- Traffic is bursty or overnight-idle
- Handlers finish quickly and hold little local state
- You want deploys without capacity planning meetings
- The alternative is a fleet of tiny always-on boxes at 5% CPU
Prefer VMs / always-on containers / dedicated hosts when:
- Load is steady and the crossover math already favors allocation pricing
- p99 latency cannot absorb cold starts
- Jobs run longer than FaaS caps allow
- You need GPUs, special kernel modules, or bulky sidecars
- Compliance or ops culture expects host-level control
Prefer a physical always-on box at home or in a closet when:
- The workload is personal (media, backups, home automation) and cloud egress would dominate
- You want LAN speed and local disks
- You accept that you are the on-call (power, disks, updates)
Always-On Hardware If You Mean It Literally
Cloud debate aside, "non-serverless" for a lot of readers is a machine that never sleeps under the TV stand. These three Amazon US options are already on the site for that job: a cheap mini PC, a quiet Mac mini, and a 2-bay NAS.
Budget always-on mini PC
✓ Pros
- ✓ Intel N150 Quick Sync helps 4K HEVC transcodes for Plex-style workloads
- ✓ 2.5GbE LAN avoids a USB NIC tax on a home server
- ✓ Listed max draw around 25W, so 24/7 power cost stays small
- ✓ Palm-size chassis with a VESA bracket in the box
✕ Cons
- ✕ Some Beelink units in the wider family fail early; buyers report slow RMAs
- ✕ 12GB LPDDR5 is soldered with no upgrade path
- ✕ This SKU is newer with a thin review sample versus older S13 listings
- ✕ Treat Wi-Fi as backup; wire the server port
The Beelink Mini S13 (N150, 12GB/512GB) is the spend-less always-on host for Docker, a light reverse proxy, or a media box on the LAN. It is the opposite of serverless pricing: you buy the hardware once and eat a few watts forever.
Quiet premium always-on Mac
The Apple Mac mini (M4, 16GB/256GB) is the low-noise option when you want Time Machine targets, light services, and efficient idle draw in a 5x5 inch square. Plan external storage from day one; 256GB fills up fast as a server disk. Full setup notes live in the Mac mini M4 home server guide.
Always-on storage appliance
The Synology DiskStation DS225+ (diskless) is the "I want DSM, snapshots, and quiet disks" answer. You still buy drives separately, and early firmware was picky about non-Synology disks until DSM updates widened support. Pair it with a UPS shutdown path from the NUT / Synology UPS guide if the box holds irreplaceable backups.
| Pick | Role | Standout | Catch |
|---|---|---|---|
| Beelink Mini S13 | Cheap always-on PC | 2.5GbE + Quick Sync, low watts | Soldered RAM; mixed early reliability reports |
| Mac mini M4 | Quiet Apple host | Efficient idle, strong single-box services | Tiny internal SSD; no user RAM upgrades |
| Synology DS225+ | NAS appliance | DSM polish, 2.5GbE, quiet | Diskless; watch drive compatibility notes |
Bottom Line
Pick serverless when idle time dominates and the work fits short, event-driven handlers. Pick traditional servers, VMs, or always-on containers when utilization is high, latency must be flat, jobs run long, or you need a stable host boundary. Most production systems mix both: serverless for the edges, always-on for the core.
If "always-on" for you is a home box rather than a cloud invoice, start with the Beelink Mini S13 for budget Linux services, the Mac mini M4 when silence and macOS matter, or the Synology DS225+ when the job is durable storage first.