The average organization wastes 32% of its cloud spend. FinOps is the practice of bringing financial accountability to cloud infrastructure. It’s not about spending less — it’s about getting more value per dollar.
The FinOps Lifecycle
INFORM ──────▶ OPTIMIZE ──────▶ OPERATE
(Visibility) (Action) (Governance)
▲ │
└───────────────────────────────┘
Tagging Strategy (Non-Negotiable)
# Required tags for every resource
aws ec2 create-tags --resources i-1234567890 --tags \
Key=Environment,Value=production \
Key=Team,Value=platform \
Key=CostCenter,Value=CC-1234 \
Key=Application,Value=order-api \
Key=Owner,Value=john.doe@company.com
| Tag | Required | Values | Purpose |
|---|
Environment | ✅ | dev/staging/prod | Filter by environment |
Team | ✅ | team name | Cost allocation |
CostCenter | ✅ | CC-XXXX | Finance mapping |
Application | ✅ | app name | Service-level costs |
Owner | ✅ | email | Accountability |
Enforce Tagging
# AWS Config rule — deny untagged resources
{
"ConfigRuleName": "required-tags",
"Source": {
"Owner": "AWS",
"SourceIdentifier": "REQUIRED_TAGS"
},
"InputParameters": {
"tag1Key": "Environment",
"tag2Key": "Team",
"tag3Key": "CostCenter",
"tag4Key": "Application",
"tag5Key": "Owner"
},
"Scope": {
"ComplianceResourceTypes": [
"AWS::EC2::Instance",
"AWS::RDS::DBInstance",
"AWS::S3::Bucket"
]
}
}
Cost Dashboard
-- AWS Cost and Usage Report query (Athena)
SELECT
line_item_product_code AS service,
resource_tags_user_team AS team,
resource_tags_user_environment AS environment,
SUM(line_item_blended_cost) AS cost
FROM cost_and_usage_report
WHERE month = '2025-01'
GROUP BY 1, 2, 3
ORDER BY cost DESC
LIMIT 20;
Step 2: OPTIMIZE — Take Action
Rightsizing
# AWS — find underutilized EC2 instances
aws compute-optimizer get-ec2-instance-recommendations \
--query "instanceRecommendations[?finding=='OVER_PROVISIONED']" \
--output table
# Quick check: instances with < 10% avg CPU
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-1234567890 \
--start-time $(date -v-7d +%Y-%m-%dT00:00:00Z) \
--end-time $(date +%Y-%m-%dT00:00:00Z) \
--period 86400 \
--statistics Average
Reserved Instances / Savings Plans
| Commitment | Discount | Risk | Best For |
|---|
| No commitment (On-Demand) | 0% | None | Variable workloads |
| 1-Year Savings Plan | 20-30% | Low | Stable baseline |
| 3-Year Savings Plan | 40-50% | Medium | Committed workloads |
| 1-Year Reserved Instance | 30-40% | Medium | Specific instance types |
| Spot Instances | 60-90% | High (interruption) | Batch, CI/CD, stateless |
Quick Wins
| Action | Savings | Effort |
|---|
| Delete unused EBS volumes | 5-10% | Low |
| Stop dev/staging nights + weekends | 15-25% | Low |
| Rightsize over-provisioned instances | 10-20% | Medium |
| Move infrequent data to cold storage | 5-15% | Low |
| Use Savings Plans for steady-state | 20-40% | Medium |
| Delete unused Elastic IPs | 1-3% | Low |
| Compress CloudWatch log retention | 2-5% | Low |
Step 3: OPERATE — Govern Continuously
Budget Alerts
# AWS Budget with auto-notification
aws budgets create-budget \
--account-id 123456789012 \
--budget '{
"BudgetName": "Monthly-Cloud-Budget",
"BudgetLimit": {"Amount": "50000", "Unit": "USD"},
"TimeUnit": "MONTHLY",
"BudgetType": "COST"
}' \
--notifications-with-subscribers '[
{
"Notification": {
"NotificationType": "ACTUAL",
"ComparisonOperator": "GREATER_THAN",
"Threshold": 80
},
"Subscribers": [
{"SubscriptionType": "EMAIL", "Address": "finops@company.com"}
]
}
]'
FinOps Team Structure
| Role | Responsibility | Reports To |
|---|
| FinOps Lead | Strategy, vendor negotiations | CTO/CFO |
| Cloud Analyst | Cost reporting, anomaly detection | FinOps Lead |
| Engineering Liaison | Technical optimization | FinOps Lead |
| Finance Partner | Budget management, forecasting | CFO |
FinOps Maturity Model
| Level | Characteristics |
|---|
| Crawl | Basic cost visibility, some tagging, no optimization |
| Walk | Full tagging, team-level allocation, regular rightsizing |
| Run | Automated optimization, real-time alerts, FinOps culture |
FinOps Checklist
:::note[Source]
This guide is derived from operational intelligence at Garnet Grid Consulting. For FinOps consulting, visit garnetgrid.com.
:::