Illustration of a stack from operating system up to web server, beside bars showing how long each layer receives security fixes, with the shortest one marked as the binding constraint

Operating System and Stack

Back to Server Setup · Sizing · Patch Management · Service Offerings

This step selects the Linux distribution or Windows Server, plus the runtime, database and web server stack your applications actually need. The phrase “actually need” is the operative one: the application dictates most of this, and where it does not, the right criteria are support lifetime and what your team can competently run — not which technology anybody prefers.

1. Windows or Linux Is Usually Already Decided

This is rarely an open question. It is settled by what the software requires: a .NET Framework application, Active Directory, SQL Server with Windows-specific features, or a vendor product that only ships a Windows installer, and the answer is Windows Server. Most modern web stacks, most databases and most container workloads run on Linux and are cheaper there.

Where it is genuinely open, the inputs are licensing cost (Windows Server is licensed per core with minimums — see the licensing check), what your team administers well today, and what the rest of the estate runs. A single Windows box in a Linux estate costs more than its licence: it is a second patching process, a second monitoring configuration and a second set of skills to keep current.

2. Choose the Base on How Long It Is Patched

Bar chart of typical security-update lifetimes by operating system family, from about nine months for an interim community release to thirteen years with extended enterprise support

A server outlives the enthusiasm for rebuilding it. Installing a base with three years of updates left means an operating system upgrade project inside the life of the hardware, and that project will arrive at an inconvenient moment. The practical guidance:

3. The Stack Expires With Its Shortest Layer

This is the point most often missed. A ten-year operating system underneath a language runtime that is patched for three is a three-year system, because the runtime is just as exposed as the kernel. Every layer needs its own end-of-support date recorded:

4. Containers Move the Question, They Do Not Remove It

Containerising the application does not eliminate operating system choice — it produces two: the host OS and the base image inside each container. The base image needs patching on exactly the same basis, and an unpatched image is a vulnerability that ships with every deployment. What containers genuinely give you is the ability to run different runtime versions side by side on one host, which removes a real class of conflict. See containerization and Kubernetes.

5. The Criterion Nobody Writes Down

Can your team run it at three in the morning? A stack that is technically superior and unfamiliar is, in practice, slower to fix and more likely to be mis-configured. Where we recommend something new to a team, we say so explicitly and include what it takes to become competent with it — because that cost is real and is usually left out of the comparison.

What You Get