I\'ve heard many people using both terms interchangeably. However, in my opinion there is difference between them:
SCALABILITY - ability of a softwa
Scalability is the ability of the system to accommodate larger loads just by adding resources either making hardware stronger (scale up) or adding additional nodes (scale out).
Elasticity is the ability to fit the resources needed to cope with loads dynamically usually in relation to scale out. So that when the load increases you scale by adding more resources and when demand wanes you shrink back and remove unneeded resources. Elasticity is mostly important in Cloud environments where you pay-per-use and don't want to pay for resources you do not currently need on the one hand, and want to meet rising demand when needed on the other hand.
In terms of AWS:
Scalability refers to the ability for your resources to increase or decrease in size or quantity.
There's a lot of infrastructures involved to make something like this happen, so it's no easy task.
Many of the services in AWS are scalable by default, which is one of the reasons that AWS is so successful.
Scalability is pretty simple to define, which is why some of the aspects of elasticity are often attributed to it.
Elasticity is the ability for your resources to scale in response to stated criteria, often CloudWatch rules.
This is what happens when a load balancer adds instances whenever a web application gets a lot of traffic.
Scalability is required for elasticity, but not the other way around.
Not all AWS services support elasticity, and even those that do often need to be configured in a certain way.
It might seem redundant, but the services in AWS that start with "Elastic" often support elasticity.
--
In resume, Scalability gives you the ability to increase or decrease your resources, and elasticity lets those operations happen automatically according to configured rules.
From my limited understanding of those concepts, an example:
Say we have a system of 5 computers that does 5 work units, if we need one more work unit to be done we we'll have to use one more computer. That is a scalable system but it is not elastic. Somebody going to have to go and get that other computer. Also, if a new computer is purchased and the extra work unit is not needed any more, the system get stuck with a redundant resource.
Now, lets say that the same system uses, instead of it's own computers, a cloud service that is suited for it's needs. Ideally, when the workload is up one work unit the cloud will provide the system with another "computing unit", when workload goes back down the cloud will gracefully stop providing that computing unit. That is a situation where a system is both scalable and elastic.