By Cloudledger · Updated
Non-production accumulates by default
Test environments are usually created quickly and removed slowly. Over a year, an estate can accumulate environments for projects that shipped, proofs of concept that ended and duplicated stacks per developer. The cost is rarely one large item; it is many small ones that nobody owns.
Start with ownership, not deletion
Attribute non-production cost to a team, project or environment using subscriptions, resource groups and tags. Without attribution, every cleanup conversation becomes a search for whoever recognises a resource name. With it, the conversation is about a specific owner’s environment and a specific figure.
- Group non-production spend by subscription, resource group and tag.
- Identify environments with no recent activity or deployments.
- Confirm each environment’s owner and its expected end date.
- Agree scheduling, resizing or removal for each candidate.
Apply the cheapest safe change first
Scheduling and rightsizing usually carry less risk than deletion. Reduced redundancy, shorter retention and smaller data copies can also help in non-production. Keep production-like performance where teams genuinely need it to validate behaviour; a test that no longer reflects production has a cost of its own.
Use policy to prevent regrowth
Consider guardrails such as naming and tagging requirements, allowed SKUs and regions, budget alerts per environment, and an expiry convention for temporary stacks. Guardrails work better when the owning teams help define them, and when there is a clear process for legitimate exceptions.
Review it on a schedule
Non-production spend drifts back without a recurring review. Include it in the monthly cost review, track actions to completion, and record the verified saving separately from the projected one. Cloudledger’s resource group and change views can support that recurring check.