B2B SaaS Platform: 38% AWS Cost Reduction in 90 Days

5 min read

Client: Series B B2B SaaS company · 240 enterprise customers · ~$22M ARR

90-Day AWS Cost Reduction JourneyKJanKFebKMarKAprKApr-end−38%0K annualizedMonthly AWS spend · 99.97% uptime maintained throughout
The monthly AWS spend trajectory across the 90-day Ohveda FinOps engagement.

Engagement: 90-day FinOps optimization · January–April 2026

The Challenge

Their AWS bill had grown from $48K/month to $92K/month over 18 months — a 92% increase against only 35% revenue growth. The CFO had given the CTO a hard mandate: reduce cloud spend by 30% within one quarter, without compromising customer-facing performance or slowing engineering velocity.

Approach (Week-by-Week)

01

Weeks 1–2 · Cost audit & baseline

Pulled 90 days of CloudWatch + Cost Explorer data. Identified $35K/month in waste across overprovisioned EC2, idle resources, and unoptimized data transfer.

02

Weeks 3–4 · Rightsizing + Graviton migration

Rightsized 140 EC2 instances. Migrated 60% of workloads to Graviton (ARM) m6g instances. Compatibility test suite caught 3 native-extension dependencies; switched to ARM-native equivalents.

03

Weeks 5–7 · Commitments + idle cleanup

1-year Compute Savings Plan covering 70% of baseline. RDS Reserved Instances. Lambda-based idle resource sweeper deployed (47 unattached EBS volumes recovered, $1,840/mo).

04

Weeks 8–10 · Per-customer cost dashboard

Mandatory tagging policy via Terraform. Grafana dashboard showing cost-per-customer in real time. Three unprofitable customers identified and renegotiated.

Sample: Idle EBS Volume Sweeper (Lambda)

import boto3
from datetime import datetime, timedelta, timezone

ec2 = boto3.client('ec2')
sns = boto3.client('sns')

def lambda_handler(event, context):
    """Find unattached EBS volumes > 30 days old."""
    cutoff = datetime.now(timezone.utc) - timedelta(days=30)
    response = ec2.describe_volumes(Filters=[
        {'Name': 'status', 'Values': ['available']}
    ])
    waste = []
    for vol in response['Volumes']:
        if vol['CreateTime'] < cutoff:
            monthly_cost = vol['Size'] * 0.10  # gp3 list price
            waste.append({
                'id': vol['VolumeId'],
                'size_gb': vol['Size'],
                'monthly_cost_usd': monthly_cost,
                'age_days': (datetime.now(timezone.utc) - vol['CreateTime']).days,
            })
    if waste:
        total = sum(v['monthly_cost_usd'] for v in waste)
        sns.publish(
            TopicArn=os.environ['ALERT_TOPIC'],
            Subject=f'Idle EBS waste: ${total:.0f}/mo across {len(waste)} volumes',
            Message=json.dumps(waste, indent=2),
        )
    return {'waste_count': len(waste), 'monthly_savings': total}

Results

Metric Before After
Monthly AWS spend $92,000 $57,000
Annualized savings $420,000
Uptime (90-day window) 99.92% 99.97%
Per-customer P&L visibility None Real-time dashboard

“Ohveda’s FinOps framework gave us cost visibility we never had. The per-customer dashboard alone has changed how we price enterprise contracts.” — Arjun Mehta, CTO