Once you select the right kind of IT environment for your business you may take on certain responsibilities for maintenance and monitoring, but for the most part, your server should hum along without demanding too much additional decision-making. As your business grows and evolves, and its needs change, however, adjustments may be necessary to get the most out of your IT investment. In some cases, upgrading to a server with more resources can be the best way to ensure operations continue smoothly. In other cases, the best and most cost-effective way to maintain system reliability and performance is to split off resources to run your database from a separate server.
Splitting off resources to provision separate servers that perform separate tasks is often overlooked as a way of getting the most from your environment. In certain situations, savvy businesses can improve the reliability of their system, while reducing its cost.
Additionally, a number of regulations and best practices require a Separation of Duties (SoD), such as the Payment Card Industry Data Security Standard (PCI-DSS). According to PCI-DSS rule 2.2.1 (PDF), any database containing PCI data like credit card information must be stored on a server which does not directly communicate with the internet. Splitting resources into two properly configured servers provide this separation and make the system compliant with this rule.
The roles and requirements of database and web or application servers are quite different, and separating them can provide a number of benefits. A multi-server environment can support more connections and services, helps to keep the system running, and can also cost significantly less each month than continually adding resources to a single server.
How Does It Work?
A multi-server environment can include dedicated servers or practically any other kind of infrastructure, in theory. Typically, when organizations first adopt a multi-server environment, however, it is made up of a pair of virtual servers deployed to perform separate functions. Deploying the database to its own server is the first major milestone in the normal evolution of a small IT system to a larger, multi-server environment appropriate for a larger or web-focused business.
Web applications can usually be further separated into web and application tiers, if necessary. Each server is provisioned and configured according to the specific demands of its function. Allocating more CPU cores to a database server, for instance, can enable it to handle higher volumes of simultaneous queries. Perhaps more importantly, with multiple servers, the configuration of each server can be tailored to its function. The performance of a database server can often be improved by configuring it to cache common queries and tables, and by tuning the number of simultaneous connections allowed, such as by setting the “max_connections” variable for a MySQL server.
There are many factors limiting the number of connections an individual server can handle in practice. A single server which hosts databases, applications and at least one website can be brought down by any one of them if the connections are exhausted. Deploying multiple servers with properly allocated resources eliminates the risk of a single service bringing down all others.
What Are the Benefits of Multi-Server Environments?
Server upgrades increase in price incrementally, but not necessarily evenly. If your server no longer provides adequate performance but is already near the top of its range in RAM or CPU, it is likely more cost-effective to adopt a multi-server environment than to upgrade it again. If you run out of RAM or cannot afford more cores, splitting your functions onto different servers is likely your next step. By allocating resources unevenly to multiple servers based on the requirements dictated by their functions, resources can be used more efficiently.
Splitting off databases from the web server allows you to maximize the number of Apache or front-end connections it can support. Apache documentation points out that users direct transactions through the DNS, and are generally unconcerned with what IP address the connection resolves to. This allows a system to be scaled out by directing client transactions to specific servers based on function and availability. Not only does this increase the number of front-end connections possible, but backend database queries and functionality are likewise improved.
Multi-server environments also enable more granular, and therefore more effective monitoring. The degree to which better monitoring benefits an organization depends somewhat on what type of business it is, but a granular view generally helps ensure uptime and performance, maintain cybersecurity, and in some cases enables more efficient development or resource allocation. There are also other potential benefits to separating functions onto different servers, including running different operating systems on each server.
Ultimately, enterprises and agencies with large networks tend to end up with servers or clustered servers for each function, plus other servers for redundancy. Splitting off the database is just the first step.
For most businesses, the point at which they should consider splitting off resources to separate functions comes when they could possibly still solve their problem in another way – by upgrading to a premium server. This may be both the most obvious and easiest next step, but it could be more expensive and less effective. It may not work at all.
Good quality virtual private servers (VPSs) often range from 2 vCPUs with 2 GB of RAM all the way up to 8vCPUs and 16 GB of RAM. Liquid Web Cloud VPS packages start at under 60 dollars and to a couple hundred a month for one server. The most inexpensive VPS provides plenty of resources for many new businesses, but increasing the resource amounts available on a single server by several times does not mean the system can support several times more traffic.
Two or three servers in a lower price tier, tuned to serve specific, separate functions, will usually provide better performance at a lower cost than the most powerful single server available. In some cases, a high-end dual or quad-core CPU server can cost more on its own than two or three complete systems running more modest CPUs.
It is not the case that more servers are always better, or that every organization should separate its network functions. There are many organizations, however, that could improve their system reliability, performance, and cost efficiency by splitting off resources but have not considered doing so. If you are planning to take online payments or serve any regulated industry, you also may be required to separate functions to do so. If your business has upgraded its server and is continuing to grow, and especially if the resource needs of one particular function are causing problems, dividing resources is likely the best solution.
As they grow, many SMBs and agencies can benefit from splitting off resources to run separate functions on different servers. This makes more connections available and prevents a single overwhelmed function from bringing down the server, and all other functions with it. This quickly becomes the economical way to ensure system reliability and performance and is the first step toward a mature network environment.