You Do Not Need a FinOps Team

| 4 min read |
cloud cost-optimization finops infrastructure

Cloud cost management is not a discipline. It is basic engineering hygiene dressed up with a consulting-friendly name.

The FinOps Foundation would like you to believe that cloud cost management is a specialized discipline requiring dedicated teams, certified practitioners, and a maturity model. I would like you to believe that it’s mostly about deleting things nobody uses and tagging the rest.

I’ve managed cloud spend at startups and at enterprises. The problems are always the same. The solutions are always boring. The industry has wrapped basic hygiene in jargon and created a cottage industry of dashboards, consultants, and conferences around it.

The Problem Isn’t Complicated

Cloud spend drifts for three reasons:

Nobody owns it. Engineering provisions resources. Finance sees the bill. Neither side can attribute cost to a service, team, or decision. When nobody owns a cost center, the cost center grows. Always.

Defaults are generous. Cloud providers default to larger instances, higher throughput, and more redundancy than you need. Good for reliability. Bad for your invoice. A default m5.xlarge when your service uses 200m CPU isn’t a safety margin – it’s waste.

Data transfer is invisible. Most teams focus on compute and storage. Data transfer costs creep in silently. Cross-AZ traffic, cross-region replication, egress to the internet. At one company, data transfer was 30% of the monthly bill and nobody on the engineering team knew it.

What Actually Works

Delete Things

Start here. Always start here.

Unused load balancers. Orphaned EBS volumes. Dev environments that have been running for six months with nobody logged in. Staging environments sized like production. Snapshots from 2020.

At every company I’ve consulted for, the first pass of deleting unused resources has cut the bill by 15-25%. No analysis required. No tooling required. Just look at what’s running and ask “does anyone use this?”

Tag Everything

Enforce tags at creation time. Team, service, environment, cost center. If a resource doesn’t have tags, it’s impossible to attribute costs. If it’s impossible to attribute costs, nobody owns them.

This isn’t a technology problem. It’s a policy problem. Terraform can enforce tags. AWS Service Control Policies can enforce tags. The blocker is usually organizational will, not tooling.

Right-Size With Data

Look at two weeks of CPU and memory utilization. If a service averages 10% CPU utilization, it’s oversized. Downsize it. If it averages 80%, leave it alone or optimize the code.

Don’t right-size based on a single metric snapshot. Don’t right-size based on a vendor tool’s recommendation without verifying it. I’ve seen recommendations that would have put a production database below its working set size.

Commit to the Floor, Not the Ceiling

Reserved instances and savings plans save money on stable baseline usage. The key word is “stable.” Commit to the minimum you’re confident you’ll use for the next year. Keep the variable portion on demand.

Over-commitment is a hidden risk. Product priorities shift. Services get decommissioned. A three-year RI on infrastructure you no longer need isn’t a savings – it’s a sunk cost.

Spot Instances for Batch Work

Batch jobs, CI runners, data pipelines – anything that can tolerate interruption. Spot pricing can cut compute costs by 60-90%. The catch is fault tolerance. If your batch job can’t resume after an interruption, spot isn’t for you.

Watch Data Transfer

Put services close to their data. Cache aggressively. Avoid cross-region traffic when same-region will do. Set up a VPC endpoint instead of routing through the public internet. These are small changes with disproportionate cost impact.

Why FinOps Annoys Me

The FinOps movement takes straightforward engineering practices – tagging, right-sizing, deleting waste, monitoring spend – and wraps them in a maturity model with phases like “Inform, Optimize, Operate.” It creates the illusion that cloud cost management requires a specialized function.

It doesn’t. It requires engineering teams that own their costs and a culture that treats waste as a bug. That’s it.

A dedicated FinOps team is a sign that your engineering organization has externalized a responsibility it should own. It’s the same antipattern as a separate “quality” team that owns testing – it lets everyone else stop caring.

The Boring Recipe

  1. Tag everything. Enforce it in IaC.
  2. Delete what nobody uses. Do this monthly.
  3. Right-size based on two weeks of utilization data.
  4. Commit reserved capacity only to the stable baseline.
  5. Use spot for batch and CI.
  6. Monitor data transfer costs explicitly.
  7. Assign cost center owners. Review spend quarterly.

No maturity model required. No certifications. No dedicated team. Just engineers who look at what they run and care about what it costs.