Why One Internal Application Costs So Much to Host in Azure

October 27, 2026

Azure bills for what is provisioned, and user count has little to do with it. For an application with 40 users, the money usually sits in a few places.

Where the money goes

Compute. An App Service plan on a Premium tier, or virtual machines sized to match the old physical server and running 24 hours a day. Lift-and-shift VMs also carry Windows licensing in the hourly rate.

The database. Azure SQL at a provisioned tier chosen on migration day and never revisited. On small applications this is often the largest line.

Non-production environments. Dev, test and staging copies at the same tier as production, running nights and weekends.

Logging. Log Analytics and Application Insights bill by data ingested. Verbose logging with long retention adds up without anyone noticing.

Leftovers. Unattached disks, old snapshots, unused public IP addresses, backup vaults for deleted machines, and geo-redundant storage where local redundancy would do.

Reductions and what each one trades

  • Right-size compute. Check CPU and memory on the plan or VM over 30 days. If the peak is low, drop a tier. You give up headroom for spikes, and some features exist only on higher tiers: deployment slots, VNet integration, zone redundancy.
  • Right-size the database. Check DTU or vCore utilization. Options are a smaller tier, serverless with auto-pause for a database idle most of the day, or an elastic pool for several small databases. Serverless adds a delay on the first connection after a pause.
  • Schedule non-production. Shut it down outside working hours, or run it at a lower tier. The team gives up out-of-hours access.
  • Reservations and Azure Hybrid Benefit. A one-year or three-year commitment on steady resources, and existing Windows Server and SQL Server licenses applied to Azure. No performance change. You give up flexibility.
  • Logging. Set a retention period and sample high-volume telemetry. You give up some detail during an investigation.
  • Delete leftovers. Confirm each one is orphaned first.

What to open in the portal

  1. Cost Management, Cost analysis. Group by resource, last three months. The top three lines are the work.
  2. Advisor, Cost tab. Right-sizing and reservation suggestions.
  3. Metrics on those top resources. CPU and memory percentage for compute, DTU or CPU percentage for SQL.

When the bill is correct

Some applications earn their bill. Nightly batch jobs, large reports, integrations and data volume all consume capacity that user count does not show. Uptime commitments, geo-redundancy and retention periods may be contractual. If utilization is high during real workloads, the tier is right, and the conversation becomes what the application costs to run compared with what it does for the business. When an internal portal becomes a liability covers that side of it.


Common questions

Why does a small internal application cost so much in Azure?

Azure bills for provisioned capacity, not for users. A lifted-and-shifted application usually carries compute and database tiers sized for the old server, non-production environments that run around the clock, and untuned log ingestion.

Where do I look first to reduce an Azure bill?

Cost Management, Cost analysis, grouped by resource for the last three months. Then check CPU, memory and DTU or vCore utilization for the top three resources.


Working through a problem like this?

Describe the system and where it's stuck. I'll tell you what the work actually involves.

Get in touch