I believe that it’s important to understand terms. And to understand terms scalability and elasticity in cloud computing context, I did a little research on what is the difference between scalability and elasticity when used in context of cloud computing.
e·las·tic·i·ty: The ability of something to change and adapt; adaptability [Dictionary]
scal·a·ble: Able to be changed in size or scale [Dictionary]
So my first step was to lookup meaning of each word in dictionary and honestly, that did helped me understand the meaning of each word but I was not able to appreciate the use of each word in cloud computing terms. I researched a little more came to a conclusion that
- When we talk about elasticity – it is from cloud platform perspective. By this I mean, it is the characteristic of the “cloud platform” that allows end users to spawn resources in no time. For instance, with a click of a mouse, end users are able to spawn a 10 GIG SQL Azure database. And this characteristic that allows end users to QUICKLY provision resources is what is referred to as elasticity. And alternatively, De-provisioning is “elastic” too. From, a cloud vendor perspective, these means they also should report usage to the end-user and charge end-users for only what they use. It’s important as one of the important characteristic of cloud is that it is supposed to be “Measurable” by end-user
- Scalability: It refers to ability of an “application” (NOT cloud) to handle INCREASED workload. Traditionally, to meet increased workload, hardware was thrown at the problem. But it had it’s own set of limitation that it was not infinitely scalable because hardware could be upgraded to certain limit only. Now in cloud computing era, we can provision as many resources as we need – but it is important to architect the application in a way that embraces “scalability”. So when you deploy an app on a cloud platform, it does NOT “scale” automatically and the app should be architected to embrace scalability – On other hand, you are guaranteed “elasticity” by the cloud vendor.
Let’s take an example.
Suppose I have an app and I wish to deploy it on Windows Azure. Now, it’s my responsibility to architect app to embrace scalability by making my application stateless, etc, etc. Now once I have architected my app to embrace scalability – I deploy it on Windows Azure. And here, Windows Azure gives my app the “elasticity” it may need. That means, I can provision/de-provision resources at my will.
Thus, In cloud computing,
Scalability ≠ Elasticity
Thank you for the post. And i also believe that we should put effort in differentiating definitions. Good work!
I am glad you liked it.
you could have listed the differences in a two column format. It would have been more convenient to readers.
Thanks for the suggestion. Next time, when i do a comparison – i would blog it in two column format.
Thanks for differentiating as it gets confusing sometimes.
no problem.
Excellent post!!! Keep it up.
Thank you sir
many thanks for ur post, I was interested to know the difference
I am glad that the post was helpful.
I really enjoy the post.Much thanks again. Awesome.
This is an interesting discussion… so does Cloud possess the feature of ‘scalability’? – I assume that the context you are speaking is with respect to IaaS, if I am not wrong. Nevertheless the question still stands as to which type offers ‘scalability’ feature – SaaS? Will be happy to hear your suggestions…
Cheers
Ash
you are right. I have written this post with IaaS and PaaS in mind. In SaaS, you do not worry about scaling apps – the SaaS vendor does and you pay for what you use.
I could wrong be wrong as well in understanding the theory… which is interesting for me!!!
You also asked: “Nevertheless the question still stands as to which type offers ‘scalability’ feature – SaaS?” . Ans: can you please expand your question because i not able to figure out exactly what you mean. sorry for that. In general, the conclusion of the blog post was: “cloud” is “elastic” and “apps” are “scalable”.
Yes, the later part of your first reply has the answer to the question in your second reply. To be a little more specific in my question with view to add clarity, you said
Cloud (IaaS in this case) is elastic – completely agreed
Apps (SaaS in this case or probably any application) is scalable – agreed to this also
Correct me if I am wrong,
When referring to IaaS, we say we can scale up and down based on our demand. So this is not referred to as scalability but elasticity – is this your conclusion??
Interesting Q.
[rephrasing your statement and adding a comment]
Rephrasing: When referring to IaaS (/PaaS), we say we can scale up and down (apps/unit of deployment) on demand.
Comment: So that means that apps/unit-of-deployment are being scaled up and down by leveraging the elasticity of the cloud (IaaS/PaaS)