Written by

Halkwinds Editorial Team

Halkwinds Research & Editorial

Published February 15, 2026
Blog image
Cloud

Cloud Cost Optimization: Cutting AWS and Azure Bills Without Cutting Performance

Proven FinOps techniques — reserved instances, rightsizing, auto-scaling policies, and architectural changes — that reduce cloud spend by 30–60%.

Every IT director knows the feeling: the monthly cloud invoice arrives, it's higher than last month again, and no one can fully explain why. Cloud spend has a way of creeping upward through forgotten test environments, oversized instances chosen "just to be safe," and storage tiers that never get reviewed. The good news is that most organizations are running with significant waste built in — industry estimates vary, but analysts frequently cite that 25–35% of cloud spend is wasted on average. That waste is recoverable. This guide walks through the FinOps techniques we use at Halkwinds to reduce client cloud bills by 30–60% without degrading performance, uptime, or developer velocity.

  • Background / Why This Matters
  • Core Concepts and Architecture
  • Implementation Strategy
  • Scaling and Operational Considerations
  • Common Mistakes / What to Avoid
  • Frequently Asked Questions
  • Conclusion

Background / Why This Matters

Cloud pricing is designed to be flexible, not cheap. The on-demand pricing model that makes it trivial to spin up a server in seconds is also the model that costs the most. When engineering teams provision infrastructure quickly to hit deadlines, they rarely go back to optimize it. Over 12–24 months, that accumulates into a substantial recurring expense that flows straight to the bottom line.

For an IT director, cloud cost is no longer a back-office line item — it's a board-level metric. Finance wants predictability. Engineering wants freedom to build. FinOps is the operational discipline that reconciles those two goals: it makes cost a shared, visible, and continuously managed responsibility rather than a quarterly surprise.

The reason this matters now is that the stakes have grown. As workloads shift toward data-intensive analytics and AI/ML training, compute and egress costs scale nonlinearly. A single misconfigured GPU cluster or an unbounded data pipeline can add tens of thousands of dollars to a monthly bill before anyone notices.

The organizations that win at cloud economics treat cost as an engineering signal — something to be monitored and tuned like latency or error rate, not something to be negotiated once a year with procurement.

Actionable takeaway: Before optimizing anything, establish a baseline. Pull the last three months of billing data from AWS Cost Explorer or Azure Cost Management and segment it by service, environment, and team. You cannot cut what you cannot see.

Core Concepts and Architecture

Effective cost optimization rests on a handful of levers. Understanding what each does — and its risk profile — is what separates disciplined savings from reckless cuts that trigger outages.

The Four Primary Levers

  • Commitment-based discounts: Reserved Instances (RIs), Savings Plans on AWS, and Reservations on Azure. You trade flexibility for discounts of 30–72% by committing to 1- or 3-year usage.
  • Rightsizing: Matching instance types and sizes to actual utilization instead of provisioned capacity. Most overprovisioned VMs run below 20% CPU utilization.
  • Elasticity: Auto-scaling and scheduled scaling so you pay for capacity only when demand exists. Non-production environments rarely need to run 24/7.
  • Architectural change: Moving to serverless, managed services, spot/preemptible instances, and cheaper storage tiers. This delivers the deepest savings but requires engineering effort.

Understanding the Pricing Models

Pricing Model Typical Discount vs On-Demand Flexibility Best For
On-Demand 0% (baseline) Highest Spiky, unpredictable, short-lived workloads
Savings Plans / Reservations (1-yr) ~30–40% Medium Steady baseline compute you'll run all year
Reserved Instances (3-yr) ~50–72% Low Long-lived, stable production workloads
Spot / Preemptible ~60–90% Very low (can be reclaimed) Fault-tolerant batch jobs, CI, stateless workers

The architecture principle is to build a coverage strategy: cover your predictable baseline with commitments, absorb variable peaks with on-demand, and offload interruptible work to spot instances. A mature deployment might run 70% of compute on commitments, 20% on-demand, and 10% on spot.

Actionable takeaway: Map every major workload to the pricing model that fits its risk tolerance. A stateless image-processing queue belongs on spot; your production database does not.

Implementation Strategy

Optimization should proceed in phases, ordered by effort-to-savings ratio. Start with the changes that require zero code and no architectural risk, then progress toward deeper work.

