In my previous articles, we discussed FinOps methodology, Visibility, and Cost Optimization. Now let’s cover the next and, probably, the most important principle – Control.
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 establishing a proper cloud cost control process 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.
10 steps to implement the principle of control in FinOps process
- 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 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 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. 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. 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.
Tagging is one of the initial steps on a cloud cost optimization and FinOps adoption journey. It allows to identify the resource owners and the purpose of the resource usage impeccably and gain full cloud cost transparency. Learn how to define a tagging system for cloud resources → https://hystax.com/how-to-define-a-tagging-system-for-cloud-resources.