Save to My DOJO
I’ve said in the past that I’m a descriptivist. As I see it, language exists solely to transmit ideas. If a language consumer comprehends a message within a reasonable degree of the communicator’s intent, then I rarely concern myself with the particulars. If you think about it, human society reflects a similar attitude. In most legal systems, we classify the severity of crimes that have the same outcome based on the intent of the perpetrator (for example, premeditated murder as opposed to negligent homicide). When ideas start to get lost, my attitude changes. In this article, I will focus on a very common, yet almost universally misused word: “server”.
The Most Proper Definition of the Technical Term “Server”
In its most proper application, the term “server” means a component that provides a service that can be consumed by other technologies. I doubt that many people would contest that. However, it does include a qualifier that doesn’t enjoy such widespread acceptance: very rarely does a piece of hardware meet the definition. Almost everything that can accurately be labeled “server” would also most closely fit the definition of “software”. Firmware and embedded systems cover most of the rest. However, the big tower unit sitting in the back of your small office doesn’t really count. Neither do the “pizza boxes” filling datacenter racks. Yes, their manufacturers sell them as “servers” and almost all of us call them “servers”, but the term is technically incorrect in that usage.
I don’t have a lot of information on the early uses of the term “server”. I don’t know who used it first, I don’t know how it was added to computer science jargon, and I don’t know how it entered the common vernacular. I have no doubt that someone knows these things; it might all be a simple Internet search away. However, I don’t think that’s important. Instead, I want to relay my own experiences so that any skeptics know that I understand how they feel.
My story starts in 1998. I was still very new to IT as my chosen career path. As many others have noted, newcomers to our industry often have a peculiar arrogance powered by ignorance. I was at least as bad as anyone else. Through fortune, I had more or less grown up with computers in a time when that was still very rare. So, even though I was just getting started, I acted as though those pre-professional years provided me with some unique insights.
At some point in that year, I attended a vendor presentation. I don’t now remember very much about it. I do recall the speaker saying something like, “A ‘server’ is always software. It is never hardware.” I scoffed (to myself). Afterward, I and a colleague had a good hearty laugh about how that guy didn’t know what he was talking about. Then, we went right back to our normal process of selling and configuring “servers”.
That episode always stuck with me. It took quite some time for me to realize that he was right. It took even longer for me to admit it. Hopefully, anyone that disagrees with this definition can get over their objections more quickly.
The short-circuit way to the explanation lies in the function of anything that we would call a “server”. To be a “server”, what must something do? Serve something, right? Think about that big box with the blinking lights that you call a “server”. When you first unboxed it and turned it on, was it capable of serving anything? Unless it came with something pre-installed, I’m guessing that it couldn’t. Perhaps it had some add-on module for out-of-band management. That would qualify as a server, but only because of embedded software. And, if that’s the only thing that the big shiny box could do, no one would have much interest in it.
Evidence: Qualifying Software
If the quick answer doesn’t suit you. then let’s take a longer view. The most convincing evidence for me was simply the proper application of the term. Think about all of the places that you usually find “server”:
- Web server: Do you know of any pure hardware solutions that will show web pages to client systems. If you can think of one, would you classify it as “full-featured”? Now, think about common web servers. Apache Web Server. IIS Server. What about web developers? When you hire or contract a web developer, do you expect them to work with a particular type of hardware? If you pay a company to host your web sites, do you even know the brand of physical systems that they use? Does it matter?
- Mail server: Same question as for web servers. You may not know of any hardware-only solutions, but you’ve heard of Exchange Server, right? Maybe Zimbra? When you configure your e-mail client to connect to an e-mail server, does it ask you anything about the hardware?
- File server: For some of us, the story might get grayer when we talk about file servers. Medium and larger businesses commonly have one or more physical systems dedicated to serving files. However, we all know that most operating systems provide this service natively. The hardware has little to do with it. In this case, the “file server” may not be a uniquely identifiable chunk of software, but it is still software. And, of course, we still have file servers that are not necessarily part of their operating system, such as Samba.
Of course, I could go on and on adding items to this list. FTP servers, LDAP servers, backup servers, etc. They all have basically the same formula with basically the same conclusion: servers are software, not hardware.
We can’t easily ignore the hardware in this discussion. Our hardware vendors sell us these things that they call “servers”. They certainly look and behave and cost differently than the other things that we buy. How do we reconcile all of that with this definition? I submit these points:
- What if you had to describe that box that you call a “server” by its constituent physical components? CPU, memory, expansion slots, ports, hard/SSD drives, optical drives. Would that not be an equally apt description of a desktop system? A laptop?
- I doubt that many people in my field have never installed Windows Server or a Linux server on a non-“server” piece of hardware. If you haven’t, then do you have any doubts that it could be done?
Once upon a time, we used the term “server-class hardware”. I don’t love that term because it tries to place artificial limitations on what type of hardware can run server software, but at least it has some merit. I sometimes see the term “PC Server”, which gets closer but still doesn’t quite make the cut. These “servers” are just computers. They might have been designed differently and they might use hardware of a higher quality, but they differ from other computing systems only by degree — not category.
Evidence: Operating Systems
I already mentioned that you can install a “server” operating system on just about any computer. However, we can go deeper:
- Non-“server” operating systems still provide services. You can remotely browse the local file system of a Windows 10 computer. It runs a constrained build of the same SMB server that ships as a component of Windows Server. It contains other built-in servers as well.
- These “workstation” and “personal” operating systems can also run third-party servers with ease. Have you ever hosted a network-based game world for your friends? That’s a server. Linux doesn’t even really care about distinctions in the operating system; you can install all sorts of server software from repository or source packages without restrictions. None of it checks your hardware unless it has some particular dependency.
The goal of this section is to show that many of the distinctions that we try to make around the term “server” are already artificial and to point out that hardware has very little to do with it.
The Point of Using the Term “Server” Correctly
Of course, the big question is: “does it really matter?” Most of the time, no, it doesn’t. If it did, we would have all agreed on some other term. I changed my thinking on the word “server” years ago, but I’ll still refer to some equipment as “servers”. I almost never correct anyone for using the term “incorrectly”.
But, sometimes, it does matter. And when it matters, it matters quite a bit.
Recently, I was working with some other people to build a load-balanced service using an F5 load balancer. If you’re not familiar with F5, they make physical appliances that run highly specialized embedded software. That software performs its load-balancing duties by employing what F5 calls “virtual servers”. The software creates whatever listeners you tell it to (such as HTTP) and binds them to an IP address or range. They’re called “virtual servers’ because the F5 doesn’t really serve much of anything; it passes it through to your back-end servers.
In my estimation, F5’s usage of the term “virtual server” is perfectly correct. However, it caused all sorts of problems in my conversations with the others that I was working with. Every time that I said, “virtual server”, they processed that as “virtual machine”. They couldn’t understand why I was creating so many virtual machines and why I was configuring them so strangely, and I couldn’t understand why they were resisting what seemed like perfectly reasonable suggestions. The language consumers were unable to comprehend the message within a reasonable degree of the communicator’s intent.
Future Behavior and Usage
Since we’re all hypervisor people around these parts and, therefore, accustomed to the term “virtual machine”, I am fond of adopting the term “physical machine” — or just “machine” — to replace “server” as a hardware descriptor. I doubt that much confusion will arise over that.
Practically speaking, how much confusion will such a tactic avoid? Of that, I’m not certain. I’ve only had a few interactions where a meaningful amount of time was lost over a misuse of the term “server”. A few of those times have been in relation to this Spectre/Meltdown business, which is already messy enough. I think that any time we can be clearer in our communications, we should strive to do so. However you feel about all of this, I think it’s worth taking note that not everyone may understand “server” the way that you do.
Not a DOJO Member yet?
Join thousands of other IT pros and receive a weekly roundup email with the latest content & updates!