Everywhere you look these days, cloud vendors are promoting elasticity. Tim Pat Dufficy, Director of Products and Services for iomart, walks us through what it means and how your business can benefit from it.
Elasticity used to be something you needed when the waistband of your trousers felt tight after lunch. Today it is part of the menu of cloud services offered by cloud vendors and is whipping up quite a storm.
In an elastic cloud, the application is able to monitor changes in the demand for resources, like bandwidth, connections, compute, RAM and storage, in real-time. It can then autonomously add or remove resources to the system to cope with that changing demand, all without human intervention. This is theoretically ideal for applications with variable, spiky or unpredictable demand.
While any cloud can be made elastic, the practice is most common within the public cloud space where it enables:
- Users to grow or shrink their cloud (to a point) and only pay for what they use
- Vendors to cope with spikes in demand, improve utilisation and generate additional revenue
Cloud elasticity and scalability are not equal
The words 'elasticity' and 'scalability' are often interchanged when vendors are describing the unique nature of their cloud solutions when in fact they are not the same.
Autonomous cloud elasticity is achieved by giving the application the ability to make calls to the hypervisor to create new machine instances with the resources required to meet the current demand. This means that when demand is expected to exceed what one virtual machine can provide, another one is created to support it. When demand drops, the support machine is also dropped.
This is not the same as scaling the resources available to an existing machine - increasing CPU power, adding RAM or expanding hard disk capacity, for example. The major challenge with scaling a machine's available resources is that, as yet, it cannot be performed without restarting the machine.
In cloud terms, scalability can refer to the creation of additional machines. When people hear scalability however, it is typically the scaling of resources on existing machines of which they think. Hence, when the words elasticity and scalability are interchanged, a misunderstanding can be formed.
Which is better - elasticity or scalability?
Both elasticity and scalability are highly desirable under different circumstances.
When an application has been developed to be truly cloud-native, or cloud-aware, it can take advantage of the dynamically created machines that elasticity offers. These elastic applications can scale fluidly in-line with demand and provide a consistently good user experience in an extremely cost effective way. It is based on pay-per-use so you do not pay for resources you do not currently need but you can still meet rising demand. Under these circumstances, an elastic public cloud solution can be very advantageous.
The vast majority of applications, however, are not cloud-aware. This is particularly true of business process software. Most of these applications are coded to run on a single machine. If that machine receives new resources, the application can make use of them, but if a new machine is offered up, it cannot. Databases, currently, are also unable to make use of elastic capacity. If your applications fall in to this category, you need scalability, not elasticity.
Virtualising inelastic apps
When looking to host inelastic apps while offering a reliable user experience and having access to scalability that you can easily and affordably use, consider a private cloud solution.
private cloud is typically expected to be more expensive than public cloud alternatives. But when demand is relatively stable and the flexibility, in terms of capacity and commitment, of public cloud is no longer as beneficial there is a clear tipping point in private cloud's favour. Once you reach that tipping point the aggregate costs of public cloud's utility pricing frequently exceeds that of an equivalent private cloud platform.
Elasticity can rescue a business from unpredictable moments – for instance if the SaaS you’ve taken to market needs infinite capacity because no-one is sure how much is going to be sold – and is more likely to go upwards. Whereas scalability is a planned level of capacity – for instance the ability to cope if everyone is using that SaaS at the same time – and the ability to scale back down again when usage drops.
Decision-makers have to evaluate potential cloud solutions across a number of criteria. While cost, security and reliability are all important it is the ability to adapt that can be the most crucial which is why the concept of elasticity versus scalability needs to be clear in the mind. The question to ask yourself is, is there a business need for pre-planned increases in resource or is the ability to react to short-term and unforeseen additional requirements more of a driver? Short-term reaction or long-term planning - ultimately it is a public cloud versus private cloud discussion. In a private, secure environment it’s scalability that’s important for success.
As published in the latest edition of Cloud Hosting Magazine.