As great as cloud computing is, there is huge room for improvement.
Cloud computing has been justifiably lauded for the flexibility it affords businesses. Your company needs more compute power for a given project? Go for it. Memory is running low? Add more as requirements change. And the business can scale out all these resources without building more of its own data centers or putting more servers and storage on its capex budget.
And yet, because of the way most cloud providers package up computing power and memory—the industry often refers to these bundles as “instances” or “virtual machines”— cloud computing is neither as easy nor as flexible as it could be for customers. The truth is that cloud services can be— and in one case already are —far more agile, flexible, and affordable than what most traditional cloud providers offer.
Those popular, first-generation cloud providers offer preset bundles of X number of processors with Y gigabytes (GB) of associated memory, and they make those bundles fairly static, which is one reason they are often called “fixed shapes.”
As an example, one large provider offers an instance pairing 2 processors (CPUs) with 16 GB of memory. If the customer ends up running a memory-intensive application, it will want to add more memory to the existing instance. Unfortunately, that is not possible under this model. Instead, to get more memory, the customer would have to choose a different fixed shape with more compute cores, pay for 4 CPUs to get 32 GB of memory or 8 CPUS to get 64 GB of memory. In other words, the customer ends up paying for more CPU power than it needs just to get the requisite amount of memory.
Of course, that’s fine if the customer doesn’t mind footing the bill for idle resources, but who wants to do that? And, that sort of blows the initial promise of pay-as-you-go cloud computing out of the water.
Or the customer can try to stick with 2 CPUs and 16 GB of memory, run out of memory, and either let the application grind to a halt or then upsize to the next instance type, so we are back to the first scenario.
Another option is to completely rewrite the application to go “serverless” but that, of course, requires a significant amount of work.
Wouldn’t it be far more productive if customers could add small increments of memory to their existing CPUs? Or attach more processing cores to a given pool of memory? In either case, the customer pays the difference for what they actually need without funding resources they don’t.
If businesses really want true flexibility in cloud, they should check out how these variably-sized instances can both boost the performance of running their applications while cutting costs.