Introduction
Scaling software systems involves accommodating increasing user queries and data payloads. Scaling is split into two models:
- Vertical Scaling (Scaling Up): Increasing CPU, memory, and disk capacities of a single database server.
- Horizontal Scaling (Scaling Out): Partitioning workloads across multiple database server instances.
Load Balancing Topologies
Load balancers sit between client requests and server nodes, routing transactions based on:
- Round Robin: Sequential task distributions.
- Least Connections: Allocating tasks to nodes handling minimal concurrent queries.
- IP Hash: Mapping requests to target nodes using user IP hashes to ensure session persistence.
Data Partitioning & Consistency
Enforcing horizontal databases scale requires sharding tables. However, this introduces complications governed by the CAP Theorem:
- Consistency: All nodes see identical data simultaneously.
- Availability: Every request receives a non-error response.
- Partition Tolerance: The system operates despite message losses or network drops.