Scalability is the ability of a system to handle the increased load on its current
hardware and software resources. In a highly scalable system it is possible to
increase the workload without increasing the resource capacity. Scalability
supports any sudden surge in the demand/traffic with current set of resources.
Elasticity is the ability of a system to increase the workload by increasing the
hardware/software resources dynamically. Highly elastic systems can handle
the increased demand and traffic by dynamically commission and
decommission resources. Elasticity is an important characteristic of Cloud
Computing applications. Elasticity means how well your architecture is
adaptable to workload in real time.
E.g. If in a system, one server can handle 100 users, 2 servers can handle 200
users and 10 servers can handle 1000 users. But in case for adding every X
users, if you need 2X the amount of servers, then it is not a scalable design.
Let say, you have just one user login every hour on your site. Your one server
can handle this load. But, if suddenly, 1000 users login at once, can your
system quickly start new web servers on the fly to handle this load? Your
design is elastic if it can handle such sudden increase in traffic so quickly.