FinOps Principles for AWS Teams
Buying a Reserved Instance is a tactic. Building a team culture where engineers consider cost as part of every deployment decision — that’s FinOps. This page covers the principles and team practices that make cost management sustainable rather than a periodic scramble.
What FinOps is (and isn’t)
FinOps is not about minimising cloud costs. It’s about ensuring the money you spend on cloud infrastructure delivers appropriate business value. A company spending $500,000/month on AWS with a 40% gross margin from cloud-dependent services is in a better position than a company spending $50,000/month with marginal revenue.
The FinOps Foundation (a Linux Foundation project) defines FinOps as “an operational framework and cultural practice which maximises the business value of cloud, enables timely data-driven decision making, and creates financial accountability through collaboration between engineering, finance, and business teams.”
Three principles underpin the FinOps Foundation’s framework:
- Teams need to own their spending — the people deploying infrastructure should understand what it costs
- Decisions are driven by business value — spending decisions should be justified by expected business impact
- Everyone takes responsibility — finance, engineering, and business all play a role; it’s not just a finance problem or just an engineering problem
FinOps is distinct from simply running cost optimisation tasks (which are tactics). It’s the organisational structure and culture that makes those tactics happen consistently and at scale.
The three FinOps phases
The FinOps Foundation describes three phases that organisations move through, often cycling through them repeatedly as their cloud maturity grows.
Phase 1: Inform Before you can optimise, you need visibility. This means knowing what you’re spending, which team or application is responsible for each cost, and whether spend is tracking against expectations.
Key activities in the Inform phase:
- Enable Cost Explorer and set up tagging strategies
- Create per-team or per-project cost dashboards
- Establish cost allocation (which team’s budget pays for which resources)
- Set up anomaly detection and budget alerts
You cannot skip this phase. Teams that jump straight to optimisation without visibility don’t know if their optimisations worked, and they can’t sustain improvements because they can’t measure them.
Phase 2: Optimize Once you have visibility, you can make informed decisions to reduce waste and improve efficiency.
Key activities in the Optimize phase:
- Rightsizing based on actual utilisation (not guess-and-provision)
- Purchasing Reserved Instances or Savings Plans for stable baseline workloads
- Eliminating orphaned and idle resources
- Architectural changes (serverless vs always-on, Spot for batch workloads, storage tiering)
Phase 3: Operate Optimisation without sustainability is temporary. The Operate phase embeds cost awareness into how the team works day-to-day.
Key activities in the Operate phase:
- Cost considerations in architecture reviews and deployment decisions
- Automated cost controls (scheduled shutdowns, auto-scaling policies)
- Regular review cadences (monthly cost reviews, quarterly rightsizing reviews)
- Feedback loops between actual cost and engineering decisions
Most teams reach Phase 2 after a high bill scare, then regress to less rigorous practices once the immediate crisis passes. Phase 3 is where the savings become permanent.
Unit economics: the better measure
Raw dollar amounts are hard to evaluate in isolation. $100,000/month in AWS costs sounds alarming. $0.001 per user per month for a 100 million user service is cheap. They might be the same number.
Unit economics express costs in terms of business outcomes:
- Cost per active user per month — useful for consumer products
- Cost per transaction — relevant for payment processors, e-commerce
- Cost per GB processed — relevant for data pipelines and analytics
- Cost per build — relevant for CI/CD infrastructure
- Cost per API call — relevant for platforms and APIs
For a SaaS product with monthly subscription revenue, a useful unit is infrastructure cost as a percentage of revenue (also called infrastructure gross margin). At early stage, 30–40% infrastructure cost of revenue is common. At scale, 5–15% is a reasonable target for most SaaS businesses.
Example calculation for a SaaS product:
- Monthly AWS bill: $45,000
- Monthly active users: 50,000
- Monthly recurring revenue: $500,000
Unit economics:
- Cost per MAU: $45,000 / 50,000 = $0.90/user/month
- Infrastructure % of revenue: $45,000 / $500,000 = 9%
With these numbers, you can set meaningful targets. If the cost per MAU is growing while user count is stable, efficiency is declining. If it’s falling as users grow, the architecture is scaling well.
Unit economics are more useful than absolute dollar amounts for making infrastructure investment decisions. “Should we spend $20,000 to migrate to a more efficient architecture?” is answered differently depending on whether the current unit cost is $0.90/user (some headroom) or $3.60/user (urgent).
Showback and chargeback in AWS Organizations
In organisations with multiple teams or business units, allocating cloud costs to the teams that generated them creates accountability and better decision-making.
Showback means each team can see what their AWS spending is, but no actual transfer of funds occurs. This is the simpler first step. Teams become aware of their costs, which changes behaviour without the administrative overhead of internal billing.
Chargeback means the cloud costs are actually charged against each team’s budget or cost centre. This creates stronger incentives because over-spending directly impacts the team’s available budget for other things.
In AWS, both models require:
- Consistent resource tagging — resources tagged with
Team,Project, orCostCenter - Cost allocation tags activated in the Billing console (so tagged costs appear in Cost Explorer reports)
- Regular cost reports per team
For organisations using AWS Organizations with multiple accounts, using a separate AWS account per team or application (rather than tagging within a shared account) is the cleanest cost allocation model. Each account has its own Cost Explorer view and separate billing. See AWS Organizations for how consolidated billing works.
Engineering team cost ownership
The most effective cost management happens when the people building systems understand what those systems cost to run. A few principles for building this culture:
Make costs visible where decisions are made — if engineers can see the cost impact of a deployment in the same workflow where they deploy, they make different decisions. Some teams add cost estimates to deployment pull requests, or show projected monthly cost in their internal infrastructure tooling.
Treat cost as a non-functional requirement — just as performance and reliability have acceptable thresholds, so should cost. “This service should process X events per second at Y% availability, within $Z/month” is a complete specification.
Create cost champions — designate someone in each team (not necessarily a full-time role) who owns the monthly cost review for that team’s services. Having a named owner means the review actually happens.
Reward efficiency — teams that reduce cost while maintaining or improving service levels should be recognised. If cost reduction is only noticed when it’s bad, engineers have no incentive to proactively improve it.
Tagging as the foundation of FinOps
Almost every FinOps capability — cost allocation, showback/chargeback, anomaly investigation, resource ownership — depends on resources being tagged consistently.
A minimum viable tagging strategy for FinOps:
TeamorOwner— who is responsible for this resourceEnvironment— production, staging, dev, or sandboxProjectorApplication— which product or project does this supportCostCenter— which business unit or cost centre should be billed
Tags are most effective when enforced at resource creation time. AWS Service Control Policies (SCPs) can deny the creation of resources that don’t include required tags. AWS Config’s required-tags rule can flag non-compliant resources.
Without consistent tagging, Cost Explorer shows you costs by service (EC2: $40,000/month) but can’t tell you which team or application generated that spend. The investigation becomes manual and time-consuming.
See resource tags for practical guidance on designing and enforcing a tagging strategy.
Note: FinOps maturity does not happen overnight. Starting with the Inform phase — even imperfectly — is more valuable than waiting for a perfect tagging strategy and allocation model. Get visibility first, then refine the model. The perfect is the enemy of the good in cost management.
Common mistakes
- Treating FinOps as a finance problem — Engineering makes the decisions that drive cloud costs. If engineers are not involved in FinOps, it becomes a monthly post-mortem exercise rather than a forward-looking practice.
- Measuring raw cost instead of unit economics — A rising absolute AWS bill might be fine if revenue is rising faster. A flat bill might be a problem if user count is declining. Always contextualise cost against business metrics.
- Skipping the Inform phase — Teams that try to optimise without visibility first often optimise the wrong things. Enable Cost Explorer, set up tagging, and establish baselines before launching optimisation initiatives.
- Showback without action — Showing teams their costs without giving them the tools or mandate to act on them creates frustration rather than change. Pair cost visibility with the authority and time to act on findings.
- Implementing chargeback before tagging is mature — Charging teams for untagged resources creates disputes and erodes trust in the process. Get tagging coverage above 90% before moving from showback to chargeback.
Summary
- FinOps is about maximising business value per dollar, not minimising cost absolutely
- The three phases are Inform (visibility), Optimize (reduce waste), and Operate (embed the culture)
- Unit economics — cost per user, cost per transaction — are more useful than raw dollar amounts for decision-making
- Showback creates awareness without friction; chargeback creates stronger incentives but requires mature tagging
- Tagging is the foundation of every FinOps capability — invest in enforcing it early
- Engineers need to own their costs — visibility and authority must live with the people making deployment decisions
- Separate AWS accounts per team (via Organizations) are cleaner for cost allocation than tag-based allocation in shared accounts
Frequently asked questions
What is FinOps?
FinOps (Financial Operations) is a practice that brings financial accountability to cloud spending. It combines finance, engineering, and business teams around shared responsibility for cloud costs. The goal is not to minimise spending, but to maximise the business value delivered per dollar spent.
What is the difference between showback and chargeback?
Showback means showing each team what their cloud spending is, without actually billing them for it. Chargeback means the team is actually charged (their cost centre is debited). Showback is a good first step — it creates awareness without the friction of internal billing. Chargeback creates stronger incentives but requires more governance.
What are unit economics in the context of cloud costs?
Unit economics means expressing cloud costs in terms that relate to business outcomes — cost per active user, cost per transaction, cost per GB processed. Raw dollar amounts are hard to evaluate without context. $50,000/month sounds like a lot; $0.003 per user transaction might be excellent for your business.