This elastic nature, therefore, is something that is built into the cloud at the software stack level, not the hardware.Best cloud computing example: The classic promise of the cloud is to make compute resources available on demand, which means that theoretically, a cloud should be able to scale as a business grows and shrink as the demand diminishes. Consider here, for example, Amazon.com during Black Friday. There's a spike in inbound traffic, which translates into more memory consumption, increased network density, and increased compute resource utilization. If Amazon.com had, let's say, 5 servers and each server could handle up to 100 users at a time, the whole deployment would have peak service capacity of 500 users. During the holiday season, there's an influx of 1,000 users, which is double the capacity of what the current deployment can handle.
If Amazon were smart, it would have set up 5 additional (or maybe 10) servers within its data center in anticipation of the holiday season spike. This would mean physically provisioning 5 or 10 machines, setting them up, and connecting with the current deployment of 5 servers. Once the season is over and the traffic is back to normal, Amazon doesn't really need those additional 5 to 10 servers it brought in before the season. So either they stay within the data center sitting idle and incurring additional cost or they can be rented to someone else.
What we just described is what a typical deployment looked like pre-cloud. There was unnecessary physical interaction and manual provisioning of physical resources. This is inefficient and something that cannot be linearly scaled up. Imagine doing this with millions of users and hundreds or even thousands of servers. Needless to say, it would be a mess. This manual provisioning is not only inefficient, it's also financially infeasible for startups because it requires investing significant capital in setting up or co-locating to a data center and dedicated personnel who can manually handle the provisioning.
This is what the cloud has replaced. It has enabled small, medium, and large teams and enterprises to provision and then decommission compute, network, and memory resources, all of which are physical, in an automated way, which means that you can now scale up your resources just in time to serve the traffic spike and then wind down the additional provisioned resources, effectively just paying for the time that your application served the spike with increased resources. This automated resource allocation and deallocation is what makes a cloud elastic.