principleModeratepending
Horizontal vs vertical scaling — when to add machines vs upgrade
Viewed 0 times
horizontal scalingvertical scalingscale outscale upload balancershardingreplication
linuxkubernetes
Problem
Application is hitting performance limits. Need to decide between scaling up (bigger machine) or scaling out (more machines). Each approach has different cost, complexity, and failure characteristics.
Solution
(1) Scale vertically first: it's simpler. Upgrade CPU, RAM, or disk. Works until you hit the largest available machine size. (2) Scale horizontally when: you need fault tolerance (machines fail), you've hit vertical limits, your workload is naturally parallelizable. (3) Stateless services: easy to scale horizontally — just add instances behind a load balancer. (4) Stateful services (databases): harder — requires replication, sharding, or consensus protocols. (5) Rule of thumb: scale the web/app tier horizontally, scale the database tier vertically as long as possible. (6) Costs: vertical has diminishing returns (2x CPU != 2x performance). Horizontal has operational complexity (networking, consistency, deployment). (7) Hybrid: vertical for databases + read replicas for horizontal read scaling.
Why
Vertical scaling has a ceiling (biggest machine available) but is operationally simple. Horizontal scaling is theoretically unlimited but introduces distributed systems complexity (consistency, networking, deployment).
Revisions (0)
No revisions yet.