An introduction to scaling
Scaling is an overloaded term. Finding a simple definition is tricky.
First of all, scaling doesn't refer to a specific technique or technology; scaling or scalability is an attribute of a specific architecture. As a general definition, we can say that scalability is the trait where a software application can handle increased loads of work. Examples of this can be larger datasets, higher request rates, and so on.
When talking about scaling software, we usually differentiate between the following:
Vertical scalability or scaling up can be defined as the ability to grow using stronger hardware and resources
Horizontal scalability or scaling out refers to the ability to grow by adding more hardware
It's important to note the differences between vertical and horizontal scaling. Vertical scaling basically means adding more capacity to a single node in a system. Virtually, all existing databases can be vertically scaled by adding memory, a faster CPU, or larger hard drives...