
If your AWS or Azure invoice is climbing faster than your traffic, cloud cost optimization is the conversation you can no longer push to next quarter. Most teams overspend by 30% or more without realizing it, and the culprit is rarely a single big mistake. It’s a slow drip of forgotten instances, oversized databases, and storage tiers nobody audited.
The good news? You can claw a lot of that back without slowing your engineers down. Here are nine tactics I keep coming back to with clients, ranked roughly by how quickly they pay off.
1. Right-Size Before You Reserve Anything
Before you commit to a single savings plan, look at what you’re actually using. Most VMs run at 10-20% CPU. That’s not optimization, that’s waste with a monthly subscription.
Pull two weeks of CloudWatch or Azure Monitor metrics. Anything sitting under 40% utilization is a candidate for a smaller instance family. I’ve seen teams drop a fleet of m5.2xlarge boxes down to m6i.large and shave 60% off compute, with zero impact on response time.
Cloud cost optimization starts here because everything else (reservations, autoscaling, budgets) is built on top of accurate sizing.
2. Kill Zombie Resources on a Schedule
Every cloud account has ghosts. Unattached EBS volumes from a 2024 migration. Old snapshots nobody remembers. Load balancers pointing at nothing. Elastic IPs sitting idle, charging you by the hour.
Set up a weekly automated scan. AWS Trusted Advisor and Azure Advisor flag a lot of this for free. For deeper sweeps, tools like Cloud Custodian let you write policies that auto-delete anything untagged for 30 days. One e-commerce client found $4,200 a month in zombie storage on the first run. Pure profit recovered.
3. Use Spot and Preemptible Instances Where You Can
Spot instances are still the most underused trick in cloud cost optimization. You get the same hardware at 60-90% off, with the catch that the provider can reclaim it with a two-minute warning.
That sounds scary until you map your workloads. Batch jobs, CI/CD runners, data processing, model training, dev environments, none of them care if a node disappears. Kubernetes with Karpenter or EKS handles spot interruptions gracefully. So does Azure’s Spot VMs through AKS.
If you’re running a startup and trying to stretch runway, this single change can buy you months. We dig into that mindset more in our piece on product-market fit tactics for founders.
4. Commit Smart: Savings Plans and Reserved Instances
Once you’ve right-sized, lock in discounts. Compute Savings Plans on AWS give you up to 66% off in exchange for a 1 or 3 year commitment. Azure Reserved VM Instances work similarly.
The trick is to commit only to your baseline, the workloads you know will be running at 3am next January. Cover the spiky stuff with on-demand or spot. A common mistake is reserving 100% of current usage right after a growth spurt, then watching utilization drop and being stuck paying for capacity you don’t need.
Rule of thumb: reserve 60-70% of steady-state usage. Layer Savings Plans on top for flexibility across instance families.
5. Move Cold Data to Cheaper Storage Tiers
S3 Standard costs about $0.023 per GB. S3 Glacier Deep Archive costs $0.00099. That’s a 23x difference for data you touch once a year.
Set up lifecycle policies. Anything not accessed in 30 days moves to Infrequent Access. After 90 days, Glacier. After a year, Deep Archive. Logs, backups, old customer exports, compliance archives, all of it belongs in cold storage.
Same logic applies to Azure Blob (Hot, Cool, Archive) and Google Cloud Storage. This one tactic alone has saved clients five figures a month, especially anyone with media files or analytics dumps piling up.
6. Go Serverless for Unpredictable Workloads
If a workload runs less than a few hours a day, you’re probably better off on Lambda, Cloud Functions, or Azure Functions. You pay per invocation, not per running hour.
Webhooks, image processing, scheduled jobs, occasional API endpoints. All of these are perfect serverless candidates. We broke down the math in detail in our guide to serverless architecture wins that slash cloud costs, and the numbers genuinely surprise people.
The catch: serverless gets expensive at very high constant load. Run the calculator before migrating a workload that’s already busy 24/7.
7. Tag Everything, Then Hold Teams Accountable
You cannot optimize what you cannot attribute. If your finance team can’t tell which team owns the $18,000 RDS cluster, nobody will turn it off.
Enforce a tagging policy: Environment, Owner, CostCenter, Project. Make it mandatory at resource creation through Service Control Policies or Azure Policy. Anything untagged gets flagged or auto-stopped after a grace period.
Then publish a monthly cost-per-team report. The behavior change is immediate. Engineers suddenly remember they spun up that GPU instance "just to test something." Cloud cost optimization is a culture problem at least as much as a technical one, and tagging makes the culture visible.
8. Optimize Data Transfer and Egress Fees
Egress is the silent killer. Cross-region replication, NAT Gateway traffic, CDN misconfigurations, all of it adds up to bills that make no sense until you trace them.
A few quick wins. Use VPC endpoints for S3 and DynamoDB so traffic doesn’t route through the NAT Gateway. Put a CloudFront or Cloudflare CDN in front of anything user-facing. Keep chatty microservices in the same AZ when possible. Compress payloads before sending them across regions.
I once audited a SaaS company paying $11,000 a month in egress because their analytics pipeline shuffled raw JSON between us-east-1 and us-west-2 every hour. Switched to Parquet with compression, kept the processing in one region, dropped it to under $800.
9. Use FinOps Tooling and Set Real Budgets
Manual spreadsheets stop scaling around month three. You need tooling that gives engineers and finance the same view of the bill.
CloudHealth, Vantage, Apptio Cloudability, and CAST AI all do this well. If you want free, AWS Cost Explorer plus a Cost Anomaly Detection rule covers 80% of the basics. The FinOps Foundation framework is the open standard most mature teams follow, and it’s worth reading even if you don’t adopt every practice.
Set budget alerts at 50%, 80%, and 100% of expected spend, with notifications going to whoever can actually do something about it. Not a shared inbox nobody checks.
And tie this into your broader governance work. We covered the executive side of this in our post on IT governance tactics every CIO needs, because cloud spend is now a board-level number whether your CFO knows it or not.
Putting It All Together
You don’t need to do all nine at once. Pick the two that match your biggest pain. Most teams start with right-sizing and zombie cleanup because the wins are fast and visible. Then they layer in commitments, storage tiering, and FinOps tooling over the next quarter.
The teams that win at cloud cost optimization treat it like a continuous practice, not a one-off project. Quarterly reviews. Engineers who care about the bill because they can see their own team’s slice. Architectural decisions that consider cost alongside performance and reliability.
Cloud cost optimization isn’t about being cheap. It’s about spending where it actually moves the business and stopping the bleeding everywhere else. Start with one tactic this week, measure the savings, and use that to fund the next round. Your CFO will thank you, and so will your engineers when they get budget for the things that actually matter.
References
- FinOps Foundation Framework: https://www.finops.org/framework/
- AWS Well-Architected Cost Optimization Pillar: https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/
- Azure Cost Management documentation: https://learn.microsoft.com/en-us/azure/cost-management-billing/
- Google Cloud cost optimization best practices: https://cloud.google.com/architecture/framework/cost-optimization

