Martin Rylko
  • Services
  • Blog
  • About
  • Contact
  • Get in Touch
Martin Rylko

Senior Cloud Architect & DevOps Engineer. Specializing in Microsoft Azure, IaC, Cloud Security and AI.

Navigation

  • Services
  • Blog
  • About
  • Contact

Collaboration

Looking for an experienced architect for your Azure project? Get in touch.

rylko@cloudmasters.cz

© 2026 Martin Rylko. All rights reserved.

Built in the cloud. Deployed via Azure Static Web Apps.

Home/Blog/Azure FinOps: 7 Steps to Cut Cloud Costs by 30%
All articlesČíst česky

Azure FinOps: 7 Steps to Cut Cloud Costs by 30%

2/26/2026 3 min
#Azure#FinOps#Cost Optimization#Cloud

Azure FinOps: 7 Steps to Cut Cloud Costs by 30%

Every month I see the same pattern – companies migrate to Azure, enthusiastically provision resources, and then the invoice arrives. "Why are we paying so much?" is a question I hear at least once a week. After dozens of FinOps audits across enterprise environments, I'm sharing seven concrete steps that actually work.

1. Enable Cost Management and Set Up Alerts

Surprisingly, many organizations haven't even set up basic budget alerts. Azure Cost Management is free and should be the first thing you configure:

resource budget 'Microsoft.Consumption/budgets@2023-11-01' = {
  name: 'budget-prod-monthly'
  properties: {
    category: 'Cost'
    amount: 5000
    timeGrain: 'Monthly'
    timePeriod: {
      startDate: '2026-01-01'
      endDate: '2027-01-01'
    }
    notifications: {
      actual80: {
        enabled: true
        operator: 'GreaterThanOrEqualTo'
        threshold: 80
        contactEmails: ['cloud-team@company.com']
        thresholdType: 'Actual'
      }
      forecast100: {
        enabled: true
        operator: 'GreaterThanOrEqualTo'
        threshold: 100
        contactEmails: ['cloud-team@company.com', 'cfo@company.com']
        thresholdType: 'Forecasted'
      }
    }
  }
}

Set up two alerts: 80% actual spend (you still have time to react) and 100% forecasted (proactive warning).

2. Right-Sizing: Most VMs Are Oversized

From my audits, 60-70% of production VMs run on larger sizes than they need. Azure Advisor will tell you which ones:

# List right-sizing recommendations from Azure Advisor
az advisor recommendation list \
  --category Cost \
  --query "[?shortDescription.problem=='Right-size or shutdown underutilized virtual machines'].{
    VM:resourceMetadata.resourceId,
    CurrentSize:extendedProperties.currentSku,
    TargetSize:extendedProperties.targetSku,
    Savings:extendedProperties.savingsAmount
  }" \
  --output table

Typical example: a client had 20 VMs on Standard_D4s_v5 (4 vCPU, 16 GB RAM) with average CPU utilization of 8%. Switching to Standard_D2s_v5 saved 50% on compute costs with no performance impact.

3. Reserved Instances and Savings Plans

The fastest path to significant savings. Comparison:

ModelSavings vs. PAYGFlexibilityBest For
Pay-as-you-go0%MaximumDev/test, spike workloads
1-year Reserved30-40%Fixed VM family/regionProduction DB, stable VMs
3-year Reserved55-72%Fixed VM family/regionCore infra, SQL servers
Savings Plan 1Y15-25%Any computeMixed workloads
Savings Plan 3Y30-45%Any computeEnterprise commitment

Practical tip: Start by analyzing the last 30 days of consumption in Cost Management → Reservations → Recommendations. Azure will suggest the optimal mix.

4. Auto-Shutdown for Dev/Test Environments

Dev and staging environments run 24/7 but are only used 10 hours a day. Auto-shutdown saves 65% on compute costs:

// Auto-shutdown for dev VMs at 7 PM
resource autoShutdown 'Microsoft.DevTestLab/schedules@2018-09-15' = {
  name: 'shutdown-computevm-${vmName}'
  location: location
  properties: {
    status: 'Enabled'
    taskType: 'ComputeVmShutdownTask'
    dailyRecurrence: {
      time: '1900'
    }
    timeZoneId: 'Central Europe Standard Time'
    targetResourceId: vm.id
    notificationSettings: {
      status: 'Enabled'
      timeInMinutes: 15
      emailRecipient: 'dev-team@company.com'
    }
  }
}

For AKS clusters, use the Start/Stop feature – in non-prod environments, stop the cluster overnight and on weekends.

5. Storage Tiering and Lifecycle Policies

Azure Storage is the silent budget killer. Most data goes unread after 30 days but stays on the Hot tier:

{
  "rules": [
    {
      "name": "lifecycle-optimization",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "baseBlob": {
            "tierToCool": { "daysAfterModificationGreaterThan": 30 },
            "tierToArchive": { "daysAfterModificationGreaterThan": 90 },
            "delete": { "daysAfterModificationGreaterThan": 365 }
          },
          "snapshot": {
            "delete": { "daysAfterCreationGreaterThan": 90 }
          }
        },
        "filters": {
          "blobTypes": ["blockBlob"],
          "prefixMatch": ["logs/", "backups/", "exports/"]
        }
      }
    }
  ]
}

