As system & application owners we encounter a point where we need to grow our environment, but the question that often occurs is in what way do we scale.

So let’s start with some defining methods of scaling today:

Horizontal scaling – where you scale by adding more machines (workers) into your pool of resources.

Vertical scaling – where you scale by adding more power (CPU, RAM, DISK) to an existing resource.

Use case:

Horizontal-scaling is easy as you can add more machines into the existing pool of resources, whereas vertical-scaling, on the contrary, may be limited to the capacity of a single machine. Scaling beyond that capacity results in downtime and comes with an upper limit.

Limitations:

I have been reading that hypervisors may pose limitations to the ability to scale as different hypervisors impose different limits on the number of resources that can be allocated

An example would be: VMware ESXi 6.7 – Limits such as: Each VM can support up to 128 virtual CPUs, 6.1 TB of memory, VM disk file sizes up to 62 TB and up to 10 virtual network interface controllers (NICs). Although there has been added support for things such as NVMe (virtual nonvolatile memory). The absolute limitations do present a scalability limitaiton.

Why are you thinking about this?

My recent work with Kubernetes & Docker has me looking at how they function from a resource level and I see the potential for them to surpass what I can do today with hypervisors alone.