Paper Link
Authors
Luis M. Vaquero, Luis Rodero-Merino, Rajkumar Buyya
Summary
Scalability of a cloud service refers to the capability to dynamically grow or shrink (scale up or scale down) the underlying infrastructure based on some metrics (e.g. the number of requests per second). It strongly affects the Quality of Service (QoS) of an application. Cloud computing features scalability and that “makes it different to so-called ‘advanced outsourcing’ solution”. The real scenario is not that ideal however and what we perceived automated scaling for cloud applications is not that perfect yet and some important pending issues still exist. This paper investigated the most notable initiatives concerning “whole application scalability” in the cloud. The authors provide state of the art efforts to this issue and the underlying trends they follow.
We mentioned “whole application scalability”, it includes different elements when different abstraction levels applied.
For IaaS (Infrastructure as a Service), where cloud service providers offer hardware infrastructures such as virtual machines (VMs) and networks, “whole application scalability” includes:
-
Sever scalability
-
Load balancers and load balancing algorithms
-
Network scalability (application should be able to request bandwidth-provisioned network pipes and other network resources to interconnect them, the so-called NaaS)
To be more clear, we can divide IaaS into horizontal scaling and vertical scaling.
-
Horizontal scaling: add new server replicas and load balancers to distribute load among all available replicas. This is where we have more factors to consider, e.g. load balancing algorithms, load balancing load balancers, network slicing, dynamic bandwidth allocation, etc.
-
Vertical scaling: on-the-fly changing of the assigned resources to an already running instance. Common OSs usually do not support on-the-fly changes on the existing hardware, and sometimes a new VM is provisioned to seamlessly replace the old VM.
For PaaS (Platform as a Service), where the cloud service providers (CSPs) offer a container-like environment and developers deploy their applications as software components, “whole application scalability” here we examine container replication and database replication (there are other factors as well).
-
Container Scalability
-
At container level, there are two ways to run user’s components.
-
Run them on non-shared containers, which limits the level of scalability.
-
Share containers across users (i.e. enabling multitenant containers), which usually gives better scalability but requires strong isolation among users.
Both approaches implement scalability by replicate the containers so that user components can run (similar to horizontal scaling). This should be done automatically by the platform, which implies developers should be aware of that when designing software components (e.g. stateless v.s. stateful components).
-
-
-
Database Scalability
-
At the database level, there are many discussions on DBMS scalability in literature. Here we focus on 3 mechanisms:
-
Distributed caching
-
NoSQL databases
-
Database clustering
-
-
Database replication is the most important issue to consider when scaling a PaaS platform (major problem comes from the fact that transactions require protecting the data involved while the transaction lasts, often making that data unavailable to other transactions).
-