Comparison
Horizontal scalingvsStorage-compute separation
Horizontal scaling
you add three more identical instances behind the load balancer instead of making the existing one bigger.
Adding more machines to spread load. It has no ceiling in principle and gives you redundancy for free, which vertical scaling does not. It requires the work to be partitionable and the instances to be stateless, and it moves your bottleneck to whatever is still shared — usually the database.
Full entry →Storage-compute separation
you scale up the query cluster for the month-end run and the data does not move anywhere.
Keeping data in shared storage that any amount of independently scaled compute can read. It is the architectural change that made elastic warehousing possible: compute can be sized per workload, several workloads can read the same table without copies, and storage is billed at object-storage rates. The cost is that every read crosses a network, which is why local caching, file layout and pruning matter so much more than they did on tightly coupled systems.
Full entry →