In the wake of recent global events, businesses have had to quickly shift gears and adopt alternative strategies. Most organizations are struggling with a serious cash shortage and office closures, forcing them to prioritize cost control and remote workforce enablement.
As mentioned in a previous blog post, investing in cloud services is a great way to empower your remote workforce. However, the pay-what-you-use affordability of cloud services is dependent on your organization’s ability to track and optimize its cloud usage. Here are some tips that can help:
1. Use cost calculators before you begin
Surprises can be fun… just not when they’re in your bills! Cloud vendors understand that businesses don’t want to risk incurring unexpected cloud costs. That’s why all major cloud providers have free cost calculators that let you create and share detailed price estimates of any combination of cloud services. Knowing what to expect before you start using cloud resources will help you achieve the right balance of performance, resilience, and cost.
2. Pick the right region for your resources
Because of localized differences in operating costs, many cloud providers price the same services differently depending on which geographical region they’re hosted in. For example, it might be cheaper to store your rarely accessed server backups in a distant region with lower storage costs. On the other hand, you would probably want your frequently accessed application data in the same region as your VM instances to minimize inter-region traffic costs. Cloud pricing calculators (see above) can help you make sound decisions about where your cloud resources should reside.
3. Bring your own licenses
Application and operating system licenses can become a major cloud expense. Many businesses prefer open-source software to avoid these costs altogether. However, if your cloud project requires commercially licensed software, you can benefit from “bring your own license” (BYOL) offers. BYOL lets you use your existing licenses for server operating systems, databases, and other software for your cloud deployments. This is especially useful for hybrid cloud deployments, where you might be using the same software in the cloud and your own datacenter.
4. Reserve long-term VM instances
With cloud computing, you can spin up a new VM in minutes, use it for the exact amount of time you need it, and then discard it when you’re done. You’ll be billed by the second, and for most short-term use cases, the cost is much less than building, using, and retiring a physical machine. However, if you want to run VMs for years instead of days, then regular cloud pricing can exceed the cost of on-premises servers.
But don’t worry; you can ensure cost-efficiency using reserved VM instances. If you agree to a fixed term (usually 1 to 3 years for most cloud providers), you’ll receive a major discount. In some cases, reserved instances can reduce your compute costs by half or more.
5. Set “emergency brake” cloud spend budgets
Since cloud costs vary according to usage, there will be months when your bill will be slightly higher than your annual average. That’s normal and you shouldn’t be too concerned. But what happens if your costs suddenly triple? This can happen because you have a customer-facing web service has experienced a sudden surge in popularity (congratulations!), but it could also mean a serious resource configuration error, or maybe even malicious activity.
To prevent unexpected spikes in cloud spend, you can set a fixed budget for your cloud subscription. The budget acts like an emergency brake, or like a stock-market circuit breaker. Once you hit the defined limit, all services that aren’t free will cease operations. This probably isn’t something that you’d want to do for your production environment, but it’s a great option for your development and testing VMs.
6. Implement detailed monitoring
Visibility is essential for determining what you’re currently paying for, and which cloud resources you could do without. Cloud providers offer several useful tools that help you monitor cloud usage and audit administrative actions. You can quickly identify resource types and groups that are gobbling up your monthly cloud budget, determine whether the spending is justified, and take corrective action. Some tools actively provide recommendations for cost reduction.
You can make monitoring even more effective by adding tags to your resources. Tags are metadata that you can apply to categorize and identify resources. They’re especially useful when you need to group together resources that are spread across multiple logical containers. For example, you could apply a “Department: Procurement” tag to every resource used by your Procurement team. That way, you’ll be able to easily track that department’s cloud spend using your own business taxonomy instead of your cloud provider’s technical categories.
7. Apply role-based access control and policies
Role-based access control (RBAC) grants or denies various administrative permissions to groups or individuals, allowing them to create, modify, or delete cloud resources. this is a fundamental way to control cloud spend; the fewer people with the ability to make changes that impact cloud costs, the tighter your control over what gets changed. Always use the principle of least privilege; only grant users the minimum set of administrative privileges they need to do their job. This will prevent a lot of mistakes and cavalier cloud resource creation.
In addition to using RBAC to specify who can make changes to your cloud subscription, you can also use policy tools to enforce which changes they can make. For example, you can make resource tagging mandatory; if you don’t apply specific tags, you can’t create the resource. You can also limit the types of resources that a particular group can contain; it’s a good idea to prohibit the creation of high-performance VM sizes in non-production resource groups.
8. Use replication strategically
Replication is a core capability of cloud platforms that lets you host the same cloud resources from multiple datacenters or geographic regions to improve resilience and performance. However, not all of your cloud resources need to be replicated across continents, while other resources might not need any replication at all.
You should replicate resources that need to be accessed across multiple geographies, such as production VM instances of applications intended for an international audience. You should also replicate business-critical resources that must remain available at all times. For this second category of resources, you could replicate the most sensitive ones across regions and less sensitive ones within the same region to further optimize costs.
9. Carefully consider multicloud tradeoffs
Some mid-market and large organizations maintain cloud accounts on multiple platforms. They might do this to minimize the chance of downtime (even though it’s exceedingly rare), or to avoid “vendor lock-in”, where becoming heavily invested in a particular platform discourages an organization from considering other options that might offer unique advantages. Consolidating existing cloud resources after a merger or acquisition is another common multicloud scenario.
Whatever the case, you should weigh your options carefully when deciding whether to stick with one provider or go the multicloud route. Using one cloud platform is easier to manage and is typically less expensive. There are rare instances where specific cloud services are less expensive on another platform, but in such cases, the potential savings are usually outweighed by other costs like staffing and training. Perform a thorough assessment of the benefits and consider alternatives before adopting a multicloud strategy.
10. Delete unused resources
This one might sound like a no-brainer, but you’d be surprised by the number of idle resources that exist in the average organization’s cloud subscriptions. It’s extremely easy to create new resources, and if your subscription contains hundreds of resource groups, then it’s just as easy to lose track of them.
Be sure to use monitoring tools (see #6 above) to identify idle resources and regularly consider ways to simplify your resource hierarchy to prevent resources from getting lost in the crowd. It also helps to keep resources with the same lifecycle in the same resource group. That way, you can delete the entire group when you don’t need those resources any more, and you won’t have to hunt around your cloud subscription for stragglers.
11. Right-size your VMs
Cloud providers offer a wide range of compute resources, including dozens of VM sizes configured for different use cases. It’s critical to choose the right VM size for each workload. If you don’t, you’ll be wasting money on CPU power, RAM, or other features that you don’t need in your specific business scenario. Development and testing machines should be provisioned more modestly than production VMs, and special-purpose VMs like database servers or proxy servers might need more memory, network interfaces, IOPS, or other capabilities. As mentioned earlier, you can also apply policies to prevent users from overprovisioning VMs in specific resource groups.
Suppose you want to set up a cluster of VMs on the Microsoft Azure cloud platform for video rendering. Azure offers several series of VMs with high-performance GPUs that are optimized for such workloads. For example, the NCv3 series of VMs currently ranges from 6 virtual CPUs, 112 GB of RAM, and a single 16-GB GPU to 24 virtual CPUs, 448 GB of RAM, and four 64-GB GPUs. What’s important to note is that the second option is roughly four times as expensive as the first. If you don’t need that kind of compute power, then choosing the less expensive option can save you thousands of dollars each month.
You might have written scripts that automatically scale your VMs up or down to a different size when their workloads change significantly. If so, you should be especially careful when you define the thresholds that trigger these scripts. Scaling up and down too frequently requires your VM to be restarted more often, which could affect availability. Not scaling up and down frequently enough results in performance degradation or cost inefficiency.
12. Optimize scale-set thresholds
Cloud platforms use scale sets to efficiently ensure service availability for VMs with variable workloads by automatically scaling out and in. A VM scale set scales out under heavy loads, bringing more (identical) VMs online to serve more user requests, and then scales back in when demand tapers off. It’s important to set appropriate thresholds for scale sets so they offer the best mix of performance and cost efficiency for your needs. For example, you may decide to reduce costs by only scaling out when your VM’s CPU is busy 90% of the time instead of setting a lower threshold like 75%.
13. Shut down VMs automatically
Your organization probably keeps some cloud servers running around the clock to serve your customers and employees. However, you may also be using other VMs almost exclusively during regular business hours. For example, you could have virtual environments for your development and testing teams. If these servers are running when your developers and testers are asleep, then you’re paying for uptime you don’t need.
Most cloud platforms provide simple controls that let you automatically shut down VMs on a schedule to prevent this kind of waste. Suppose your dev team is in the office from 10 AM to 6 PM. You’ll probably want to configure your VMs for auto-shutdown around 7 PM. In case your team’s work hours are more sporadic, there are ways to script your VMs to shut down if they’ve been idle for a predefined span of time and then wake up on demand.
14. Limit the use of premium SSD storage
Cloud platforms typically let you choose from multiple storage tiers, from traditional spinning hard disk drives (HDDs) to ultra-fast solid-state drives (SSDs). Since SSDs are more expensive than HDDs, you should only use them when you need the extra performance they offer. If all you’re doing with a virtual disk drive is storing document archives that won’t be accessed more than a few times each month, then there’s no need to use SSDs.
For application development, HDDs should do just fine, but in case you need an affordable way to improve performance, cloud providers usually offer a lower-priced SSD option. These “standard”-tier SSDs are faster than HDDs, but don’t cost as much as premium-tier SSDs, making them a good middle-of-the-road storage solution.
15. Optimize your backup procedures
Backups are essential for your data; losing an important business document can sometimes be devastating. However, that doesn’t mean you need to keep every file your business generates in cloud storage forever. You must assess which backups should stay on the cloud, and for how long. You might discover that you don’t need to store backups of your development servers for more than a month. Or perhaps backups of your least frequently accessed documents would be less expensive to store on physical media.
Since each scenario is different, there is no single “best” solution for how or where to store your business information. For each type of data backup, determine its cloud cost versus on-premises cost, its required availability (how quickly it will need to be retrieved and restored), and its opportunity cost (what would happen if you lost that data). These parameters will help you decide whether a backup should be kept on the cloud and how long it should stay there.
As you can see, there are numerous factors that determine your annual cloud spend. You need an in-depth and current understanding of your cloud platform’s services and pricing options. You must also remain vigilant, especially if multiple users have the ability to make billable changes to your cloud subscription. Getting in touch with a cloud-savvy technology provider can help your organization save a lot of time, effort, and money.
Visionet’s cloud experts provide excellent cost optimization tools and services for major cloud platforms. If you’d like to learn more, please contact Visionet.