EMZETT.
Login

Scaling

In short: Scaling means extending a system so that it can handle more load (users, data, requests).

In more detail: With a popular website the number of visitors grows. A system is scalable if its performance can be adapted to demand with manageable effort, up as well as down again.

In Depth

Two ways

  • Vertical (scale up): a stronger machine with more processor, RAM, faster storage. Simple, but limited and a single point of failure.
  • Horizontal (scale out): more machines side by side across which the load is distributed (load balancing). Almost unlimited, but the application must be built for it, for example without local state.

Other means

  • Caching: store frequent answers temporarily.
  • Database: replication (read copies) and sharding (splitting data).
  • Asynchronous processing: tasks in queues.
  • Automatic (auto-scaling): in the cloud instances start and stop according to load.

Limits

Bottlenecks shift: when the server is fast, the database or network becomes the bottleneck (bandwidth). Scaling costs money and should be justified by measurements (KPI).

See also: system architecture, redundancy, instance