Cloud cost optimisation is not about cutting corners — it is about eliminating waste and ensuring every pound of cloud spend is delivering value. In our experience managing cloud environments for UK businesses, the average organisation wastes between 30% and 40% of their cloud bill on resources that are idle, oversized, or priced suboptimally.

This guide covers the highest-impact optimisation levers across AWS and Azure, with specific actions you can take immediately.

Step 1: Get Visibility Before You Optimise

You cannot optimise what you cannot see. The first step is always establishing proper cost visibility:

  • AWS: Enable Cost Explorer, set up cost allocation tags on every resource, and enable AWS Compute Optimizer. Create a cost anomaly detection alert so you are notified of unexpected spend spikes within 24 hours.
  • Azure: Use Azure Cost Management + Billing with resource tags for allocation. Enable Azure Advisor recommendations — it surfaces rightsizing and reservation opportunities automatically.

Without tagging, you cannot attribute costs to teams, projects, or environments. Implement a tagging policy immediately and enforce it via AWS Service Control Policies or Azure Policy.

Step 2: Eliminate Idle and Orphaned Resources

This is consistently the fastest win. In every cloud audit we conduct, we find significant spend on resources that are doing nothing:

AWS

  • Idle EC2 instances: Any instance with CPU utilisation below 5% over 14 days is a candidate for termination or rightsizing. Use Compute Optimizer to identify these automatically.
  • Unattached EBS volumes: Volumes that are not attached to a running instance still incur storage costs. Run aws ec2 describe-volumes --filters Name=status,Values=available to find them.
  • Unused Elastic IPs: Elastic IPs not associated with a running instance cost $0.005/hour — trivial individually, but they accumulate.
  • Old snapshots: EBS snapshots are charged at $0.05/GB/month. Implement a snapshot lifecycle policy to automatically delete snapshots older than your retention requirement.
  • Idle load balancers: ALBs and NLBs with no registered targets or minimal traffic should be removed.

Azure

  • Deallocated VMs: Stopped (deallocated) VMs do not incur compute costs, but their managed disks do. Review and delete disks attached to permanently decommissioned VMs.
  • Unattached managed disks: Use Azure Advisor or run a Resource Graph query to find disks with no owner VM.
  • Unused public IP addresses: Static public IPs not associated with a resource incur charges.
  • Empty resource groups: Often indicate abandoned projects with lingering resources.

Step 3: Rightsize Compute

Oversized instances are the single largest source of cloud waste. Engineers provision for peak load and never revisit the sizing. The result: production workloads running on instances that are 4–8x larger than required.

AWS: Compute Optimizer analyses CloudWatch metrics and recommends optimal instance types. Pay particular attention to memory utilisation — CloudWatch does not collect memory metrics by default, so install the CloudWatch agent to get accurate data.

Azure: Azure Advisor provides rightsizing recommendations based on 7 or 30-day utilisation data. The default threshold is 5% CPU — consider raising this to 20% for a more aggressive rightsizing programme.

A practical approach: rightsize development and staging environments first (lower risk), validate the performance impact, then apply the same changes to production.

Step 4: Commit to Savings Plans and Reserved Instances

On-demand pricing is the most expensive way to run predictable workloads. For any resource running more than 60% of the time, commitment-based pricing delivers significant savings:

AWS

  • Compute Savings Plans: 1 or 3-year commitment to a consistent amount of compute usage (measured in $/hour). Applies automatically across EC2, Lambda, and Fargate. Savings of 40–66% vs on-demand.
  • EC2 Reserved Instances: For specific instance families in specific regions. Standard RIs offer up to 72% savings. Convertible RIs offer up to 54% with flexibility to change instance type.
  • RDS Reserved Instances: Database instances are often the largest single line item. 1-year RDS RIs typically save 40–45% vs on-demand.

Azure

  • Azure Reservations: 1 or 3-year commitments for VMs, SQL Database, Cosmos DB, and other services. Savings of 40–72% vs pay-as-you-go.
  • Azure Savings Plans for Compute: Flexible commitment that applies across VM sizes and regions. Savings of up to 65%.
  • Azure Hybrid Benefit: If you have existing Windows Server or SQL Server licences with Software Assurance, apply Azure Hybrid Benefit to eliminate the OS/SQL licence cost from your Azure bill. This alone can reduce VM costs by 40–49%.

Step 5: Optimise Storage

Storage costs compound silently. Implement lifecycle policies to automatically transition data to cheaper storage tiers as it ages:

  • AWS S3: Move objects to S3 Infrequent Access after 30 days, Glacier Instant Retrieval after 90 days, Glacier Deep Archive after 180 days. Enable S3 Intelligent-Tiering for unpredictable access patterns.
  • Azure Blob Storage: Implement lifecycle management policies to transition blobs from Hot to Cool after 30 days and to Archive after 90 days.
  • EBS/Managed Disks: Audit volume types — gp2 volumes in AWS should be migrated to gp3 (same performance, 20% cheaper). Azure Premium SSD v2 offers better price/performance than Premium SSD for most workloads.

Step 6: Tackle Data Transfer Costs

Data transfer is often overlooked but can represent 10–20% of a cloud bill. Key areas to address:

  • Minimise cross-AZ traffic by co-locating tightly coupled services in the same AZ
  • Use VPC endpoints (AWS) or Private Endpoints (Azure) to keep traffic off the public internet and avoid NAT gateway charges
  • Review CloudFront/Azure CDN configuration — serving content from the edge reduces origin data transfer costs
  • Compress data before transfer where possible

Building a FinOps Practice

One-time optimisation delivers short-term savings. Sustained savings require a FinOps practice — a continuous cycle of visibility, optimisation, and governance:

  1. Weekly cost review meetings with engineering and finance
  2. Cost budgets and alerts per team/project/environment
  3. Tagging compliance enforcement via policy
  4. Monthly rightsizing review using Compute Optimizer/Azure Advisor
  5. Quarterly reservation review — are commitments still aligned with actual usage?
  6. Showback or chargeback to create accountability at team level

Baycop provides cloud cost optimisation engagements for AWS and Azure environments. Our typical engagement delivers 30–45% cost reduction within 90 days. Book a free cloud cost review to find out how much you could save.