What Is FinOps and Why Should Engineering Teams Care About It?
FinOps is about being cost-effective while building cloud-native applications. In this post, we’ll cover why it’s important.
FinOps is about being cost-effective while building cloud-native applications. In this post, we’ll cover why it’s important.
The cloud revolution has brought about a long list of new practices, like DevOps. Beyond the buzzwords and the hype, there are two powerful principles at work:
DevOps started by addressing the divide between development and operations. Over time, other areas of the organization have joined the fun. DevSecOps, for example, aims to shift security left and make it part of the regular development cycle.
If you think it's stopping there, you're sorely mistaken. We've got ourselves a new contestant. FinOps brings focus to efficient spending, an area that didn't get that much visibility until now. In this post, we’re talking about FinOps. What is it? How do we leverage the practice?
Let's have a look at how the FinOps Foundation defines the term:
It is the practice of bringing financial accountability to the variable spend model of the cloud, enabling distributed teams to make business trade-offs between speed, cost, and quality.
At its core, FinOps is about understanding the costs of using cloud infrastructure. You want to ensure that you're spending your resources in a way that brings the most business value. Note that this doesn't mean minimizing expenses. We're past the times where software was considered a cost center. Treat it as an investment that you aim to maximize.
At its core, FinOps is about understanding the cost of using cloud infrastructure.
Why now? The cloud paradigm allows a great deal of flexibility in provisioning infrastructure dynamically. The flexibility comes at a cost, though. It's harder to keep track of what the whole organization is spending.
Moreover, automated scaling brings pitfalls. You don't need to look hard to find stories of people getting hit with unexpected bills. You don't want such an unpleasant surprise, do you?
Is the cost of the infrastructure a relevant issue for teams building applications on top of it? You bet it is!
First, it's about ownership. That's the mantra of DevOps, isn't it? We don't build software and throw it over the wall to somebody else anymore. You expect every serious team to measure the performance of their systems. The relationship to cost is simply another dimension of it.
Secondly, the people developing an application are the experts. They understand the trade-offs and can make the best decisions to build a more efficient platform, assuming they have the required skills. Much like with security, developers might not have time to become true experts in the area, but with the proper support from dedicated specialists, they can take ownership and introduce cost efficiency as another cross-functional requirement.
You need visibility and tooling to assess this, though. We'll get to that in a second.
Estimating cloud spending is notoriously difficult. It's close to impossible to assess it accurately in advance. Traffic patterns are unpredictable. There are many moving pieces. And, frankly, cloud providers don't make it easy with the inscrutable pricing models of many services. As an example, try to understand data transfer costs in AWS without getting a headache.
You're not completely powerless, though. Any cloud provider supplies exhaustive information about the pricing of their services. Starting from those, we recommend getting into the habit of doing back-of-the-envelope calculations. Knowing the resources that you're going to provision, you try to estimate their cost. Do it whether you're designing a new architecture from scratch or simply a new feature. Having visibility into your current cloud cost unit metrics can give you input context for your forecasts.
Will you predict spending down to the cent? Probably not. You'll probably be way off, especially in the beginning. Nevertheless, if you practice often, you'll rapidly get better at predicting costs. Getting a ballpark estimation is a good sign and puts you in the right frame of mind. Additionally, you have some preliminary data that can avoid discussions based on feelings.
Estimations will only take you so far. To understand consumption in depth, you've got to look at the numbers. A detailed cost breakdown is the best way to do that. Cloud providers make a lot of this data available for you. To benefit from it, you need to classify things accurately. Using proper tagging is the first step to ensure that every resource you provision is accounted for. The best way to be consistent is to use infrastructure as code (IaC). Standardize this tagging so that you don't miss anything.
There's still plenty left to do. That's where a solution like Cloudthread comes in. We provide you with a cloud cost telemetry framework to ingest cost data from multiple sources and make it accessible for anybody in your organization. Let's have a look at a dashboard to see the data in a digestible format.
If you like agile frameworks like Kanban, you know that visualization is of paramount importance. Having the data is a nice first step. Visualizing it in a way that anybody across the organization understands what's going on is even better. Good visualizations bring light to problems in a way that heavyweight policies will never accomplish.
Technology is nice, but the goal of FinOps is changing the culture. With the right tooling, any developer in the team can observe the production systems and act before problems arise. Is there a cost spike? That might be a problem. You don't need to wait for an audit when you can be proactive instead. Empower your developers so that everybody feels responsible.
Apart from FinOps, you'll see terms like cloud cost management or cloud financial management. They all refer to the same thing.
We've mostly spoken about developers belonging to engineering teams as the target audience for this concept, but they aren't the only interested parties. There are at least two more sets of stakeholders:
More and more companies will likely borrow the idea of FinOps and hire people whose job is supporting the teams in creating awareness. It makes too much financial sense.
Regardless of the term that you use, keep in mind that ultimately it's about aligning everybody in the organization toward the same goal.
Apart from FinOps, you'll see terms like cloud cost management or cloud financial management. They all refer to the same thing.
Before we finish, we want to reiterate one point. Being operationally efficient is different than being cheap. You don't get points for spending the least amount of money, but rather for spending the money judiciously and getting consistent value out of the cloud, which is why Cloudthread focuses on cost efficiency.
We've all been in projects where we wasted significant amounts of time discussing how to reduce costs without looking at the problem holistically. It led to focusing on minor problems that mattered little in the grand scheme of things. In fact, we probably spent more money by having those meetings than the savings we implemented.
Do you know what helps against this type of pointless micro-optimization? High-quality data and a more comprehensive understanding of cloud costs. What also helps is a culture in which developers are empowered and feel responsible for building efficient systems, considering all the trade-offs.