DEV Community

Cover image for Solved: Help us understand FinOps maturity & real cloud cost struggles (5–7 min survey, no emails)
Darian Vance
Darian Vance

Posted on • Originally published at wp.me

Solved: Help us understand FinOps maturity & real cloud cost struggles (5–7 min survey, no emails)

🚀 Executive Summary

TL;DR: Cloud costs often spiral due to a lack of real-time visibility and feedback for engineers, leading to unchecked assumptions and overprovisioning. Implementing FinOps practices, including immediate alerts, mandatory tagging, shift-left cost estimation, and automated guardrails, is crucial to foster a culture of cost-awareness and prevent overspending.

🎯 Key Takeaways

  • Utilize AWS Budgets and Cost Anomaly Detection to establish immediate alerts for spending spikes, directing notifications to public channels like Slack for enhanced accountability.
  • Enforce mandatory tagging policies (e.g., Owner, Project, Environment) using AWS Service Control Policies (SCPs) and integrate shift-left cost estimation tools (e.g., Infracost) into CI/CD pipelines to provide cost feedback during code reviews.
  • Implement automated ‘janitor’ scripts, such as Lambda functions, to terminate untagged resources, stop idle development instances, and delete unattached EBS volumes, but ensure clear communication with engineering teams prior to deployment.

Drowning in cloud costs? This guide breaks down FinOps maturity from an engineer’s perspective, offering real-world fixes for getting your AWS bill under control, from quick alerts to automated guardrails.

Confessions of a Cloud Architect: Your Bill is High Because We’re Flying Blind

I still remember the 7 AM Slack message from our Head of Finance. It was just a screenshot of our AWS bill with a single question mark. The number was… astronomical. It turned out a junior engineer, trying to impress everyone, had provisioned a fleet of m5.24xlarge instances for a “load test” on a dev environment and then went on vacation for two weeks. The instances sat there, burning cash like a bonfire. We didn’t have alerts, we didn’t have tags, we had nothing. That day, I learned that the most expensive cloud resource is an unchecked assumption. I saw a Reddit thread the other day asking about FinOps maturity, and it brought that painful memory right back. Let’s talk about it.

The “Why”: It’s Not Stupidity, It’s a Visibility Problem

Look, nobody tries to waste money. Developers are focused on shipping features, not optimizing EBS volume types. The root cause of cloud cost overruns isn’t maliciousness; it’s a fundamental disconnect between engineering action and financial consequence. When you can provision a supercomputer with a single CLI command, but the bill only shows up 30 days later, you’ve created a system with zero feedback. This gap is where costs spiral. FinOps isn’t just about saving money; it’s about building the feedback loop so engineers can see the cost of their code in real-time.

Solution 1: The Quick Fix (The “Oh Crap, We Need Alerts NOW” Button)

This is the reactive, band-aid approach, but it’s a hundred times better than nothing. You need to know when you’re bleeding money, as it’s happening. Stop waiting for the monthly invoice.

  1. AWS Budgets: This is non-negotiable. Go into the console right now and set up a budget. Don’t just set one for the total account spend. Create granular budgets for specific services (EC2, S3) or, even better, for specific linked accounts or cost allocation tags (Project:New-API, Team:Data-Science).
  2. Cost Anomaly Detection: This is AWS’s machine learning magic that learns your normal spending patterns. When it sees a sudden, unexpected spike, it screams. It’s what would have caught that fleet of m5.24xlarge instances on day one, not day fourteen.

Pro Tip: Send these alerts to a shared Slack channel, not just an email distribution list that everyone ignores. Public visibility creates accountability. When the #cloud-spending-alerts channel lights up, people notice.

Solution 2: The Permanent Fix (Building a Culture of Cost-Awareness)

Alerts tell you after you’ve already spent the money. The real goal is to prevent the overspend in the first place. This requires tooling and process—the heart of real FinOps.

  1. Mandatory Tagging: Enforce a strict tagging policy for all resources. At a minimum, every resource should have Owner, Project, and Environment tags. You can enforce this with Service Control Policies (SCPs) in AWS Organizations. If a resource can’t be launched without the right tags, you’ll never have an “orphan” prod-db-01 volume again.
  2. Shift-Left Cost Estimation: Don’t wait for the cloud provider to tell you how much something costs. Integrate cost estimation directly into your CI/CD pipeline. Tools like Infracost can scan your Terraform or CloudFormation code in a pull request and post a comment showing the cost delta.

Imagine a developer sees this comment on their PR:

Project: acme-corp/infra

-/+ aws_instance.web_server (x10)
    Monthly cost will increase by $1,854.20
    (from $730.00 to $2,584.20)

    Cost component         Monthly cost
    instance_type (t3.xl -> m5.xl)  +$1,854.20

Overall monthly impact: +$1,854.20
Enter fullscreen mode Exit fullscreen mode

Suddenly, the cost is no longer an abstract problem for the finance team. It’s a concrete part of the code review process. This changes behavior faster than any angry email ever could.

Solution 3: The ‘Nuclear’ Option (Automated Guardrails & Janitors)

Sometimes, culture and alerts aren’t enough. For environments where costs regularly get out of hand (I’m looking at you, sandbox accounts), you need automated, opinionated enforcement. This is the “trust but verify” approach, with an emphasis on “verify.”

This is where you write scripts—often a Lambda function triggered by a CloudWatch event—that act as a janitor for your accounts.

Janitor Script Trigger Action
Untagged Resource Terminator Runs every hour Scans for EC2, RDS, etc. without a TTL or Owner tag. After a 24-hour grace period (tagging the resource with Termination-Warning), it terminates the resource.
Idle Dev Instance Stopper Runs every night at 8 PM Checks all instances in dev/staging accounts. If CPU utilization has been below 5% for the last 4 hours, it stops the instance.
Unattached EBS Volume Deleter Runs weekly Finds all EBS volumes in the ‘available’ state (unattached) and creates a snapshot, then deletes the volume. This alone can save hundreds or thousands.

Warning: This approach is aggressive and can feel heavy-handed. You absolutely must communicate this to your engineering teams before implementing it. The goal is to enforce good hygiene, not to randomly delete someone’s work. Start with warnings and notifications before you start terminating things.

At the end of the day, getting a handle on cloud costs isn’t a one-time project. It’s a cultural shift. It’s about giving engineers the tools and data they need to make smart financial decisions, right alongside their architectural ones. Don’t wait for that 7 AM message from Finance to get started.


Darian Vance

👉 Read the original article on TechResolve.blog


Support my work

If this article helped you, you can buy me a coffee:

👉 https://buymeacoffee.com/darianvance

Top comments (0)