Over the years, there has been an exponential adoption of Cloud services as organizations seek to tap into the numerous benefits offered by the Cloud to streamline their businesses. Most businesses have either integrated their on-premise infrastructure with the Cloud or shifted their core services to the cloud altogether.
Although the Cloud provides a pay-as-you-go model whereby you only pay for what you use, keep in mind that the goal of the Cloud vendor is always to maximize its revenue from the services offered.
Cloud vendors invest billions of dollars in setting up massive data centers across various regions, and they do not intend to give that away cheaply. It’s surprising how this is not apparent to customers and businesses.
As a customer, your goal is to get stellar cloud services at the least possible cost.
Lack of Clarity Around Pricing
In on-premise environments, the cost of setting up the entire infrastructure and deploying applications is already known by the management team. Operation and development teams usually formulate a budget and present it to the CFO for approval. Simply put, you know exactly what you are going to spend on your infrastructure.
Cloud pricing costs can be quite obscure especially for users who have not spent significant time understanding the cost that each cloud service attracts.
Pricing models from major Cloud providers such as AWS and Microsoft Azure are not as straightforward as compared to on-premise costs. You simply won’t get a clear mapping of exactly what you will pay for the infrastructure.
Let’s take an example of deploying a serverless website using AWS Lambda.
We have the front end of the website (HTML, CSS, and JS files) being hosted on an S3 bucket while leveraging Cloudfront caching to accelerate content delivery. The frontend sends requests to Lambda functions through the API gateway HTTPS endpoints.
The Lambda functions then process the application logic and save the data to a managed database service such as RDS (a distributed relational database system) or DynamoDB (non-relational database).
However straightforward setting up the website appears, you will be consuming four AWS services. There’s the S3 bucket for storing the website’s static files, CloudFront CDN for accelerating the website’s content delivery, the API Gateway for routing HTTPS requests, and finally RDS or DynamoDB for storing data. Each of these services has its own pricing model.
The billing incurred for storing objects in S3 buckets depends on the size of the objects, the duration stored, and the storage class of the S3 bucket. There are 6 storage classes associated with the S3 bucket, each with its own pricing model. Here’s a complete breakdown of the pricing model for various S3 storage classes.
CloudFront CDN offers you free 50GB of outbound data transfer for the first 1 year and 2,000,000 HTTP or HTTPS requests free for each month for a duration of 1 year. Thereafter, the costs differ per region, per tier, and per-protocol (HTTPS rakes up more charges than HTTP).
I could proceed to API Gateway, but I’m sure you get the point. Pricing models for various services can get complex depending on multiple factors. Thus, conducting due diligence on various Cloud service costs is prudent before setting out to deploy your resources on the cloud.
Sadly, for some organizations, development teams embark on a project without paying attention to the pricing models for various services and which will enable them to budget accordingly. The pressing need is usually to deploy applications by the set deadline and to go live.
Budgeting for cloud services is usually not well thought out, the end result of which is raking up enormous cloud bills that can threaten to bulldoze the company out of business. Without a clear understanding of the various Cloud service plans & costs, your budget can easily spiral out of control.
In the past, Giant corporations have found themselves in murky waters with gut-wrenching cloud bills.
In the fall of 2018, Adobe raked up a whopping $80,000 a day in unexpected cloud charges on a project that the development team was running on Azure, a cloud computing platform by Microsoft.
It wasn’t until a week later that the oversight was discovered, and by that time, the bill had snowballed to well over $ 500,000. In the same year, Pinterest’s Cloud bill went up to as high as $ 190 Million, which was $ 20 million more than it was initially projected.
A clear understanding of Cloud service costs is therefore essential in order to avoid the piling Cloud costs which can easily run you out of business. For this reason, cloud billing and budgeting should be a top priority before putting setting out to provision your resources. Remember that at the end of the day, your goal as a customer is to spend as little as possible while still enjoying the services that the cloud has to offer.
Optimizing Cloud Costs – Best Practices for Cost Management
Although Cloud computing provides you with the scalability you need alongside the assurance of reduced operational costs, the truth is most vendors such as AWS and Microsoft Azure will charge you for the resources that you order – whether you are using them or not. This implies that idle resources will still rake up unwanted bills which will significantly spike your budget.
Cloud optimization seeks to lower the overall cloud expenditure by identifying and eliminating idle resources, and ensuring that you order exactly what you need to avoid resource wastage.
Here are some of the best practices that will help you manage your Cloud costs and work within your budget.
1. Locate and Terminate Unused Resources
One of the easiest ways of mitigating snowballing cloud costs is finding and turning off or terminating unused resources. Unused resources often come about when a developer or sysadmin deploys a virtual server for demo purposes and forgets to turn them off.
Additionally, an administrator may fail to remove attached block storage such as EBS volume from an EC2 instance after termination. The end result is that the organization runs into hefty Cloud bills for unused resources. The workaround to this problem is to map out your infrastructure and terminate all unused cloud instances.
2. Resize / Right-Size Cloud Resources
Another factor that drives up cloud bills is overprovisioning of resources such that you end up with idle resources. Take a scenario where you are deploying a virtual server for hosting an application that only requires 4 GB of RAM and 2 vCPUs. Instead, you opt for a server with 32GB of RAM and 4 CPUs. This implies that you end up getting billed for a great deal of idle & unused resources.
Since the cloud gives you the ability to scale up or scale down the best strategy is to provision only what you need and later scale up in response to a change in demand for resources. Don’t overbuy your resources when you can easily scale up :-)
3. Leverage Cloud Cost Calculators
Mainstream providers such as Google Cloud, AWS, and Azure offer intuitive calculators that provide you a with rough estimate of your monthly Cloud bills. AWS provides a simple calculator that gives you insights into your monthly cloud estimates. The azure calculator is even more elegant and intuitive.
4. Enable Billing Alerts/Alarms
Major cloud vendors such as AWS and Azure provide you with a billing and cost management dashboard that helps you keep track of your Cloud expenditure. You can enable billing alerts when your expenditure is approaching your prefined budget so that you can make the necessary adjustments to optimize your bills.
Additionally, consider reviewing your resource usage using built-in monitoring dashboards offered to probe for signs of underutilization which will help you scale down your cloud resources to cut costs.
The cloud provides huge potential in taking your business to the next level. However, spending on cloud resources that are idle or unused can pose a huge setback to your business.
For this reason, it’s recommended for operation teams to carefully study the pricing models of the resources they intend to deploy and employ the optimization measures we have outlined in order to keep their cloud expenditure in check.