Moving from Hot to Cool tier reduces storage costs by 50%, Archive tier by 90%.

6. Spot VMs for Batch and Non-Critical Workloads

Azure Spot VMs offer up to 90% savings, but can be evicted at any time. Ideal for:

  • CI/CD build agents
  • Batch data processing
  • Machine learning training
  • Non-prod AKS node pools
resource spotPool 'Microsoft.ContainerService/managedClusters/agentPools@2024-02-01' = {
  name: 'spotnodes'
  parent: aksCluster
  properties: {
    count: 3
    vmSize: 'Standard_D4s_v5'
    scaleSetPriority: 'Spot'
    scaleSetEvictionPolicy: 'Delete'
    spotMaxPrice: -1 // pay current spot price
    nodeTaints: ['kubernetes.azure.com/scalesetpriority=spot:NoSchedule']
    mode: 'User'
  }
}

7. Tagging Strategy and Cost Allocation

Without tags, you don't know who's paying for what. Minimum tagging policy:

TagExamplePurpose
environmentprod, staging, devFilter costs per environment
cost-centerCC-1234Allocate to cost centers
ownerjan.novak@company.comResponsible person
projecteshop-replatformCosts per project
auto-shutdowntrueShutdown candidates

Enforce tagging via Azure Policy – Deny deployments without required tags:

resource tagPolicy 'Microsoft.Authorization/policyAssignments@2022-06-01' = {
  name: 'require-cost-tags'
  properties: {
    displayName: 'Require cost allocation tags'
    policyDefinitionId: '/providers/Microsoft.Authorization/policyDefinitions/871b6d14-10aa-478d-b466-ef6698305b4c'
    enforcementMode: 'Default'
    parameters: {
      tagName: { value: 'cost-center' }
    }
  }
}

FinOps Checklist (Summary)

StepExpected SavingsEffort
Cost Management alertsOverspend preventionLow
VM right-sizing15-50% computeMedium
Reserved Instances30-72% stable workloadsLow
Auto-shutdown dev/test65% non-prod computeLow
Storage lifecycle50-90% storageMedium
Spot VMsup to 90% batch computeMedium
Tagging + cost allocationVisibility & accountabilityMedium

Conclusion

FinOps is not a one-time project – it's a continuous process. Start with Cost Management alerts and right-sizing (lowest effort, highest impact), then add Reserved Instances and auto-shutdown. After implementing all seven steps, you can realistically expect a 25-40% reduction in your monthly Azure bill.

Need help with a FinOps audit of your Azure environment? Check out our cloud architecture services or reach out for a free consultation.

Tags:#Azure#FinOps#Cost Optimization#Cloud
LinkedInX / Twitter

About the author

Martin Rylko

Martin Rylko

Senior Cloud Architect & DevOps Engineer

14+ years in IT – from on-premises datacenters and Hyper-V clustering to cloud infrastructure on Microsoft Azure. I specialize in Landing Zones, IaC automation, Kubernetes and security compliance.

Email LinkedInFull profile

Frequently Asked Questions

What is FinOps and why does it matter for Azure environments?▾
FinOps (Financial Operations) is a discipline combining finance, technology, and business to manage cloud costs. In Azure environments, it is critical because without active management, costs grow 20-40% annually due to shadow IT, oversized VMs, and unused resources. The FinOps framework introduces visibility, accountability, and optimization into your cloud budget.
How much can you realistically save by implementing FinOps in Azure?▾
From my projects, typical savings range from 25-40% of monthly costs. The biggest immediate wins come from VM right-sizing (15-20%), Reserved Instances (30-72% vs pay-as-you-go), and shutting down dev/test environments outside business hours (65% on compute). Advanced optimizations like Spot VMs for batch workloads add another 10-15%.
How do I set up Azure Cost Management for multiple subscriptions?▾
Create a Management Group hierarchy and configure Cost Management at the root Management Group level for aggregated visibility. Set budgets and alerts on each subscription individually, but dashboards and reports at the MG level. Export data to a Log Analytics Workspace for custom KQL queries and Grafana dashboards.
Are Reserved Instances worth it for smaller companies?▾
Yes, if you have stable workloads running 24/7 for at least 12 months. One-year reservations save 30-40%, three-year save 55-72%. For smaller companies, I recommend starting with 1-year RIs on database servers and production VMs you know will keep running. Azure Savings Plans are a more flexible alternative -- you commit to minimum hourly spend, not a specific VM size.

You might also like

Kubernetes AKS Production Checklist for Architects

Kubernetes AKS production readiness checklist covering Azure CNI networking, Workload Identity RBAC, cluster autoscaling, monitoring, and DR strategy.

Read

Zero Trust Azure: Conditional Access Policy Design

Design Zero Trust identity architecture with Entra ID Conditional Access policies. MFA enforcement, device compliance, session controls, and named locations for Azure environments.

Read

NIS2 Azure Compliance: Checklist for Architects

NIS2 Azure compliance checklist with concrete steps: Azure Policy governance, Defender for Cloud CSPM, centralized logging, and Zero Trust identity.

Read