What is Scalability?

What is Scalability?

The number of simultaneous requests that an application can successfully support is a measure of its scalability. The point at which an application can no longer successfully handle more requests is its scalability limit. When a key piece of hardware is exhausted and new or more machines are needed, this limit is reached. Scaling these resources can include any combination of CPU and physical memory (different or more computers), hard disc (larger hard drives, less "live" data, solid state drives), and/or network bandwidth (several network interface controllers, larger NICs, fibre, and so on).

Horizontal scaling

Horizontal cloud scaling, also known as 'scaling out', boosts cloud performance by adding extra computing equipment. To increase data processing and storage capacities, scaling out may require adding additional computing nodes or machines. 

Businesses that demand high availability and almost zero downtime from their web services benefit most from horizontal scaling. Horizontal scaling is faster and easier to execute than vertical scaling. In most cases, there is little downtime or other inconvenience.

Advantages of horizontal scaling

  • Scaling is easier from a hardware perspective - Hardware-wise, scaling is simpler because all it required is that you add more machines to your current pool to achieve horizontal scaling. It eliminates the requirement to determine which system specifications must be upgraded.
  • Fewer downtimes – You don't have to turn off the old machine while scaling because you're adding one. Clients are less likely to be affected and there may never be a need for downtime if done correctly.
  • Increased resilience and fault tolerance – If you rely on a single node for all of your data and processes, you run the risk of losing everything if it fails. Distributing it among multiple nodes prevents you from losing it completely.
  • Increased performance - When you use horizontal scaling to manage your network traffic, you may connect to more endpoints since the load is distributed across numerous workstations.

Disadvantages of horizontal scaling

  • Increased maintenance and operation complexity – Multiple servers are more difficult to operate than a single server. You will also require software for load balancing and maybe virtualization. Backing up your equipment may also become more difficult. You must guarantee that nodes effectively synchronize and communicate.
  • Increased startup expenses – Adding new servers is significantly more expensive than upgrading existing ones.

Vertical scaling

Vertical cloud scaling improves existing infrastructure's technical characteristics by adding or changing CPU, HDD, or other components. Vertical scaling or'scaling up' would also include decommissioning existing systems and replacing them with better capability infrastructure. The obsolete infrastructure is either scrapped, resold, or repurposed for less demanding business functions. Vertical scaling can take longer than horizontal scaling and may require some downtime. However, scaling up is frequently less expensive than scaling down.

Using a third-party cloud vendor makes vertical scalability easier for enterprises. This is because it is the service provider's responsibility to ensure adequate cloud computing capacity for meeting scalability requirements.

Advantages of vertical scaling

  • Cost-effective - Upgrading an existing server is less expensive than buying a new one. Furthermore, when scaling vertically, you are less likely to deploy new backup and virtualization software. Maintenance charges may also remain unchanged.
  • Less complicated process communication - When a single node manages all of your services, it won't need to connect or synchronise with other machines in order to operate. This might result in quicker reactions.
  • Maintenance is simpler - Because there are fewer nodes to keep track of, maintenance is not only less expensive, but also simpler.
  • Software modifications are less likely - Modifying the functionality or implementation of software running on a server is less likely.

Disadvantages of vertical scaling

  • Increased downtime - Upgrading your computer will require some considerable downtime unless you have a backup server that can handle operations and requests.
  • Single point of failure - Having all of your operations on a single server raises the danger of losing all of your data in the event of a hardware or software failure.
  • Upgrade limits - There is a limit to how much a machine can be upgraded. Every system has its own RAM, storage, and processing power limit.

What’s the main difference?

Horizontal scaling refers to adding more machines to your pool of resources (also known as "scaling out"), whereas vertical scaling refers to adding more power (e.g. CPU, RAM) to an existing system (also known as "scaling up").

The need to split a sequential piece of logic into smaller bits that can be processed in parallel across numerous machines is one of the fundamental distinctions between the two. Vertical scaling is easier in many ways because the rationale does not need to be altered. Instead, you're simply executing the same code on more powerful machines. However, there are numerous more things to consider while deciding the best technique.

Basis

Horizontal Scaling

Vertical Scaling

Performance Model

