![]() |
Source: https://thenewstack.io/from-monolith-to-microservices/ |
X-axis scaling
Running multiple copies of an application behind a load balancer. Each copy can handle 1/N of the load. Where N is the number of running copies.
This is simple and commonly used approach to scale.
Cons
* Each copy accesses all the data, cache size will be higher.
* Doesn't solve increasing development and application complexity.
Y-axis scaling
Splitting the application into multiple, different services. Then more infra resources can be added to only the micro-service which is bottleneck in the architecture.
Here cached can be utilized efficiently, only where it is needed.
Z-axis scaling
Each server runs same copy similar to X-axis scaling. The big difference is that each server. Some component of the system is responsible for routing each request to the appropriate server.
This is commonly used to scale databases where data is partitioned(a.k.a sharded)
Pros
* Each server deals with a subset of data
* Improved cached utilization
* improved fault isolation
Cons
* Increased application complexity
* Partitioned schema is tricky to repartition data
* Doesn't solve increasing development and application complexity.
Hey great article on scaling across the 3 axes. Especially love the pros and cons section on each. I actually work for the guy that came up with the Scale Cube, Marty Abbott. Here is an article of his about it.
ReplyDeletehttps://akfpartners.com/growth-blog/scale-cube
You might want to include it in your resources. Up to you.
Thanks again,
Eric