Automation is a great tool. Instead of solving a problem once, you can automate a solution to automatically adapt to changing needs without requiring people.
Cloud scalability is the best example of this. We no longer need to manually provide limited static resources such as storage and computation. Instead, we set up automation (usually provided for us) that can use the required number of resources without developers or architects even thinking about it.
The number and types of automated scaling mechanisms vary widely, but without a server is the best example of automated scaling. As server-free computing is now part of the standard infrastructure, such as storing and providing computing resources, it is now part of containers, databases and networks. Many resources that were previously statically configured can now “automatically” configure and provide the exact number of resources needed to do the job, and then return them to the pool after use.
It will soon be easier to list the number of non-server-free resources, given that cloud providers are serverless and cloud-free cloud services are increasing every month. The serverless computer market was estimated at $ 7.29 billion in 2020. In addition, it is projected to maintain a combined annual growth rate of 21.71% for the period from 2021 to 2028. Without a server, it is expected to reach a value of 36.84 billion dollars by 2028.
The question then is, are we always cost-effective and fully optimized in terms of cost and resource utilization, leaving the scalability to automated processes, such as automatic scaling without a server and in the cloud?
Of course, this is a complex issue. Rarely is there a right path, and automation around scalability is no exception.
The abandonment of automated scalability, at least “always” attaching it to cloud-based systems to ensure they never run out of resources, is that in many situations systems operations will not be cost-effective and will be less than effective. For example, an inventory control application for a retail store may need to maintain 10 times the amount of processing during the holidays. The easiest way to ensure that the system will be able to automatically provide the extra capacity it needs during seasonal peaks is to use automated scaling systems, such as serverless or more traditional automatic scaling services.
The problems come with considering cost optimization for this particular solution. Let’s say an inventory application has built-in behavior that scaling automation finds it needs more resources to compute or store. These resources are provided automatically to support the additional expected load. However, for this particular application, the behavior that causes the need for more resources does not actually need more resources. For example, a momentary jump in CPU usage is enough to run 10 additional computing servers that come online to maintain resource anticipation, which is not really necessary. In the end, you pay 5 to 10 times more for resources that are not actually used, even if they are returned to the resource pool a few moments after they are provided.
The main point is that the use of automatic scaling mechanisms for the purpose of determining the need for resources is not always the best way. Leaving scalability to automation means that the probability of providing too many or too few resources is much higher than if the resources are provided for the exact needs of the application.
So we can turn on automatic scaling, let the cloud provider decide, and end up spending 40% more, but never worry about scalability. Or we can do more detailed systems engineering, compare the resources we need, and provide those resources in a more accurate and cost-effective way.
There is no answer here. There are some systems that I build that are much more reliable and cost effective with automated scaling. They are often more dynamic in the use of resources and it is better to try to maintain a process.
But we leave money on the table for many of these uses. Most system capacity calculations are well understood and so the number of resources required is also well understood. In these cases, we will often find that if we regain control over the allocation and misappropriation of resources, we will eventually have more cost-effective approaches to deploying cloud-based applications that can save hundreds of thousands of dollars over the years. Just saying.
Copyright © 2022 IDG Communications, Inc.