As a service provider to many SaaS businesses, Software Creators and Independent Software Vendors (Software companies) in Australia and New Zealand, we're now starting to see the impacts across some of our customer base as COVID-19 creates widespread economic uncertainty.
If your customers are doing less, requiring you to trim back and sharpen your pencil on costs further, the team here at Parallo have come up with a list of 18 tips to reduce your spend quickly, assuming your business uses a public cloud to get to market.
Some are quick and easy; some are ugly; some are obvious. Please consider these holistically before making the changes, and make sure your Ops, DevOps and SRE teams are vigilant for any deterioration of Customer Experience as a result.
- If your customers are reducing their use of your app, re-assess your minimum public cloud resource requirements, and reduce accordingly. This can be volume of objects, or object sizes, or lower cost versions of service types.
- According to the amount of risk you are happy to take on, consider scaling down, turning off or removing HA\DR duplicate infrastructure. Before doing this, make sure you plan to re-establish this should you need it. Obviously, this poses business risk, so it needs to be considered very carefully on a case by case basis, reviewing agreed customer RTO\RPO SLAs, and the ability to negotiate them up (if appropriate).
- As you should all the time, ensure you have dynamic scaling of infrastructure in place to ensure that cost and load capability closely follows/preempts actual load.
- Make sure that services that have single region use and are therefore potentially not used overnight and on weekends (such as dev resources) are turned off and de-allocated when not required. We automate this to ensure no-one needs to remember, but make sure you understand the implications of de-allocation before you attempt to do this (or ask us).
- Consider Reserved Instances. In Azure these no longer need upfront payment, and can significantly reduce costs. It's possible to get out of them too if necessary (at a cost). There are 18 different types, not just VMs.
- If you are leveraging Reserved Instances, make sure you also maximise the use of Hybrid Use Benefits.
- Run a fresh set of eyes across the entire estate and question resources that don't appear to be utilised. If no one knows what the resource is for and utilisation is very low to zero, consider disabling it and see who screams. Hey, I wouldn't usually recommend this, but needs must!
- If using Database as a Service, such as Azure SQL, query all databases for the last accessed date, to see if any are not required. If they haven't been accessed for a period of time that tells you they are not in use, and no one knows what they are for - archive and delete.
- Conversely, if you have lots of Azure SQL databases, even though the management will increase (which could be a sunk cost for you) consider consolidating them on to an SQL Server VM or managed instance while you need to optimise cost. Migrate back when things go back to normal.
- Leverage Azure Advisor (or similar services) to identify waste and deal with it.
- If there are features that consume significant resources, consider tuning those features to reduce resource demands. An example is one of our customers that runs 5-minute processes, they can consider running these at 10-minute intervals, halving the resource requirement, and therefore providing the ability to scale down resource and cost. This might not be ideal from a customer outcome perspective, but it might be OK as a short-term measure.
- A bit more technical, but in multi-tenant constructs, and again where there are regular scheduled processes per customer, try staggering the start time per customer to then share pooled resource more effectively. This can be good for Azure SQL Elastic Pools as an example.
- You may have multiple multi-tenant platforms in different regions. Consider consolidating down the number of platforms. Multi-tenancy is typically highly efficient, so costs should reduce significantly post consolidation, assuming latency doesn't kill the UX.
- If you do need to consolidate multi-tenancy platforms, choose one or two that are closest to most of your customers, or to your most sensitive customers. Azure now has 58 regions available in 140 countries, the most of any cloud provider, so there is likely to be one that works. There are many choices in AWS also, just not as many.
- If you're using Microsoft Azure, make sure your dev/test workloads are in a "Dev/Test" subscription. This is a specific subscription type that leverages your Visual Studio licenses to give you access to significantly discounted resources.
- If you use staging slots - be hyper-vigilant to delete staging if you've swapped to prod. We automate this, checking if staging is more than x days old, and alerting if so.
- If you use blue/green deployments, consider winding that back to just one for now, in order to optimise your spend (if applicable).
- Leverage spot pricing where applicable. Spot pricing applies to VM workloads that are volatile and will be switched off by the cloud provider if they need the capacity. They are great for batch, parallel computing, stateless scale out etc. Basically workloads that can survive the sudden loss of the server. Expect to save up to 90% over the cost of a normal workload. Consider re-architecting your application to leverage spot VMs if possible.
As I said, some of the suggestions are quick, some are ugly, and some have a degree of risk. Choose the ones that are right for your business based on your needs.
If you need a hand to run through this, the Parallo team are offering a free one-hour remote consultation to drill into your cloud usage and reveal opportunities for cost savings. To register your interest, please send an email to firstname.lastname@example.org.