← Back to Case Studies
Mobile App

40% AWS Cost Reduction Through Infrastructure Optimization

$15k/month savings

Company Size

30-50 employees

Timeline

2 months

Technologies

AWSTerraformCloudWatchGrafana

40% AWS Cost Reduction Through Infrastructure Optimization

Overview

A mobile app company with 2M+ users was experiencing rapidly escalating AWS costs that were eating into their runway. Despite knowing they were overspending, they lacked the expertise to identify and fix inefficiencies.

Industry: Mobile App Company Company Size: 30-50 employees Timeline: 2 months Technologies: AWS (EC2, RDS, S3, CloudWatch), Terraform, Grafana

The Challenge

The startup's AWS bill had grown from $10k/month to $38k/month in just 6 months, but user growth didn't justify this increase.

Specific Pain Points

  • Runaway costs with no clear explanation
  • Over-provisioned resources "just in case"
  • No cost monitoring or alerting
  • Development/staging environments running 24/7
  • Inefficient database usage with expensive instance types
  • Lack of visibility into what was driving costs
  • No tagging strategy to track spending by service

Business Impact

The CFO's concern: "At this rate, we'll burn through our Series A funding 6 months ahead of schedule."

The Solution

I conducted a comprehensive infrastructure audit and implemented targeted optimizations:

1. Cost Analysis & Audit

First, I mapped all AWS spending:

  • Enabled AWS Cost Explorer with detailed tagging
  • Categorized costs by environment, service, and team
  • Identified top 10 cost drivers
  • Created cost allocation dashboard

Key Finding: 60% of costs were in non-production environments.

2. Right-Sizing EC2 Instances

Analyzed actual resource utilization:

# Analysis revealed most instances at 15-25% CPU utilization
# Recommendations:
- t3.xlarge → t3.large (production web servers)
- m5.2xlarge → m5.xlarge (application servers)
- Converted steady-state workloads to Savings Plans

Result: 35% reduction in EC2 costs

3. RDS Optimization

Database instances were severely over-provisioned:

Before:

  • db.r5.4xlarge (16 vCPU, 128GB RAM) for staging
  • db.r5.2xlarge (8 vCPU, 64GB RAM) for production
  • Continuous backups for all databases

After:

  • db.t3.large for staging (scheduled start/stop)
  • db.r5.xlarge for production (sufficient for actual load)
  • Optimized backup retention (7 days vs 35 days)
  • Enabled Multi-AZ only for production

Result: $8k/month savings on RDS alone

4. Environment Scheduling

Implemented automatic start/stop for non-production:

# Lambda function to stop dev/staging at 8 PM, start at 8 AM
import boto3
from datetime import datetime

def lambda_handler(event, context):
    ec2 = boto3.client('ec2')
    rds = boto3.client('rds')

    # Stop tagged resources during off-hours
    if is_off_hours():
        stop_dev_resources(ec2, rds)
    else:
        start_dev_resources(ec2, rds)

Result: 70% reduction in dev/staging costs (ran only 50 hours/week instead of 168)

5. S3 Lifecycle Policies

S3 storage costs were $4k/month with no lifecycle management:

{
  "Rules": [
    {
      "Id": "MoveToIA",
      "Status": "Enabled",
      "Transitions": [
        {
          "Days": 30,
          "StorageClass": "STANDARD_IA"
        },
        {
          "Days": 90,
          "StorageClass": "GLACIER"
        }
      ]
    },
    {
      "Id": "DeleteOldLogs",
      "Status": "Enabled",
      "Expiration": {
        "Days": 90
      },
      "Filter": {
        "Prefix": "logs/"
      }
    }
  ]
}

Result: $2.5k/month savings on S3

6. CloudWatch Optimization

CloudWatch Logs were costing $2k/month:

  • Reduced log retention from 365 days to 30 days
  • Filtered out verbose debug logs from production
  • Moved long-term logs to S3 Glacier

Result: 60% reduction in CloudWatch costs

7. Reserved Instances & Savings Plans

Committed to 1-year Savings Plans for baseline usage:

  • Compute Savings Plans for steady EC2 usage
  • RDS Reserved Instances for production databases
  • CloudFront Savings Bundle

Result: 25% discount on committed usage

8. Monitoring & Alerting

Implemented cost monitoring to prevent regression:

  • Daily cost anomaly alerts
  • Weekly cost reports by service
  • Budget alerts at 80% and 100% thresholds
  • Grafana dashboard for real-time cost tracking

The Results

Cost Reduction

  • Monthly AWS bill: $38k → $23k (40% reduction)
  • Annual savings: $180k
  • ROI on consulting: 60x in first year

Detailed Breakdown

CategoryBeforeAfterSavings
EC2$12k$7.8k$4.2k
RDS$14k$6k$8k
S3$4k$1.5k$2.5k
CloudWatch$2k$0.8k$1.2k
Other$6k$6.9k-$0.9k
Total$38k$23k$15k/mo

Performance Impact

Zero degradation in application performance:

  • Same response times
  • Same uptime (99.9%)
  • Same user experience
  • Actually improved with better monitoring

Business Impact

  • Extended runway by 6 months
  • Freed up budget for hiring
  • Improved unit economics
  • Built cost-conscious culture

Technologies Used

  • AWS Services: EC2, RDS, S3, CloudWatch, Lambda, Cost Explorer
  • Infrastructure as Code: Terraform
  • Monitoring: CloudWatch, Grafana
  • Automation: Lambda (Python), CloudWatch Events
  • Cost Management: AWS Cost Explorer, custom scripts

Key Optimizations Summary

  1. ✅ Right-sized EC2 instances (35% savings)
  2. ✅ Optimized RDS instances and backups (57% savings)
  3. ✅ Scheduled dev/staging environments (70% savings)
  4. ✅ Implemented S3 lifecycle policies (62% savings)
  5. ✅ Reduced CloudWatch retention (60% savings)
  6. ✅ Purchased Savings Plans (25% discount)
  7. ✅ Enabled cost monitoring and alerts
  8. ✅ Established tagging strategy

Best Practices Implemented

Tagging Strategy

All resources now tagged with:

Environment: production | staging | development
Service: web | api | database | cache
Team: engineering | data | ml
CostCenter: product | infrastructure

Cost Governance

  • Monthly cost review meetings
  • Approval required for instances > t3.medium
  • Automatic termination of untagged resources
  • Cost attribution to teams

Long-Term Sustainability

Created documentation and training:

  • Infrastructure cost guide
  • Right-sizing playbook
  • Monthly cost review process
  • Team training on cost-conscious development

Lessons Learned

  1. Most companies overprovision by 30-50% - "Just in case" is expensive
  2. Dev/staging shouldn't cost more than production - Schedule them
  3. Monitoring prevents cost creep - What gets measured gets managed
  4. Start with the biggest wins - Focus on RDS and EC2 first
  5. Performance doesn't require over-provisioning - Right-sizing works

Client Testimonial

"We were burning cash on AWS without understanding why. The audit revealed we were paying for the equivalent of 5 empty offices running 24/7. The optimizations paid for themselves in 3 weeks and gave us 6 extra months of runway." - CTO


Concerned About Your AWS Costs?

If your AWS bill is growing faster than your business, I can help identify savings opportunities. Schedule a free AWS cost audit.

Ready to See Similar Results?

Let's discuss how I can help your team overcome similar challenges and achieve measurable improvements.

Schedule a Free Consultation