What is Cloud Waste? And why it is important for your company

I've been recently introduced to the concept of Cloud Waste. A concept that is taxing many companies severely; but that can be avoided by implementing simple, yet effective measures. According to devops.com, more than 17 billion USD is spent on cloud waste. This humongous number represents potential savings for companies of every level. Therefore, tackling it is imperative. 

In this article, we'll define Cloud Waste and present some steps that will help you minimize it.

The Cloud

If you are a user of one (or more) of the cloud services available (Azure, AWS, etc.) then you probably know that one of the main objectives of the usage of the cloud is the pay-as-you-go modality. This modality allows its users to pay only for the resources they use. So, for instance, let's consider the example depicted in Figure 1. We have a Java application that only needs 8GB of memory. In the on-premises implementation, our company could have acquired a 64GB server to run it. Disregarding virtual machines and other possible applications running on this server, it would mean that 56GB of memory is unused. We have a surplus of memory.

On the other hand, if we deploy the same 8GB application to the cloud, we could allocate exactly 8GB thus optimizing our usage of the resources and the costs incurred. There's no surplus memory.


Figure 1. On-premises and cloud implementation comparison.

With this comparison, the benefits of a cloud implementation with the pay-as-you-go modality are evident:

  1. From the financial perspective, we don't have to pay for more than they need. We can allocate precisely the resources we need and manage our costs efficiently.
  2. The surplus resources. acquired during an on-premises implementation, are subject to depreciation and need for maintenance, increasing thus the financial and technical burden on the company. On the other hand, cloud implementation allows us to increase/reduce the allotted resources with just one click. 
  3. If the resources needed by an application are previously identified, it can facilitate budgeting and minimize costs (such as electricity, hardware acquisition, installation, etc.).
Nonetheless, these benefits can be easily erased by careless operators or by your cloud users. What happens; for instance, when an idle machine is left working overnight? Or when your apps have over-allocated resources?

Introducing Cloud Waste

We'll define cloud waste as:

Cloud waste is the surplus resources allocated to an application that is not needed, but the company is still paying for them.

To understand this concept more clearly, consider Figure 2. In this example, an operator has assigned 32GB of memory to a Java application that only needs 8GB. Ends up; thus, with a cloud waste of 24GB. 

It is important to note that Cloud Waste is not limited to RAM or operational memory; but the concept also extends to comprise computational power, storage capacity, and database instances, among others.

Figure 2. Cloud waste.

From the figure, it is easy to infer that poor allocation of resources is one of the main causes of Cloud waste. It is also easy to see that we're back to the same paradigm we had with an on-premises implementation: we have more resources than we really need. It's a cycle that completely obliterates the purpose of cloud implementations. How can we avoid it then?

Recommendations

Here are a few recommendations we have compiled to reduce Cloud Waste in your organization.
  1. The golden rule, in this case, is: "You cannot manage what you cannot measure", so measure, measure, MEASURE! You can monitor the usage of resources using tools such as Grafana and Prometheus. If you are using Spring Boot, enable the actuator package. Last, do not disregard the metrics provided by your Cloud provider
  2. Remember to turn off any idle or inactive machines. For this, two kinds of monitors can be in place: (a) one that notifies individual users about the inactive status of their machines or (b) a robot that disconnects and turns off all dormant machines after a given period of time of inactivity has elapsed.
  3. Assign cloud resources appropriately. This is the key to minimizing cloud waste. Your operators should know how many resources each application needs and how critical it is to the business. 
  4. Use serverless. Serverless is a development model that delegates the work of provisioning, maintaining, and scaling the server infrastructure to the Cloud provider. Hence, serverless apps respond to demand and automatically scale up and down as needed. 
By implementing these measures, we hope you can minimize cloud waste in your organization or even in your own personal projects. 

Comments