← Back to Blog

FinOps Architecture Tear-Down: How I Cut a Startup's AWS Bill by 40%

How I built a reliable WhatsApp AI shopping assistant for Clickmothercare that survives hallucinated products, silent save failures, and multi-agent handoff bugs.

Anas Rhimi
Anas Rhimi August 2026 • 8 min read

A few months ago, I was brought in by a Series A B2B SaaS startup. They were burning through their runway at an alarming rate, and their biggest expense outside of payroll was their AWS bill, which was sitting at a staggering $14,000 per month. They were preparing to hire a full-time Senior DevOps engineer for $130,000/yr just to manage the bleeding.

Instead, I offered them a flat-rate freelance architectural teardown. In 4 weeks, I re-architected their entire cluster, migrated their legacy workloads, and slashed their monthly AWS bill to just under $8,000—a 40% reduction, saving them over $70,000 a year while completely eliminating the need to hire a full-time infrastructure engineer.

Here is exactly how poorly designed cloud architectures bleed money, and the technical teardown of how I fixed it.

1. The Zombie Resources (Orphaned EBS Volumes & Snapshots)

The first thing I look for in any AWS account is what I call "Zombie Resources"—infrastructure that is provisioned and costing money, but completely detached from any running application. In this startup's case, developers were constantly spinning up EC2 instances, terminating them when done, but forgetting to delete the attached EBS volumes.

I ran a quick Python script using Boto3 to hunt these down:

import boto3

ec2 = boto3.client('ec2', region_name='us-east-1')
volumes = ec2.describe_volumes(Filters=[{'Name': 'status', 'Values': ['available']}])

total_wasted_gb = 0
for volume in volumes['Volumes']:
    print(f"Orphaned Volume: {volume['VolumeId']}, Size: {volume['Size']}GB")
    total_wasted_gb += volume['Size']

print(f"Total Wasted Storage: {total_wasted_gb}GB")

We found over 4TB of unattached EBS volumes and ancient RDS snapshots that were costing them $800/mo for absolutely nothing. I wiped them instantly.

2. Over-Provisioned Kubernetes Nodes (EKS)

The startup was running Amazon EKS for their microservices. They had configured their managed node groups using m5.2xlarge instances, assuming they needed massive compute power. I deployed Kube-state-metrics and Prometheus to analyze their actual pod utilization.

The reality? Their cluster was running at 15% CPU utilization and 40% Memory utilization during peak hours. They were paying for compute they weren't using.

The Fix: I implemented Karpenter, AWS's high-performance Kubernetes cluster autoscaler. Instead of static, oversized nodes, Karpenter dynamically provisions exactly the right compute instances (often mixing smaller instances and Spot instances) based on the actual pod resource requests.

# Karpenter NodePool configuration
apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
  name: default
spec:
  template:
    spec:
      requirements:
        - key: karpenter.sh/capacity-type
          operator: In
          values: ["spot", "on-demand"]
        - key: kubernetes.io/arch
          operator: In
          values: ["amd64", "arm64"]
  limits:
    cpu: 1000
  disruption:
    consolidationPolicy: WhenUnderutilized
    expireAfter: 720h

By mixing ARM64 instances (Graviton) and aggressive Spot instance utilization for stateless workloads, cluster compute costs dropped by 55%.

3. Data Transfer and NAT Gateway Fees

One of the most silent killers in AWS billing is the NAT Gateway. The startup was routing massive amounts of internal traffic (specifically S3 uploads and DynamoDB queries) from private subnets through their NAT Gateways. AWS charges $0.045 per GB processed through a NAT Gateway.

I implemented VPC Endpoints (Gateway endpoints for S3 and DynamoDB). This forces the traffic to stay entirely within the AWS backbone, bypassing the NAT Gateway completely.

This single Terraform change took 10 minutes to write and instantly shaved $1,200/mo off their bill.

Conclusion: Rent the Architect, Own the Code

Startups often rush to hire expensive, full-time DevOps engineers to fix bleeding infrastructure. But building a CI/CD pipeline, optimizing Kubernetes, and securing AWS is generally a one-time architectural lift. Once the foundation is built and automated using Terraform and GitOps, maintaining it is trivial for your existing software engineers.

If your AWS bill is starting to look like a phone number, don't hire a full-time engineer. Hire a freelance architect to tear it down, rebuild it properly, and hand the keys back to you.

Is your AI agent's infrastructure secure and reliable?

Book a Free 15-Min Technical Audit
Hire Me