A lot of people wrongly assume that the cloud is simply cheaper than on-premise or ISP-based services. Move workloads to Azure or AWS and, hey presto, you’ve saved money. No! If you don’t manage your consumption, costs will grow quickly and, before long, you’ll be looking at a bill that will be considerably higher than what you had budgeted.
There are three key areas you must focus on to control your spend. That is, beyond the obvious cause of ballooning costs – not decommissioning the workloads you migrate to the cloud. It’s almost too obvious but surprisingly prevalent in our experience.
Generally setting the size of an asset to be bigger than it needs to be. This manifests itself in many ways; CPU, memory, storage. It is completely unnecessary, wasteful, and expensive. You must ensure the peak utilisation is carefully aligned with available capacity.
And, take time to understand the utilisation profile of your application. If it is “peaky” then take advantage of the elasticity of cloud services – focus on using PaaS services where possible. Switch off or reduce capacity when it’s not needed. If the application is used during working hours only, then reduce costs by as much as two thirds by quiescing the service when it’s not being used.
There are tools available that enable you to view the utilisation of cloud services. Use them. It’s by far the easiest way to reduce costs.
Optimise for the cloud. Whilst “lift and shift” is legitimate (for the right reasons), invariably the on-premise nature of the architecture means you cannot take advantage of the scale and flexibility of cloud services. It’s important to consider whether the application and/or infrastructure is suitable for cloud and make a decision based on a strong understanding of the “as is” and “to be” position. Options worth considering include:
- Containerisation (e.g. Docker, Kubernetes etc.)
- Re-factoring specific elements of the application (e.g. moving database services to PaaS)
- Use of elastic pools
- Application re-design
- Infrastructure as code (e.g. Terraform) to optimise environment provisioning, reducing persistency
This is the key to managing costs, especially when you decentralise the power to provision cloud services. Without appropriate oversight, costs simply run out of control. Someone needs to be held accountable – ideally the consuming users. The main focus areas include:
- Tagging services to “owners” to enable accurate reporting of spend allocation
- Regular analysis of spend and appropriate action is taken (e.g. update of policy, automating hibernation of environments, increasing awareness/training of personnel, etc.)
- Establish a “Service Catalogue” with a standard set of fully defined and costed services – this enables intelligent placement of workloads, aligned with the strategy
- Azure Cost Management Home – https://azure.microsoft.com/en-us/services/cost-management
- Azure Cost Management Docs – https://docs.microsoft.com/en-us/azure/cost-management-billing/
- Azure Cost Management Blogs – https://azure.microsoft.com/en-us/blog/tag/cost-management
- Azure Cost Management Videos – https://www.youtube.com/c/azurecostmanagement
- Azure Advisor Home – https://azure.microsoft.com/en-us/services/advisor
- Azure Advisor Docs – https://docs.microsoft.com/en-us/azure/advisor
- Azure Advisor Cost Recommendations Docs – https://docs.microsoft.com/en-us/azure/advisor/advisor-cost-recommendations
- Azure Pricing Calculator – https://azure.microsoft.com/en-ca/pricing/calculator
- Azure TCO calculator – https://azure.microsoft.com/en-us/pricing/tco/calculator
- Azure Tags – https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/tag-resources
- Azure EA Portal Administration – https://docs.microsoft.com/en-us/azure/cost-management-billing/manage/ea-portal-administration