Scalability and elasticity are often used interchangeably, but they are actually not quite the same thing in cloud computing. In our new topic section Cloud Basics we will discuss basics and important technical terms from the field of cloud computing in the future.
"Scalability" and "elasticity" refer to an adaptability to changes in the cloud environment, namely the ability to expand and contract as needed. As workload volumes increase, this requires the allocation and addition of more resources, or their withdrawal or redeployment as demand decreases/declines.
Cloud computing itself is also interpreted in very different ways, but generally encompasses the requirements of Self-Service, Resource Pooling and the provision of On-demand computing resourceswhich require scalability and elasticity in equal measure.
Elasticity
The Elasticity in cloud infrastructures involves enabling the hypervisor to create virtual machines (VMs) or containers with available resources to meet real-time demand.
Scalability
Scalability is often discussed at the application layer. Scalability emphasizes the ability of a system, network, or process to handle a growing amount of workloads or its ability to scale itself to accommodate the growth. While scalability may require elasticity, it can also be achieved through over-provisioning.
Two types of scalability are distinguished:
[mk_image src="//scaleuptech.b-cdn.net/de/wp-content/uploads/2016/09/ScaleUp_und_ScaleOut_2.png" image_width="900″ image_height="478″ crop="false" lightbox="false" frame_style="simple" target="_self" caption_location="inside-image" align="left" caption="© ScaleUp Technologies" margin_top="52″ margin_bottom="32″]
The first variant is "Scale Vertically or Scale-Up" - this type of scalability can work with any application to a limited extent. In an elastic environment, scaling would be achieved by either transferring the application to a larger virtual machine or by increasing the size of the affected VM.
The second variant is "Scale Horizontally or Scale-Out", where additional instances of the application tiers are provisioned to additional virtual machines and then share the load between them.
Horizontal scaling is very similar to or conditioned by elasticity. Horizontal scaling enables the reallocation of resources between applications by automatically provisioning or reducing virtual machines. The allocation and release of resources is done in real time and is based on default settings or predefined policies. Manual control is no longer necessary. Horizontal scaling is conditioned by infrastructure elasticity, but the application must also be able to scale by adding more nodes or distributing loads.
Elasticity and scalability in practice
For applications with uneven usage or with emergent "spikes" within certain time intervals, incorporating elasticity and scalability is critical. These applications should be designed to accommodate fluctuations in real-time demand for resources such as Bandwidth, Memory (Storage) and Computing power (Compute Power) can track down. However, most legacy applications are designed to run on a single machine and require adaptation of existing code to provide the necessary adaptability to a scalable and elastic cloud environment.
After that, the question is where to host the application, in a private or public cloud. Potential workload demand is one of the necessary considerations - along with data sensitivity, cost and other factors. As a rule, sporadically increasing workloads are better off in a public cloud or within a private cloud, which "Cloud Bursting" can leverage. Workloads with constant usage often benefit when hosted within a private cloud, both from a cost and performance perspective. Combined solutions would be the Hosted Private Cloud and the Managed Private Cloud. Here, the provider provides the cloud infrastructure, either in its own data center (hosted private cloud) or on site at the customer (managed private cloud), and in addition to provisioning also takes care of maintenance, updates and support.