0

Scalability

Discussion topics: scalability definition, architecture, requirement, factor, horizontal & vertical scaling

What it is?

Scalability is the capability of a system, network, or process to handle a growing amount of work, its potential to be enlarged in order to accommodate that growth. It's the property of a system or application to handle bigger amounts of work, or to be easily expanded, in response to increased demand for network, processing, database access or file system resources.

Architecture for Scalablity

A scalable architecture is an architecture that can scale up to meet increased work loads. In other words, if the work load all of a sudden exceeds the capacity of the existing software and hardware combination it can be scaled up to meet the increased work load. Example of scalable architecture:

scaling.png

Scalability Requirement

Scalability is the ability of a system to grow in its capacity to meet the rising demand for its services offered. System scalability criteria could include the ability to accommodate increasing number of · users, · transactions per millisecond, · Number of SQL statements that can run and provide results simultaneously.

The advantage of identifying scalability requirements early in the software life cycle is that it allows the architectural framework to become sound enough as the development proceeds. There are measures available to address the scalability, such as: · efficient hardware resources to counter the user needs, · database schema definitions, partitioning, · complexity of the database queries and optimization techniques, etc.

However, it’s a difficult task to establish the benchmarks, and to simulate the test conditions to match them.

Scalability Factor

The extra workload that the system can handle when scaling up the hardware capacity is the system's scalability factor. The scalability factor may vary depending on what part of the system you scale up.

If you double hardware capacity of your system, you would like your system to be able to handle double the workload too. This situation is called "linear scalability".

Linear scalability is often not the case though. Very often there is an overhead associated with scaling up, which means that when you double hardware capacity, your system can handle less than double the workload.

Horizontal and vertical scaling

There are two primary ways to scale up a system: Vertical scaling and horizontal scaling.

Vertical Scaling

Vertical scaling means that deploying the system on a computer with higher capacity than the computer it is currently deployed on. The new computer may have a faster CPU, more memory, faster and larger hard disk, faster memory bus etc.

scalable-architectures-1.png

Horizontal Scaling

Horizontal scaling means that adding more computers with currently deployed computer. The added computers typically have about the same capacity as the current computers the system is running on.

scalable-architectures-2.png


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí