While lowering IT expenses is the prime motivation for companies moving to the cloud, the lack of a cloud cost management strategy can cause cloud costs to spiral out of control. The complex infrastructure, disjointed tools from multiple providers, lack of unified dashboards, and long cloud bills make it harder to find a place to start reducing costs.
82% of respondents have incurred unexpected costs in their cloud bills, Virtana’s survey of 350 IT Professionals. Constant monitoring of costs and budgeting is needed to keep these costs in check.
What is the trend?
For 74% of businesses, cloud costs have risen in the last twelve months, with the average increase coming in at 66%. (CIVO research)
While the current spending is over budget by around 23%, the overall cloud spending will continue to rise for the next few years. (Flexera 2020 State of the Cloud Report)
The ongoing price increases by major cloud providers will also add to this cost. Most SaaS businesses will feel its impact.
In this article, we will look at some unexpected cloud costs in cloud provider-agnostic terms, along with specific examples and ways to save on these expenses.
What are unexpected/hidden costs?
Any cost outside your initial cloud bill estimates, complicated to calculate, and hard to predict falls under this category of an unexpected cost. 34% of companies find it difficult to calculate how much the cloud provider will charge them next month.
The following factors are often overlooked and can add up significantly to your cloud bill. The recent CIVO study shows the most common areas for unexpected cloud costs.
Data transfer cost is the cost associated with data Egress - transferring the data stored on your cloud. The table below from AWS EC2 data transfer pricing shows how the price of transfer IN is $0, while transfer OUT has a high cost. The costs aren’t easy to follow either. Since each service you use has a different model of pricing for data transfer, and it also varies by the region you deploy your resources.
|Data Transfer IN To Amazon EC2 From Internet||Pricing|
|All data transfer in||$0.00 per GB|
|Data Transfer OUT From Amazon EC2 To Internet|
|First 10 TB / Month||$0.09 per GB|
|Next 40 TB / Month||$0.085 per GB|
|Next 100 TB / Month||$0.07 per GB|
|Greater than 150 TB / Month||$0.05 per GB|
Additional transfer costs to keep in mind:
- Inter availability zone and inter-region transfer costs
- NAT gateway hourly costs in your VPC
Even storage instances like S3 and GCS have egress costs. This can be reduced by using an alternative like Cloudflare R2 which has no egress costs and is fully compatible with S3 APIs. Depending on your usage, you could also consider CDN options such as AWS CloudFront which has a forever Free Tier with 1TB free transfer out each month. This will help you save more.
Many online businesses operate globally and need to leverage the benefits of multiple regions; thus, consolidating regions to reduce costs is no longer a viable option. Consolidating would mean sacrificing end-user experience and may not even be possible with businesses operating in regions with security and compliance requirements, such as the EU.
The below image shows how complicated the data transfer costs for a basic cloud setup can get. This challenge only increases as you scale your infra. And, though AWS customers receive 100GB of data transfer out to the internet free each month, running over the limit is relatively easy.
Overprovisioning refers to buying more of something than what is actually needed, leading to unused instances. Due to the cloud’s ease of use and elasticity, teams might end up subscribing to more services to increase the application’s performance or adding more capacity “just in case”. This, done repeatedly and without paying attention to the billing, can result in a steep cost increase.
Scaling down when there is less usage is important to stop overprovisioning. It might not come easily to those who are new to the cloud. Ensure you terminate your resource as soon as you finish using them. Note: this has to be done across all your regions.
Another way to look at this mismatch between infra provisioned and utilized is underutilization.
While monitoring your CPU usage, bandwidth, and I/O, look for data points that indicate low data usage. These indicate underutilized servers that could be scaled down or shut down.
Suppose you purchased Reserved Instances (RIs) to save on pay-as-you-go costs but have lower than anticipated usage. Consider restructuring the resources into the required size or selling those instances in the AWS marketplace. This can save you from being stuck in a money pit for the 1-yr or 3-yr term of the Reserved Instance. You can also consider purchasing shorter-term RIs from third-party vendors, which often come at a lower price.
This is an issue if you manually manage the allocation and have disabled any autoscaling. Say your resources are built to handle your usual traffic of about 20K users, and you have a surge in traffic (say 50K users), and many users will be left with broken or unresponsive sites/apps. Although this reduces cloud cost, it leads to a poor end-user experience, which in turn affects the conversions and the bottom line.
A simple way to solve this would be by enabling autoscaling, using fully managed services like GKE Autopilot, or serverless offerings like AWS Lambda.
Location of service
This factor is different from the transfer cost discussed above. Here, the price of cloud instances of most cloud services varies by region. There are strategies to manage the cost of storage and computing by region. For example, when it comes to choosing storage, depending on how frequently you use it, you can select longer-term options that cost less. In simple terms, the fewer times you have to access your store, the cheaper storage option you can choose.
Table comparing Google Cloud SQL prices based on region.
|Price (USD) (Hourly)||Hong Kong (asia-east2)||Los Angeles (us-west2)||Iowa (us-central1)|
|vCPUs||$0.0619 per vCPU||$0.0495 per vCPU||$0.0413 per vCPU|
|Memory||$0.0105 per GB||$0.0084 per GB||$0.007 per GB|
|HA vCPUs||$0.1238 per vCPU||$0.0991 per vCPU||$0.0826 per vCPU|
|HA Memory||$0.021 per GB||$0.0168 per GB||$0.014 per GB|
When deleting storage like EBS volumes, it is easy to forget their backups. Any remaining snapshots of deleted volumes are called “Orphaned snapshots”. Maintaining snapshots of deleted resources costs can accrue unnecessary charges.
|EBS Snapshots Storage Pricing|
|EBS Snapshots Restore Pricing|
|Archive||$0.033 per GB of data retrieved|
Other than storage volumes, even compute instances can end up orphaned and raise your bill. Unused ELBs, VPCs, Gateways, Elastic IPs, and other network resources that cost money should be cleaned up after use.
Using infrastructure as code helps reduce costs, have a consistent infrastructure, and reduce the extra cost due to orphaned instances.
One size does not fit all
Dev and application teams can become habituated to a particular service and continue using it for future developments. Without proper research, they would miss out on cheaper, better, and more suitable alternatives. Assessing each service’s contract terms, service levels, and features, and evaluating what’s best for the given implementation is a process in itself.
If there is uncoordinated adoption across your organization, different teams might end up with various providers for tackling similar challenges. This can add up to multiple costs for a long time. And down the line, when there is a need to consolidate providers, it can be challenging to get them to work together.
Changing application needs also have to be kept in mind. With constantly evolving dynamics like usage patterns, escalating performance demands, and compliance requirements, your business might have to update your stack to meet the needs cost-effectively.
There is a need for a structured, transparent, and coordinated system and a disciplined approach to be put in place to help teams find the best-suited tools that also save costs for the business.
The ideal solution you found in 2020 might not be the most cost-effective today. Due to cheaper alternatives emerging, change in pricing, or other reasons. Moving to another cloud is super expensive, so you end up paying the price and looking for other ways to optimize and manage your costs.
While there is no easy way out of this, and it is not feasible to keep moving from one cloud to another, the right way to deal with it is to have a structured, coordinated system to review and discuss options. The readiness of your talent to adapt to newer tools clouds is another thing that comes in the way.
Note: Vendors are always going to push their own services over competitors. Evaluate them based on your requirements and keep an open mind.
Most businesses end up using hybrid or multi-cloud solutions. However, there is little communication between the different teams. This siloed approach doesn’t work in the long run in terms of both knowledge and cost-effectiveness.
Tools to help you take back control of your costs
- Open source tools like: infracost.io, opencost, and kubecost are also great options to reduce cloud costs.
- Cast.ai helps companies save on their Kubernetes bills. It is available for AWS, GCP, and Azure. They provide a free tier and transparent subscription model for the rest of their pricing.
- Argonaut provides visibility into cost when provisioning and running infra.
- Finout brings your cost of cloud service provider, cost of Snowflake, and Datadog into one dashboard. It helps in monitoring, managing, and reducing your cloud bill.
- Zesty automates cost optimization for EC2 Reserved Instances and Cloud storage with its autoscaler. They have freemium, pay-as-you-go, and subscription pricing models.
- Virtana optimize provides bill analysis and cost saving dashboard. It is suitable for hybrid use cases and has a cloud migration solution.
Now that you are aware of the eight common hidden cloud costs, start saving by following these four steps.
- You’re already doing FinOps. Try out the tools mentioned to gain more visibility into your costs.
- Implement/revisit your software review process to keep cost in mind.
- Prepare for higher costs in the future.
- Clean up your unused resources today.
At Argonaut, we enable companies to set up and manage infra, deploy and run multiple apps, and provide a view of cloud infra costs using infracost.io. Get started here.