Horizontal scaling makes use of the combined power of numerous physical devices. This 'distributed programming' scheme distributes processing and storage tasks across real devices linked by a single network.

Concurrent programming on a single physical computer is used for vertical scaling. This machine could have several cores. Through in-process messaging and multi-threading, the machine's data processing and storage capacity can be optimised.

Key Features and Examples

Horizontal scalability includes capabilities such as strong load balancing, distributed file systems, and clustering. This enables for more effective traffic regulation at higher demand levels. In horizontal scaling contexts, fault tolerance strategies are also more prevalent.

MongoDB and Cassandra are two prime instances of horizontal scaling.

Vertical scalability is renowned for its ease of implementation and maintenance due to the existence of a single system. Scaling up carries a low chance of application incompatibility. This type of scalability is better suited for smaller organisations with lesser data throughput needs.

Amazon RDS and MySQL are prominent examples of vertical scaling.

Geographical Distribution

Scaling out is useful for expanding an application's geographical reach. Horizontal scaling reduces geo-latency, aids in regulatory compliance, and improves business continuity.

Scaling up is excellent for applications that require a small geographical footprint. Vertical scaling is best suited for businesses that serve clients in a narrow geographic area.

Execution

Smaller parts of sequential logic are broken down during the horizontal scaling process. This enables data to be executed concurrently on several machines.

The logic mechanism involved in vertical scaling does not require recurring adjustments. The same code is used for execution on a machine with higher specs.

Data Transmission

Horizontal scaling sends data between machines via network communication, commonly known as 'calls'. These calls can be sluggish and prone to failure, particularly in unoptimized scaling scenarios.

In non-optimal horizontal scaling environments, data processing frequently results in distinct machines handling different requests. This can result in outdated data being sent to the client. This problem, however, can be solved by implementing stateless scalability.

Data sharing may be complicated in distributed computing systems without a shared address space. This method can also increase costs because data must be copied before it can be shared or modified.

Finally, horizontal scalability requires the inclusion of a load-balancing component. This is necessary in order to disperse traffic among the several machines involved.

Vertical scaling is based on the inter-process communication notion. This scalability solution is significantly faster and easier to implement.

The issue of "data inconsistency" does not arise because scaling up requires a single machine to handle all requests.

Even in multi-threaded contexts, a shared address space is common. This permits data sharing through the exchange of references.

Finally, a single machine processes the full data load. A load balancer is no longer required.

Cost 

Horizontal scaling can be substantially more expensive than vertical scaling. This is due to the fact that scaling out requires several physical machines, which are frequently distributed across multiple data centres in different countries.

But for businesses with the right use case, horizontal scalability can greatly increase their profitability.

Vertical scaling is typically a less expensive option to horizontal scaling. This is due to the fact that a single machine is less expensive to operate, maintain, and manage.

The profitability associated with vertical scaling is better than ever before as the capacity of single machines grows due to the introduction of cutting-edge components.

Downtime

Downtime is uncommon in an environment supported by horizontal scaling. This is due to the fact that numerous machines are available to process requests at the same time. If some computers fail to function, others will take over their workload.

A vertically scaled environment is more prone to downtime. This is due to the fact that all workloads are processed on a single machine. Regardless of how durable this machine is, any issues with its operation may result in downtime.

Which one is better for you ?

Choosing between horizontal scaling and vertical scaling does not always make sense. Moving between the two models is frequently a better option. In storage, for example, we frequently desire to transition from a single local disc to a distributed storage system.

Adding flexibility to the system by running some levels of the application on vertically scaled computers and others on horizontally scaled infrastructure is a question of planning for parallelization. To accomplish this, (i) construct it as a decoupled group of services from the beginning, which makes the code easier to migrate and enables you to add new resources as necessary without severing the connections between your code sets.; and (ii) segregate your application and data model such that the parallel units don't share anything.

The industry is expected to transition more towards a horizontally distributed scaling model. The requirement for greater reliability through a redundancy strategy, as well as the necessity for higher utilisation through resource sharing as a result of cloud/SaaS migration, are driving this trend. When combined with a vertical scaling mechanism, however, we can benefit from both paradigms.