Running workloads to the cloud is easy. Running them in a cost-efficient way can be considerably more challenging. Here are tips on optimizing cloud costs without sacrificing performance or reliability.
Cloud Cost Optimization Challenges
For several reasons, it’s easy to spend more than necessary on cloud computing:
- Cloud providers don’t go out of their way to help you optimize your expenditures. They offer some cost monitoring and prediction tools, but they don’t help you find under-utilized services, for example.
- Spinning up new workloads in the cloud often takes just a few clicks. That’s part of what makes the cloud so powerful. But it also makes it easy to start workloads and forget about them--until your bill comes due.
- Usually, you are billed for cloud services on a periodic basis (like every month). You therefore don’t typically notice a spike in costs until they have already been incurred. In other words, there is no way (using native cloud provider tools, at least) to track expenses on a continuous basis in order to identify spikes in cost quickly.
Optimizing Cloud Spend
How can you address these challenges and ensure that your cloud-computing bill stays under control? Consider the following tips and best practices.
1. Use third-party cloud cost monitoring tools.
Cloud vendors might not be in the business of helping you spend less on their platforms, but third-party companies do offer these types of solutions. Their tools monitor your cloud workloads to identify unused resources (such as a database that is running but is not attached to any application). They can also make recommendations about how to “right-size” your workloads by, for example, selecting a virtual server instance that is less expensive but will still meet the needs of a given workload.
Some of these tools, such as Cloudability and Cleanshelf, are designed specifically for cloud cost monitoring and optimization. In other cases, APM vendors offer cloud cost monitoring as part of their feature sets; examples include SolarWinds and New Relic. (Not all APM platforms include cloud cost monitoring, and doing so is a relatively new trend among APM providers, but more seem to be jumping on this bandwagon.)
Third-party cloud cost monitoring tools usually cost money, but they can be a worthwhile investment for helping reduce your overall cloud bill.
2. Consider pay-per-use services (like serverless).
Most cloud services require you to pay on an ongoing basis for any workload that is running, even if you’re not actually using it constantly. You pay a monthly per-gigabyte fee for cloud storage, even if you only access that data a few times a year. You pay per the minute for cloud-based virtual servers that host your websites or apps, even if they sit idle some of the time.
But there are exceptions. Some types of services require you to pay only for the time that your workload is fully active. For example, consider serverless functions. With serverless, you upload code to the cloud, and your cloud provider will execute it on demand. However, you pay only when the code is actually running. Thus, you get the benefit of having your code be constantly available, without having to pay when the code is not being executed. This is more cost-efficient than paying for a virtual server that costs you money even when it is not serving any requests.
This is not to say that solutions like serverless will always save you money. You will need to weigh the various factors that affect the total cost of different services, as well as consider their performance advantages and drawbacks, to figure out which ones delivers the biggest bang for your buck. Still, migrating some workloads to pay-per-use services can be a good way to cut cloud costs.
3. Use tiered storage services to cut costs.
Most cloud providers now offer different “tiers” of storage. (Here are Azure's and AWS' offerings, for example.) The default tier guarantees you fast access to your data, but it also costs more money.
If you have data to store in the cloud that you don’t need to access frequently (which could be the case with archived data that you are only keeping around for compliance reasons, for example), consider using a lower-cost tier. You’ll sacrifice some performance, but you could reduce your storage bill considerably.
4. Be smart about using cloud regions.
Most cloud providers offer dozens of different “regions” for hosting workloads. Each region comes with its own pricing scheme for different services.
Many of us are tempted to run workloads in the cloud region that is geographically closest to us, which typically improves performance (because the number of milliseconds you have to wait to exchange data with a server located a hundred miles away is less than that for a server across the planet). Sometimes, the default strategy is also to replicate workloads across multiple cloud regions, in order to maximize availability.
There are often good reasons for doing both of these things. But they are not always strictly necessary. If you can stand to wait a few milliseconds longer to receive your data, consider hosting your workloads in a cloud region that is located farther from you. It might be a lot cheaper than using the closest region.
Likewise, if you can accept the risk of having a workload become unavailable in the event that one cloud region fails, you can save a lot of money by opting not to replicate workloads across multiple cloud regions. Downtime from major cloud providers is rare these days, and when it does happen, episodes are usually limited to a few hours at most. Determine which applications can tolerate this kind of downtime and which can't.
5. Establish a culture of cloud-cost awareness.
Finally, consider making cloud cost optimization a cultural priority for your organization. Make it clear to employees that avoiding unnecessary cloud expenditures is the job of everyone who launches or maintains workloads in the cloud.
This type of attitude is not typically part of organizational culture. After all, if your developers or IT admins spin up a virtual server for testing purposes and forget to shut it down for three months, the cost doesn’t usually come out of their salaries.
I’m not saying it should. But you can take steps to instill in employees an awareness of best practices to follow for optimizing cloud costs. You can also incentivize positive behavior on this front by, for example, offering an award for the department or developer group whose cloud bill drops the most over a certain period of time.