Phase 1: Eliminate Waste (Week 1–2)

  1. Kill zombie resources. Unattached EBS/managed disks, idle load balancers, orphaned snapshots, and old AMIs cost money silently. Use AWS Cost Explorer's resource-level view or Azure Cost Management's cost analysis to surface them.
  2. Delete forgotten environments. Query for resources with no traffic or CPU activity over the past 30 days.
  3. Fix storage tiering. Move infrequently accessed objects to S3 Intelligent-Tiering or Azure Cool/Archive tiers. Set lifecycle policies so this happens automatically going forward.

Phase 2: Rightsize (Week 2–4)

Pull utilization metrics from CloudWatch or Azure Monitor. Any instance consistently under 40% CPU and memory over a two-week window is a rightsizing candidate. AWS Compute Optimizer and Azure Advisor both generate concrete recommendations — treat them as a starting hypothesis, not gospel, and validate against peak-hour load before resizing.

Phase 3: Apply Commitments (Week 3–4)

Only after rightsizing should you buy commitments — otherwise you lock in discounts on oversized infrastructure. Start conservatively with Savings Plans covering your stable baseline, then increase coverage as confidence grows. Ladder your commitments (staggered expiration dates) so you're never forced to renew everything at once.

Phase 4: Codify with Infrastructure as Code

Sustainable savings require enforcement. We use Terraform to make the optimized state the default state. Define instance sizes, tagging standards, storage policies, and auto-scaling rules as code so that new deployments inherit cost discipline automatically. Tagging is critical here — enforce mandatory tags (owner, environment, cost-center) through Terraform policy so every dollar is attributable.

This is where Halkwinds frequently engages: our Cloud engineering team builds the Terraform modules and CI guardrails that keep costs optimized long after the initial cleanup, so savings don't erode within two quarters.

Actionable takeaway: Sequence matters. Clean up, then rightsize, then commit, then codify. Buying reservations first is the most common and most expensive mistake.

Scaling and Operational Considerations

A one-time cleanup produces a one-time saving. FinOps is about keeping the bill low as the business grows. That requires operational habits, not just projects.

Auto-Scaling Done Right

Configure auto-scaling groups (AWS) or Virtual Machine Scale Sets (Azure) to respond to real demand signals — request latency, queue depth, or CPU — rather than fixed schedules alone. For predictable patterns, combine both: scheduled scaling to pre-warm capacity before known peaks, and metric-based scaling to handle surprises. Always set sensible minimums so you don't sacrifice availability for a few dollars.

Shut Down Non-Production

Development, staging, and QA environments rarely need to run overnight or on weekends. Automating a shutdown schedule for these environments can cut their compute cost by roughly 65–70% (they run ~40 hours instead of 168 per week). This alone often pays for an entire optimization engagement.

Make Cost Visible

Set up budgets and anomaly detection in AWS Cost Explorer and Azure Cost Management. Route alerts to the teams that own the spend, not just finance. When a team sees its own dashboard, behavior changes fast. Establish a monthly FinOps review where engineering, finance, and operations look at cost trends together.

Governance Guardrails

  • Enforce tagging at deployment time so untagged resources are rejected.
  • Use Service Control Policies (AWS) or Azure Policy to block expensive instance families in non-production accounts.
  • Require budget thresholds on new projects before provisioning.

Actionable takeaway: Appoint a FinOps owner — even part-time — accountable for the monthly trend. Distributed ownership without accountability leads to distributed neglect.

Common Mistakes / What to Avoid

Cost optimization goes wrong when it becomes cost-cutting. Here are the traps we see most often.

  • Buying reservations before rightsizing. You lock in discounts on capacity you don't need, and you can't easily undo a 3-year commitment.
  • Optimizing the small stuff first. Focus on the top 20% of line items that drive 80% of spend — usually compute, then data transfer, then storage. Don't spend a week saving $50/month.
  • Ignoring data egress. Cross-region and internet egress charges are easy to overlook and hard to reverse. Architect for locality; keep chatty services in the same region and AZ where possible.
  • Aggressive downsizing without headroom. Cutting instances to the bone triggers throttling and incidents. Rightsize to a healthy target (e.g., 60–70% peak utilization), not to zero slack.
  • Treating optimization as a one-off project. Without codified guardrails, spend drifts back up within two to three quarters as new workloads accumulate.
  • No cost attribution. If you can't tie spend to teams and features, you can't hold anyone accountable or make informed trade-offs.

Actionable takeaway: Protect performance explicitly.