Scalability, high availability, containers, fault tolerance and eventual consistency. Tech terms can be confusing to those new to server administration or development. In the coming weeks, we’ll be breaking down common — yet potentially confusing — terms you will undoubtedly come across in your learning journey.
Scalability is often referenced alongside its partner in quality systems, high availability, but these two concepts can become entangled for those just starting out. While high availability is a program, application, or server system’s ability to remain continuously operational despite any failures, scalability is a system or application’s ability to handle growth.
When an application or network scales, it allows for more throughput, or work, to be managed at a time. Whether this is more concurrent web server connections or more database queries, scaling is about one’s application maintaining its functionality for increasingly growing loads. You can also scale “down” during slow or low load periods to save money and increase efficiency. Ideally, scaling should be something that is configured to happen automatically and without manual intervention from an administrator.
Scaling is more than adding nodes, RAM, or CPU cores, however. An application or server that scales well will do so efficiently and practically, without undue cost and without affecting its availability. Scaling needs to be able to fit both into the budget of the computer or creator and the needs of the servers.
But how does one get a system to scale? For this, we have two options, known as horizontal and vertical scaling. (more…)