All case studies

We read the production bill line by line. The database ran in a different virtual network from the application, so every byte between them was charged twice: once leaving one network and again entering the other. That came to 65 TB a month.

Cloud review · Consumer wellness platform on Azure Kubernetes
monthly infrastructure bill
−41%
saved a year
$21k
a month in cross-network database charges, down from $1,280
$0
of database traffic a month no longer billed twice
65 TB
Sector
Consumer wellness app
Platform
Azure Kubernetes Service, MongoDB, PostgreSQL, Front Door
Engagement
Cloud cost and security review
Measured
Azure billing, July against October 2026

Where the money went.

We broke the bill down by resource and by meter, and matched every large line to the resource and the traffic behind it. In July 2026 the subscription cost $4,335. Four lines stood out.

  • Cross-network traffic: $1,280 a month

    The database servers sat in an older virtual network, peered to the cluster’s. Azure bills peered traffic on both sides, so about 65 TB a month was charged once leaving and again arriving. That was almost three times what the database servers themselves cost.

  • Logs nobody read: $275 a month

    One audit log category made up 60% of all log ingestion. No alert, dashboard or saved query used it.

  • An idle hosting plan: $101 a month

    It still ran an old development-mode copy of the identity server.

  • A staging environment nobody used: $91 a month

    61 resources. Every web app was already stopped, but networking and IP addresses still billed.

What we changed.

  • Database moved next to the application

    A new three-node MongoDB replica set inside the cluster’s network, one node per availability zone. The old servers stayed available as a rollback until the new ones were proven. Traffic that used to cross the peering is now internal and free.

  • Audit logging trimmed, not removed

    We switched off the category nobody read and kept the admin audit trail, so every create, update and delete is still recorded.

  • PostgreSQL right-sized

    Moved to a smaller server in the same network as the application.

  • Dead weight removed

    The idle plan was retired once a replacement identity server was validated end to end, and the unused staging environment was deleted.

Found along the way.

  • The database was open to the internet

    The old network rules allowed the database port and two other service ports from anywhere. The new network has no internet rule at all.

  • A 42-hour gap in backups

    The nightly backup job lived on one of the old servers and stopped silently when that server was shut down. We moved it to the new cluster and took a catch-up backup.

  • Production credentials in development

    Development pipelines held production database connection strings. They no longer do.

  • Infrastructure code that could not be planned

    The production Terraform could not produce a plan. It does now, so every infrastructure change can be reviewed before it is applied.

The result.

Monthly bill
  1. July 2026$4,335before
  2. August 2026$3,656changes made mid-month
  3. September 2026$2,409
Where the $1,765 a month came from
  • Database moved into the application’s network$1,201$1,201
  • Audit log category nothing read, switched off$275$275
  • Idle hosting plan retired$101$101
  • Unused staging environment deleted$91$91
  • Other clean-up, net of one server we upsized$97$97

Figures are the client’s actual Azure costs, July 2026 against the October 2026 run-rate. They count infrastructure changes only: the bill fell further after an app release cut CDN traffic, and that saving is not included. One server was upsized for capacity in the same period, and its extra $79 a month is netted off.

The service behind this

Cloud security review

A read-only posture review of your AWS, Azure or Google Cloud accounts: identity, public exposure, encryption, logging and guardrails.

See the service

Want numbers like these for your own systems?