Not all folk wisdom is created equal, even when it comes to cutting cloud costs. How can you save money on Azure the right way? Which commonly touted tips should you take with a grain of salt? We asked Azure MVPs Andrew Connell, Chris Johnson, and Jussi Roine to give us the lowdown.
In a hurry? Scroll down for the TL;DR
Don't: restrict how people can use Azure
"People seem to think that we cut cloud costs by not using the cloud", says author Jussi Roine (@jussiroine) when asked about the worst ways he's seen people go about saving money on Azure.
Chris Johnson (@c_f_johnson), one of the hosts of the Microsoft Cloud Show podcast, also feels that this type of advice—"reduce what your developers can create, and you'll reduce your cost"—gets thrown around far too often. "To me, that just feels like you're limiting [developers'] creativity", Johnson says. "It goes against what the cloud is all about".
So why do some organizations insist on restricting what their teams can do with Azure? It's not that they want to hinder developer freedom, Roine believes—more often than not, he says, "it's a matter of sunk cost: people think, let's use our existing data center investments".
Don't: be reactive
For Andrew Connell (@andrewconnell), Johnson's Cloud Show co-host, the worst way to go about cutting costs is to do so reactively, rather than by considering all your options carefully from the get-go.
For example, shutting down VMs that aren't in use might offer some short-term rewards, but it's far from the most efficient way to unlock real savings. "It's true—you can save money like that", says Connell, "but it feels like kind of a low bar."
The better approach, in his opinion, would be to consider the purpose of each VM and make more informed decisions about their size and specs from the start. "Maybe you'd be better off with a smaller VM and letting it run for a bit longer", he suggests, "or maybe you should take a look at some of the special use case VMs".
Do: choose VM sizing carefully
"I think the best-kept secret in Azure is the burstable virtual machines", says podcast host Chris Johnson. "You can get B-series machines for about half the price of a regular machine", he says, which provides developers with a flexible way to get the compute power they need at a fair price.
Andrew Connell agrees with his co-host, saying that many people simply purchase unnecessarily large VMs upfront.
Once again, habit is likely the culprit: back in the days of on-prem, you'd be far better off overestimating the size of your datacenter equipment rather than underestimating and ending up unable to support critical processes. In the cloud, however, that reasoning doesn't hold up.
"Just go a little bit smaller on your VMs, and boost them up when you end up needing a bigger size", Connell summarizes.
Optimize your Azure costs the easy way
Free 15-day trial for big Azure spenders. Free forever for everyone else!
Do: reuse rather than recreate
Another way Connell sees people overspending unnecessarily is when they create too many new resources from scratch instead of thinking about opportunities to reuse existing assets. "When people create web apps, they tend to spin up more and more App Service Plans," he says. "They do it for each one of their different web apps, when they really don't need to—they could be reusing stuff".
In addition to App Service Plans, Connell cites Azure Functions as another area where it's easy to get carried away with resource creation. "People will create these Azure functions and put them in separate applications," he says, "instead of trying to consolidate everything and maybe getting a bigger VM".
Recommended read: From the dev team: Forecasting Azure costs with Facebook Prophet, Docker, and Terraform, by Benoit Doyon
Do: embrace the serverless approach
For Jussi Roine, adapting existing processes to the cloud is essential for achieving a more cost-effective use of Azure. He points to familiarity as a commonly overlooked barrier to greater cost savings, saying that people tend to go with the things they're used to. "That would be virtual machines typically, or SQL databases either in a VM or the hosted version".
So what should you be using instead? "To me", says Roine, "the best-kept secret is that you can leverage a lot of the serverless features for a fraction of the cost you'd pay for a virtual machine".
Serverless computing definitely has massive potential for cost savings, as you only pay for a serverless app when it's running. For a detailed look at how Azure calculates the cost of a serverless app, I highly recommend reading this fantastic write-up by Burke Holland for the Dev.to community.
Do: make governance a priority
At the end of the day, though, no shortcut or hack will ever match the cost-saving potential of having a plan.
As Roine puts it: "it's all about planning and designing ahead, and creating good governance". Once you've put in the work during the strategy phase, you can then monitor outcomes and adjust your approach for continued cost-effectiveness.
Recommended read: [Book preview] Do you really need a cloud governance plan?, by Jussi Roine
TL;DR: Azure cost-saving dos and don'ts
- Don't restrict developer freedom in an effort to reduce your cloud costs
- Don't wait until a cost-saving opportunity presents itself; try to anticipate ways to save
- Do take advantage of burstable VMs (and other special-use VM series)
- Do reuse App service plans across your web apps, and be mindful when creating new Azure functions where existing ones might work
- Do consider shifting "traditional" workloads to the serverless model
- Do create a documented governance plan as soon as you decide to adopt IaaS in your organization
Special thanks to Andrew Connell, Chris Johnson, and Jussi Roine for taking time out of their busy Ignite 2019 schedules to talk cloud costs with us. You can download Jussi's latest book on Azure governance here, and be sure to check out Chris and Andrew's Microsoft Cloud Show podcast if you haven't already.
Optimize your Azure environment for big savings
Looking for ways to save money on Azure? The Ultimate Azure cost optimization checklist for cloud teams will help you thoroughly audit your environment for sources of wasted spend.