The idea of dynamic allocation of cloud resources solves a number of very important problems for enterprise IT. One of the best ways to illustrate this is by looking at a very basic idea: that cloud services can be elastic, or in other words, that they can dynamically provide resources in real time or near real time.
In the advent of the cloud several years ago, we heard a lot about on-demand resources and rapid elasticity. The cloud was amazing partly for the sole reason that companies could simply buy subscriptions for hardware and software resources, instead of physically building and maintaining servers and other hardware on-premises. That opened the door to all sorts of new capabilities and opportunities for business in nearly every industry.
After a massive sea change toward cloud computing, companies were left to look at the new frontier, and how to make things even better. What many of them have found is that while you can provision and de-provision resources through the cloud, it still doesn't solve the problem of resource allocation.
Mor Cohen writes a very instructive essay on this concept on the Turbonomics blog – the idea is that in a very broad sense, dynamic provisioning isn't good enough. Developers are still allocating larger amounts of resources than one application would need at any given time. Allocated resources are at least temporarily tied up, and cost is tethered to performance. Cohen talks about the use of the smallest instance type for an application, and some of the problems that crop up in that kind of scenario, while also pointing out that developers often allocate these resources in order to achieve goals written into a service-level agreement. They need a benchmark standard for performance, but to get there, they have to allocate certain resources that are likely to be wasted in the long run.
Another way to put this is that certain dynamic and elastic resources aren’t inherently fully dynamic and elastic barring some additional controls and management. One example discussed by many experts is the ever-popular AWS EC2 or Elastic Compute Cloud service. The bottom line is that the service isn't really fully elastic if the customer is not looking in detail at things like availability zones. Multiple zones increase costs; a single zone increases risk. So it's not as easy as just "ordering what you need." Companies have to have internal teams to really handle whatever they’re provisioning through the cloud, or it's not going to be as fully elastic as one might expect.
In general, dynamic allocation helps solve a lot of the problem of cost versus performance. Third-party tools and systems can help to automate a lot of the micromanaging work that goes into making AWS EC2 or any other aspect of a software architecture really fundamentally efficient, and not just efficient in word or name only. Yes, you can have a cloud subscription for any given service, but if it surpasses a threshold, it's suddenly more expensive. Yes, you can have a subscription service that you can drop anytime, but if you don't drop it, you’re still paying the money. The true goal is to achieve the "desired state" where an IT system is perfectly balanced at any given time, while those needs will change in real time from minute to minute.