What Is a Server?
A server is a computer program that can be accessed remotely over a network to provide resources and services to another computer program. The computing device that this type of program runs on may also be referred to as a server.
In the client/server architecture, there are two types of computers:
- Clients are the computers that end users interact with;
- Servers are the computers that provide resources and services to clients.
A single server can meet the needs of multiple clients, and a single client can access multiple servers.
Although the client/server architecture is still the dominant model in use today, the boundaries between clients and servers have become more fluid with the widespread adoption of cloud computing and microservices that can act as both a client and a server in different contexts.
Server Form Factors
Servers have several different types of form factors that cater to different deployment scenarios, scalability needs, space constraints, and management requirements. The choice of form factor depends on the specific needs of a computing environment.
For example, tower servers are self-contained units that can be placed on the floor or desk. They resemble old-fashioned desktop tower computers and are often used by small to medium-sized businesses in office environments.
In contrast, rackmount servers are designed to be stacked horizontally in special data center cabinets called racks. This type of server comes in standard sizes that indicate the form factor’s height in terms of rack units. 1U is approximately 1.75 inches (or 44.45mm) high.
The most common sizes for rackmount servers are:
- 1U: This is the most compact form factor in a rackmount configuration. A 1U server is often referred to as a pizza box server because it is 1.7 inches high, 19 inches wide, and 17.7 inches deep.
- 2U: These servers are approximately 3.5 inches high and are typically used when more processing power or storage is required.
- 4U: These servers are approximately 7 inches high and are often used for high-performance computing (HPC) and running resource-intensive applications.
Blade servers have a thin form factor that facilitates high-density server deployments. Multiple server modules are mounted horizontally in the same blade chassis to reduce energy consumption and cabling complexity.
Microservers are low-power servers designed for lightweight workloads. They are smaller than traditional servers and often have fewer hardware components and management features. This form factor can be a cost-effective choice for specific Internet of Things (IoT) applications.
OCP servers are based on the open hardware design principles of the Open Compute Project, an initiative started by Facebook to design and share open-source hardware specifications for data centers. OCP servers are designed to be energy efficient and can often be found in large-scale data centers and cloud computing environments. OCP form factors include:
- Open Rack: This is the original form factor introduced by the OCP. It features a 21-inch wide rack design with a power shelf at the bottom and server trays that slide in horizontally. The Open Rack design focuses on high scalability, power efficiency, and ease of serviceability.
- OpenU: OpenU is a compact form factor that can be used with standard 19-inch racks. OpenU servers are designed to reduce power consumption.
- Open Bridge Rack: The Open Bridge Rack is a hybrid form factor that enables the use of both standard rack-mount servers and OCP-style server trays within the same rack.
- Mezzanine: Mezzanine is an OCP form factor that can be inserted vertically into the server chassis like a blade server. Mezzanines are commonly used in high-density computing environments.
Types of Servers
In addition to form factors, servers can be categorized by the type of job they do. Choosing the right server requires knowing ahead of time what resources and services the server program will providing.
Application Server: Provides the business logic for deploying and executing application programs.
Backup Server: Performs data backups and provides centralized storage for backup data.
Collaboration Server: Enables collaboration and communication among users by supporting features like document sharing, instant messaging, and video conferencing.
Database Server: Stores and manages databases.
DHCP Server: Assigns dynamic IP addresses to client devices on a network.
DNS Server: Resolves domain names to IP addresses.
Edge Server: Provides network resources and services as close as possible to the end-user devices that use them.
File Server: Stores and manages files and allows clients to access and share them over a network.
FTP Server: Allows clients to upload and download files by using the File Transfer Protocol (FTP).
LDAP Server: Stores and manages directory information to facilitate user authentication and directory services.
Mail Server: Handles all email communication services, including sending, receiving, and storing email messages.
Print Server: Controls and manages network-connected printers, including print job queuing and management.
Proxy Server: Acts as an intermediary between clients and other servers by providing caching and filtering services to improve network performance.
Remote Access Server: Allows remote users to securely connect to a network or access resources remotely through a virtual private network (VPN) connection.
Streaming Server: Delivers streaming media content, such as audio or video, to clients over a network.
Time Server: Provides accurate time synchronization across a network, by using the Network Time Protocol (NTP) or Precision Time Protocol (PTP).
VoIP Server: Handles Voice over IP communication services and is responsible for routing voice calls over an Internet protocol (IP) network.
Web Server: Hosts websites and delivers web content to clients over the internet.
Server Components
Server components are designed to work together to provide clients with functionality, resources, and/or services. Specific components will vary depending on a specific server’s form factor and the type of job it does, but common components are discussed below.
Hardware: This includes the server chassis as well as the dedicated server’s central processing unit (CPU), memory, storage, network interfaces, and power supplies.
Server OS: This is an operating system (OS) designed for a specific type of client/server environment.
Server Software: This is software that supports a specific use case for a server. Examples include database server software, email server software, and web server software.
Network Connectivity: Server programs connect to the network infrastructure and communicate with client devices over a local area network (LAN), wide area network (WAN), or the internet. Some server form factors have multiple network interfaces to provide redundancy and support different types of network configurations.
Management and Monitoring Tools: Servers often come with tools that enable remote management and performance monitoring.
High-Availability Features: Some servers include high- availability (HA) features to minimize downtime and ensure continuous operation. This includes redundant power supplies and network interfaces, access to multiple storage systems, and configuration management tools that enable automatic failover and load balancing.
Security Measures: Most server software includes security features to protect against unauthorized access, data breaches, distributed denial of service (DDoS) attacks, and other cybersecurity threats.
Server Operating Systems
A server operating system is a special software platform that ensures resources such as CPU, memory, storage, and network connectivity are optimized to meet the demands of changing server workloads.
The choice of operating system depends on factors such as what the server will be use for and the level of technical expertise required to manage the server environment.
Popular server operating systems include:
Windows Server is a server operating system developed by Microsoft. It offers a wide range of features and services, including Active Directory for user management, Internet Information Services (IIS) for web hosting, SQL Server for database management, and support for various enterprise applications. This OS is known for its user-friendly interface, extensive compatibility with Windows-based software, and robust management tools.
Ubuntu Server is a Linux OS designed specifically for open source server deployments. It is known for being user friendly and having strong community support.
Red Hat Enterprise Linux (RHEL) is a commercial Linux OS known for its stability, security, and enterprise-grade support. Because RHEL provides features like high availability, virtualization, and containerization capabilities, it is a popular choice for mission-critical server deployments in enterprise environments.
CentOS (Community Enterprise Operating System) is a free and community-driven OS based on Red Hat Enterprise Linux source code. It is popularly used for web and database servers.
FreeBSD is a Unix-like operating system known for its robustness, performance, and security. It is popularly used for web and mail servers.
VMware ESXi is a popular server virtualization platform designed to run multiple virtual machines on a single physical server. VMware ESXi offers features like live migration, high availability, and centralized management and provides the necessary hypervisor functionality to consolidate and manage virtualized server workloads.
IBM AIX (Advanced Interactive eXecutive) is a Unix-based operating system developed by IBM. AIX is commonly used in enterprise environments for mission-critical server workloads in complex enterprise resource planning (ERP) and customer relationship management (CRM) systems.
Physical vs. Virtual Servers
Server programs can be hosted on dedicated physical computing devices or in software-based emulations that run on a physical computer.
A physical server is a tangible piece of hardware that has its own central processing unit (CPU), memory, storage, and network interface. It runs a single operating system and dedicates resources solely to that server.
In contrast, a virtual server is a virtual machine or microservice that runs in a software container. Virtual servers allow multiple server instances to run on a single physical server and share the physical host’s resources on an as-needed basis.
Here are some popular physical, virtual, and integrated server environments:
Clustered – Multiple physical and/or virtual servers work together to provide high availability and fault tolerance.
Standalone – The physical or virtual server operates independently and does not rely on other servers or systems to perform its intended functions.
Serverless – A cloud service provider is responsible for managing the physical or virtual server’s software, operating system and underlying physical components.
Microservice – Servers deployed as microservices can be upgraded, scaled, and restarted independently without impacting the rest of an application.
Edge – Physical and virtual servers are placed as close to the data source as possible to reduce latency and optimize network bandwidth.
Hybrid Cloud – Physical and virtual servers in a distributed computing environment are deployed on-premises and in the public cloud.
Proprietary vs. Open-Source Servers
Proprietary servers are software systems created and maintained by a vendor that holds exclusive rights over its source code, its use, and distribution. Proprietary server software is licensed by the parent company. Microsoft’s Windows Server is a well-known example of a proprietary server.
In contrast, the source code for open-source servers is publicly accessible, and anyone can view, modify, and distribute the code. Open-source servers are developed collaboratively by developer communities and may or may not be licensed under an open-source license, such as the GNU General Public License (GPL). The Apache HTTP server is a well-known example of an open-source server
The main differences between proprietary and open-source servers are their cost, their ability to be customized, the support users can expect to receive, and their security.
Choosing between proprietary and open-source servers depends on a company’s specific needs, resources, and technical expertise. While proprietary servers offer ease of use and professional support, open-source servers provide unparalleled customization and cost efficiency. As such, both have their unique strengths and serve different niches in the digital landscape.
Proprietary Servers | Open Source Servers | |
Cost | License or subscription fees. | Free to use, modify and distribute. |
Customization | Limited customization options. | Ability to alter the source code, allowing for extensive customization. |
Support | Often provided by the server parent company. May require an extra cost. | Community-driven support that is often broad in knowledge but sometimes inconsistent in depth. |
Security | The vendor is responsible for proactively identifying and patching vulnerabilities. | The collective knowledge and scrutiny of the development community often result in vulnerabilities being identified and patched quickly. |
Servers and AI
The integration of Artificial Intelligence (AI) into server software is creating self-managing servers that can predict and react to potential issues and optimize their own performance and security autonomously.
One of the most significant applications of AI in server software is the use of predictive analytics to trigger maintenance tasks. AI systems can monitor performance metrics and network traffic continuously and alert system administrators about anomalies faster than was ever possible with manual monitoring.
AI can also help reduce server sprawl by automating routine server management tasks. This includes automatically provisioning and de-provisioning server resources, deploying updates and patches, enabling autodiscovery, and automating configuration management functions. Some server software can even use log data and anomaly detection algorithms to predict a specific server component’s future lifespan and order a replacement before a failure occurs.
In addition to improving efficiency and helping to keep costs down, the inclusion of AI is improving security by reducing the risk of human errors that could potentially lead to system vulnerabilities. AI-powered cybersecurity tools can monitor the network for potential threats to server software and learn from previous attacks how to predict, detect and respond to potential security threats.
Server Error Codes
In a client/server architecture, server error codes are standardized status codes that are returned by a server to indicate the outcome of a client’s request. These error codes are part of the HTTP (Hypertext Transfer Protocol) status code system and are sent by the server in response to a client’s HTTP request.
Here are some commonly encountered server error codes:
500 Internal Server Error: This error indicates that an unexpected condition occurred on the server, and the server was unable to fulfill the request. It is a generic error message that doesn’t provide specific details about the problem.
503 Service Unavailable: This error indicates that the server is currently unable to handle the request due to being overloaded or undergoing maintenance. It suggests that the client should try the request again later.
502 Bad Gateway: This error occurs when a server acting as a gateway or proxy receives an invalid response from an upstream server. It indicates that the server acting as the gateway encountered an unexpected condition while attempting to fulfill the request.
504 Gateway Timeout: This error occurs when a server acting as a gateway or proxy does not receive a timely response from an upstream server. It indicates that the upstream server did not respond within the time limit.
501 Not Implemented: This error indicates that the server does not support the functionality required to fulfill the request. It signifies that the server lacks the ability to process the request method or the requested resource.
505 HTTP Version Not Supported: This error occurs when the server does not support or refuses to support the HTTP protocol version used in the request.
There are also error codes for HTTPS requests. These error codes are in the 4xx range, and they indicate that there was a problem with the request itself, rather than with the server. Some of the most common HTTPS error codes include:
400 Bad Request: This code indicates that the request was malformed or syntactically incorrect.
401 Unauthorized: This code indicates that the request was unauthorized. This could be due to a missing or invalid authorization header, or it could be due to a problem with the user’s credentials.
403 Forbidden: This code indicates that the request was forbidden. This could be due to a lack of permissions, or it could be due to a security policy.
404 Not Found: This code indicates that the requested resource was not found.
408 Request Timeout: This code indicates that the request timed out while waiting for a response from the server.