What is the difference between scalability and elasticity?

Miroslav Dzhokanov picture Miroslav Dzhokanov · Mar 6, 2012 · Viewed 82.5k times · Source

I've heard many people using both terms interchangeably. However, in my opinion there is difference between them:

SCALABILITY - ability of a software system to process higher amount of workload on its current hardware resources (scale up) or on current and additional hardware resources (scale out) without application service interruption;

ELASTICITY - ability of the hardware layer below (usually cloud infrastructure) to increase or shrink the amount of the physical resources offered by that hardware layer to the software layer above. The increase / decrease is triggered by business rules defined in advance (usually related to application's demands). The increase / decrease happens on the fly without physical service interruption.

Again, scalability is a characteristic of a software architecture related to serving higher amount if workload, where elasticity is a characteristic of the physical layer below, entirely related to hardware budget optimizations.

Have I got the difference between these two non-functional architectural characteristics right? May someone give specific examples, so we could draw more distinctive border between these two terms?

Answer

Arnon Rotem-Gal-Oz picture Arnon Rotem-Gal-Oz · Mar 7, 2012

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.