2023.10.31
Finops as a Culture: What is It and How to Implement It
Today, it’s challenging to imagine an IT project not utilizing cloud services, which naturally comes with associated costs. And where there’s money, there must be control. That’s why introducing a FinOps culture into projects is increasingly important. In this article, NIX’s DevOps experts explain how this approach helps track the budget and make cost-effective decisions.
What is FinOps?
Finance Operations is a methodology for managing costs and resources in cloud computing, services, and infrastructure. It goes beyond merely tracking budgets and saving money; it’s a culture that harmoniously combines service quality, cost, and process performance. It’s not about strict accounting of money, it’s about optimizing resource usage and creating conditions for business profitability. This approach may lead to increased cloud expenses due to cost efficiency, but it enhances the product’s value.
Someone might ask: why complicate things? Just create a Google spreadsheet with basic and additional costs, and you’re good to go. However, in reality, it’s not that straightforward. Cloud services, even within AWS, Azure, or Google Cloud, can have varied pricing structures. This variance can stem from the volume of resources used, the duration of use (whether in hours, minutes, or seconds), or other limitations. Budgets involving detailed calculations for each item, complete with real-time updates, can become quite extensive. Furthermore, if a project employs services from multiple providers, it becomes exceedingly challenging to consolidate the data into a unified view. Consequently, managing all expenses effectively necessitates specialized skills in data processing, analysis, and presentation.
4 benefits of implementing FinOps
- Budget optimization. By getting rid of unnecessary expenses, you will reduce the cost of cloud services, ultimately resulting in a more efficient budget for creating the final product without compromising quality.
- Productivity. FinOps specialists excel in identifying optimal solutions for cloud usage. They analyze the product’s performance, its resource demands, and available offerings in the cloud services market. Their objective is to select approaches that allow the team to access greater computing resources within the constraints of the available budget.
- Predictability. Cloud resource usage can fluctuate during different phases of product development, impacting associated costs. However, the implementation of FinOps practices enables more precise resource planning. This empowers the company to anticipate when higher or lower expenses may occur.
- Transparency. In some instances, teams pay for cloud services without a full understanding of what those costs entail. FinOps breaks down the billing process and engages the entire team in understanding these expenses. This transparency fosters a sense of ownership and responsibility among team members as they gain a clearer view of the actual costs involved.
Where to start?
To get started, focus on these essential tasks:
Awareness
The team needs to recognize the significance of financial control and gain insight into costs and opportunities for budget optimization. To achieve this, implement a cloud policy and establish an analytics system with tags at the level of each specialist group on the project. This approach enables transparent and dynamic tracking of what the company pays to its service providers.
Optimization
Once everyone sees the costs and their origins, it becomes easier to identify areas of unnecessary expenditure, including financial and resource losses. This helps to reduce the budget by eliminating unnecessary items. And at the same time, you can reallocate finances to other, more important needs in product development or support. It’s also an opportunity to fine-tune your analytics tools.
Control
It’s imperative to put identified cost optimization strategies into practice. Monitor how the team implements these new principles for cloud management and what results it brings. Ideally, establish automated controls for ongoing cost management.
The FinOps lifecycle isn’t a one-time endeavor. This methodology involves the continuous repetition of all three stages. However, it’s important to note that each segment of the team may progress at its own pace, aligning with specific tasks and capabilities.
Advancing Along the FinOps Maturity Model
You should always be moving forward to better optimize the use of resources. Concentrate on the FinOps maturity model and the three stages of its implementation:
- Crawl: This marks the initial stage, during which the team acquires the skills to analyze and optimize the budget. The primary focus lies in fixing identified errors. At this phase, experts typically calculate costs with an error margin of around 20%.
- Walk: As the team advances, they begin automating the majority of cost monitoring processes. At this stage, the quality of budget forecasting improves, reducing the error margin to approximately 15%.
- Run: The apex of FinOps culture implementation is reached at this stage. The entire team diligently follows the methodology, even in extensive and complex projects. Here, the calculation error is minimized to no more than 12%.
FinOps: Best Practices
The FinOps philosophy is still relatively young in the broader Western IT landscape. As a result, there aren’t numerous established practices to draw from. In my perspective, the optimal approach is to turn to the FinOps Framework. Developed by the FinOps Foundation community, this framework encompasses all aspects related to initiating and sustaining a FinOps culture within a project. It spans various facets, from functional domains, stakeholders, and tasks, to specific processes and milestones. This community was initially founded under the Linux Foundation’s umbrella in 2019, and it has grown significantly, now boasting over 10,000 experts and representing more than 3,500 companies.
It is worth mentioning that this framework is constantly evolving.Each community member is encouraged to contribute their ideas to enhance it as they see fit. Additionally, the FinOps Foundation itself promotes the adaptability of the proposed solutions to suit the unique requirements of individual projects. In contrast, Microsoft suggests placing greater emphasis on the maturity model rather than focusing exclusively on the framework. Azure developers recommend evaluating the team’s achievements in each specific area rather than fixating on particular maturity indicators.
From the known FinOps approaches, we’d like to highlight those we consider the most effective:
- Involve the entire team. We believe that fostering a culture of FinOps necessitates the participation of everyone who interacts with cloud resources. It’s insufficient for a single person to be solely responsible for expense tracking. The adoption of FinOps should extend across all members of the project team.
- Distribute responsibility. There should be a responsible person for each item listed in the invoice. This approach ensures that every team member is continually conscious of how to optimize the utilization of “their” cloud resources.
- Visualize the data. Employing well-designed and comprehensible cost graphs can significantly enhance the team’s understanding of expenses, their extent, and their impact.
- Set limits. Even when the entire team is committed to FinOps, there remains a risk of going over budget. Several factors can contribute to this, from increased traffic to code errors. Hence, you should set up notifications and automatic resource restrictions for critical situations to prevent substantial financial losses.
- Don’t limit yourself to one platform. While many projects integrate services from a single provider, which simplifies the work of developers and DevOps, and ensures product stability. But there are circumstances where separating microservices into various platforms can result in substantial cost saving and prevent certain risks.
- Integrating various tools. There are well-designed native applications tailored for FinOps, including AWS Cost Explorer, Azure Invoices, and Google Cloud Pricing Calculator. Additionally, third-party solutions like Apptio Cloudability and Spot by NetApp can prove to be valuable assets.
- Contact technical support. Even if it may seem counterintuitive to seek advice from your service provider on cost-saving measures. Support teams are generally well-equipped to help customers optimize their resources and budgets. Major cloud providers offer a range of cost-saving options, such as seasonal promotions, spot instances, and bulk pricing. Sometimes, these savings are specific to certain technologies. For instance, AWS offers up to a 72% discount on reserved instances compared to on-demand instances.
- Scrutinize not only large but also small expenses. It would be great to find a budget item that would immediately save 20% or more. In reality, this almost never happens. However, by getting rid of many small expenses, you also optimize a lot of resources.
- Disable or delete what you don’t need. A lot of money is spent on instances that are not used “here and now.” Set up automatic scaling systems to disable or remove what is not needed on the project at the moment. It is more expedient to enable or re-create them later.
- Make predictions. Many tools allow you to calculate the costs of certain resources before they are connected. This offers developers immediate insights into the feasibility of a particular technical solution. This will help to avoid costly errors in the future.
What you need to know to become a FinOps engineer
To become a proficient FinOps engineer, you’ll need a comprehensive skill set that encompasses knowledge of DevOps, Business Intelligence, Big Data, and a solid understanding of finance, including forecasting and budgeting.
Typically, this field is chosen by DevOps specialists who are well-versed in cloud solutions and capable of integrating methodologies into CI/CD pipelines. In many cases, the FinOps engineer effectively takes on the role of a Product Owner for the infrastructure they’re constructing. They have in-depth knowledge of the project’s technologies, service costs, the client’s and business’s requirements, and align these elements to a unified goal.
Imagine, for instance, that you need to determine the cause of fluctuations in the cost of services over time. This requires tracking a multitude of metrics, such as CPU load. After identifying an issue, you progress to locating the specific microservice responsible for excessive resource consumption. At times, you may delve into the details of REST requests. Following this, you must assess whether this resource consumption aligns with the business objectives, calculating the potential productivity gains against increased resource usage. This is a simplified example, as the reality of the role entails extensive communication with various stakeholders, ranging from developers and business analysts to the client and colleagues within the client’s team.
The tasks and responsibilities of a FinOps engineer can vary widely. In some instances, they research cloud service providers’ offerings, while in others, they function as managers, offering recommendations to developers and ensuring adherence to FinOps principles.
In many projects, it may not be feasible to allocate a distinct FinOps role. That’s why Devops are primarily responsible for FinOps culture. However, other professionals involved in different project stages can participate in collaborative discussions to identify the genuine cloud service requirements for their tasks and related areas of the product. Essentially, anyone in the IT field can master FinOps if they possess the motivation to do so.
Integrating FinOps in the project from the start is essential
By applying these principles right from the development’s outset, you can build flexibility into your resource utilization and achieve cost savings at the architectural level. This approach will help to create and maintain a powerful, long-term FinOps strategy. And with it, the business will certainly succeed.