Cleaning up dev and test environments means making non-production cost track non-production use: switch resources off when nobody is working, size them for development rather than production load, and delete the ones that have outlived their purpose. The opportunity is large because the typical dev environment runs around the clock while its users are present roughly a quarter of the week, so most of what it costs buys nothing. Unlike production cuts, there is little reliability risk here, which is precisely why this is the first place a cost program should look and the easiest win to bank.
This article is part of our complete guide to cloud rightsizing and waste elimination, the cluster pillar it links up to. The scheduling lever here is the same one detailed in scheduling non-production workloads to save money, and forgotten environments are a major source of the cost of forgotten cloud sandboxes.
A weekday schedule of roughly 12 hours on, with weekends off, runs a resource about 60 hours a week instead of 168. That is a 64 percent cut on any environment that does not need to be awake when nobody is working.
Lever 1 · Schedule off-hours shutdown
The biggest single saving is turning non-production resources off when nobody is using them. Apply a schedule that stops compute in the evening and over the weekend and starts it in the morning, and you remove roughly two thirds of the running hours with no effect on anyone's workday. The cleanest implementation is opt-out rather than opt-in: every non-production resource is scheduled off by default, and a team has to actively mark something to keep it running, so the savings do not depend on anyone choosing to be frugal. Allow an easy manual override for the occasional late session so the policy never blocks real work.
Lever 2 · Right-size for development, not production
Dev and test environments are frequently provisioned as copies of production, inheriting instance sizes and database tiers they have no load to justify. A development database serving one engineer does not need the production tier; a test instance running unit suites does not need the production instance family. Right-sizing non-production to its actual load, the method in rightsizing compute: a step-by-step method, often halves the per-environment cost on top of whatever scheduling saved. The two levers stack: a smaller box, run fewer hours, costs a fraction of a full-size box run around the clock.
| Lever | Typical saving | Risk |
|---|---|---|
| Off-hours scheduling | ~60 to 65% of running hours | Very low |
| Right-size to dev load | 30 to 50% of per-hour cost | Low |
| Auto-expiry of ephemeral envs | Eliminates abandoned spend | Low with grace period |
| Delete orphaned data and snapshots | Recovers storage cost | Low with retention check |
Want non-production cost cut without slowing teams?
Our cloud cost audit applies scheduling, right-sizing and auto-expiry to your dev and test estate, banks the saving, and sets the defaults that keep non-production lean on AWS, Azure, GCP and OCI. On the performance model, you pay only from realized savings. No savings, no fee.
Book a cloud cost audit →Lever 3 · Auto-expire ephemeral environments
Preview environments, feature branches, and one-off test stacks are meant to be temporary but often are not, because nothing deletes them when the work is done. Set a time-to-live on every ephemeral environment at creation so it tears itself down after a set period unless someone renews it. This converts the default from live forever to gone soon, which is the right default for anything disposable. A short grace period and a notification before teardown keep the policy from surprising anyone mid-task while still ensuring the environment does not become a permanent cost nobody remembers creating.
Lever 4 · Clean up the leftovers
Cleaning up environments also means clearing what they leave behind: snapshots of test databases, volumes detached when an instance was deleted, and old copies of production data refreshed into a dev environment and never removed. These overlap with storage waste: snapshots, orphaned disks, and old backups and are worth a pass whenever you clean up the compute. Refreshing dev data from production also has a cost and a risk worth minimizing by keeping only what current testing needs.
The Cloud Waste Audit Framework includes the non-production scheduling and auto-expiry policies we deploy, with the default settings that keep dev and test environments lean without blocking engineers.
Make lean the default, not a chore
The reason non-production waste returns is that staying lean is left to individual discipline. The durable fix is to make the efficient state the default: scheduled off unless flagged on, sized for dev unless justified larger, and expiring unless renewed. That is the Lock step of our See, Cut, Lock, Run method applied to non-production, and it is what stops the cleanup from needing to be repeated. Scheduling tools, instance families, and auto-stop features differ across AWS, Azure, GCP and OCI and change, so verify current capabilities in each provider's documentation before implementing, as of May 2026.
The short version
Dev and test environments are the lowest-risk cloud savings available: schedule them off nights and weekends for a roughly two-thirds cut in hours, right-size them for development rather than production load, auto-expire the ephemeral ones, and clear the snapshots and volumes they leave behind. Then make the lean state the default so it stays clean. When you want non-production cut and kept lean across the estate, that is part of what our rightsizing and waste elimination service delivers.