Being able to see historical data of your cloud spending and optimize it is important but it’s crucial to have an opportunity to build a process when funds are allocated and used only for what they should and with an option to manage and forecast the expenses.
The benefits of the control are obvious but let’s summarize them:
- It’s the main driver of constant optimization when there are no hidden costs, orphaned or unused resources.
- No budget overspending – you know your budget and can forecast the spending projecting it on the current month, quarter, or in some cases even, year.
- No destruction to your team when the team periodically has to review the expenses and figure out a way to optimize to stay under budget.
Here I will give some practical advice for FinOps teams on how to build a proper control process.
There are a few steps how you can build this process:
1. Create a separate budget for every granular item
Create a separate budget for every granular item you would like to track. It can be (but not limited to) either a CI/CD job, or an application cluster, a R&D team, a PoC project, etc.
2. Assign an owner to every specific budget
Don’t expect that one person can properly track more than 7 budgets. This can be a DevOps engineer or a team member of your FinOps team.
3. Identify a rule on how resources should fall under a specific budget and an owner
It can be a tag or a resource name prefix/postfix or some other rules used at your company. Ideally, if the resources can fall under budgets automatically (CI/CD job resources created with a tag, engineers use their name in prefix etc.).
4. Set TTL rules
It can be another tag or, for example, a rule to remove resources older than 24 hours if they don’t contain some specific ‘do-not-delete’ tag.
5. Create a cleanup script
Create a cleanup script to be periodically launched and to remove resources with expired TTL. Don’t forget about volumes, snapshots and images, they are costly resources but at your company, you should have other categories.
6. Compose a script or use third-party cloud cost management tools
Compose a script or use third-party cloud cost management tools to calculate and track budget forecasts and give up-to-date cloud expense data to every resource owner. Cloud-native tools are very limited in a way you can track expenses – keep in mind that the main idea of the cloud for you is to spend more, not to save. I suggest sending the data to the budget and resource owners every Friday morning so that they had time to review and fix the issues until the weekend starts.
7. Send instant alerts
The script from p.6 should be able to send instant alerts if there is an actual budget overspend or the forecast is 1.5 bigger than your budget. It gives more room for some corrective actions.
8. Control reserved instances and saving plans usage
It is ridiculous how many companies take those options but still use them.
9. Control spot instance usage for CI/CD jobs
For the majority of the recurring jobs, your team can use spot instances but the team may not be familiar with the functionality.
10. Educate your team
This is the most important step. Educate your team about the steps and explain why they are important. Running all the steps above is a process but not a one time action. The majority of the companies fail exactly because of forgetting to execute the steps recurrently.
Keep also in mind that there are cloud cost management tools that can help with the principle and take care of the majority, but not all, of the steps. If your team doesn’t take it seriously or isn’t educated, you won’t get the best out of FinOps.
If you have more steps in mind, please leave a comment and I’ll extend the list.