Skip to content
CloudBudgie logo
Off-hours scheduling

Your Dev Environment Doesn’t Need to Work Nights

Your dev environment doesn’t need to run 24/7. Here’s how to schedule AWS databases and compute after hours, and what to watch for.

Patrick · Founder of CloudBudgie

5 min read

Cartoon of BudgieBot in a nightcap tucking a sleeping server and database into bed under a crescent moon, with a sign on the bedpost that reads Back at 9 AM.

It's 2 AM. Your dev environment is up and running. Nobody is using it.

For a lot of teams, that's just the default. Spin it up, leave it on, move on to the next thing. It's convenient. But your dev and test environments don't need production-style, around-the-clock availability.

Off-hours scheduling asks one simple question: when does this environment actually need to be running? For most dev environments, the answer is easy: tuck them in at 6, wake them up at 9.

Development infrastructure shouldn't need an overnight shift.

Start with the working schedule

Say your dev environment is used from 9 AM to 6 PM, Monday through Friday. That's 45 hours out of a 168-hour week. In this example, it sits outside its schedule for 123 hours, about 73% of the week.

RunningStopped
  • Mon9 AM–6 PM
  • Tue9 AM–6 PM
  • Wed9 AM–6 PM
  • Thu9 AM–6 PM
  • Fri9 AM–6 PM
  • SatStopped all day
  • SunStopped all day

Can keep billing all week

  • EBS volumes
  • Snapshots and backups
  • Elastic IP addresses
  • Database storage
Illustrative schedule: running 9 AM–6 PM on weekdays and stopped otherwise. Stopping compute doesn't stop every charge.

To be clear, that is not 73% off your AWS bill. It's the share of runtime you could remove from the resources you schedule. What you actually save depends on how each service bills while it's stopped, whether Reserved Instances or Savings Plans already cover that usage, how long things take to start, and everything else in the account that keeps running.

The best place to start is anything with predictable hours: dev databases, internal test systems, and staging environments that are only used during the workday.

Find out what can safely stop

Before you schedule anything, talk to the people who own and use the environment. Ask about:

  • overnight CI pipelines and scheduled data jobs
  • backups and maintenance windows
  • teammates in other time zones
  • on-call engineers who might need to debug at night
  • integrations that assume a service is always reachable

Then check what each resource can actually do. Not every AWS service has a stop button, and the ones that do behave differently:

  • EC2 instances stop compute billing while stopped, but attached EBS volumes keep billing, and so do Elastic IP addresses. An instance without an Elastic IP gets a new public IPv4 address when it starts again.
  • RDS DB instances and Aurora clusters can be stopped for up to seven days at a time. After that, AWS starts them automatically. Some setups, like read replicas, can't be stopped at all. Storage and backups keep billing.
  • Redshift clusters can be paused and resumed, and storage keeps billing while they're paused.
  • Auto Scaling groups can be scaled to zero. That terminates the instances, so anything stored on them is gone when new ones launch.

An off-hours schedule should be a deliberate decision, not a blind timer.

Know what keeps costing money

Stopping compute cuts compute charges for the hours it's off. It doesn't touch the cost of storage, snapshots, backups, Elastic IP addresses, load balancers, NAT gateways, or monitoring that stays in place.

So treat any runtime estimate as an estimate for the resources you schedule, not a promise about your whole bill. Track the scheduled resources' compute charges separately from everything else, and you'll see exactly what the schedule changed.

Time zones and exceptions are part of the plan

A simple schedule can trip up when your team spans time zones, or when daylight saving time shifts everyone's working hours.

Pick one clearly defined time zone for each schedule. Plan for holidays, release nights, and the occasional late evening. Decide up front how someone starts an environment outside its window, and who can change the schedule.

People also need to see what's going on. Owners should be able to tell why an environment is stopped, when it'll start again, and whether the last stop or start failed.

Start small and measure

  1. Pick one low-risk environment, and write down its current cost and how it's actually used.
  2. Confirm who owns it and what depends on it.
  3. Set a conservative schedule, tell the team, and test both stopping and starting.
  4. Watch for anything that breaks, and track the scheduled resources' charges against everything else.
  5. Adjust as usage changes, then roll it out to other nonproduction environments.

The safest cost optimization is the one your team can explain, schedule, and reverse.

Ways to do it

You don't need a product to get started. AWS gives you a few building blocks:

  • Instance Scheduler on AWS, an AWS solution that starts and stops EC2 and RDS resources on schedules you define.
  • Amazon EventBridge Scheduler, which can call AWS APIs like StopInstances and StartInstances on a cron schedule.
  • Scheduled actions for Auto Scaling groups and Redshift clusters, built right into those services.

Whichever you pick, keep the schedule in one place, ideally next to the rest of your infrastructure code, so it gets reviewed and versioned like any other change.

Where CloudBudgie fits

CloudBudgie's Off-Hours Mode stops or pauses supported resources outside working hours and starts them again automatically. Today that covers RDS DB instances, Aurora clusters, Redshift clusters, DocumentDB and Neptune clusters, and Auto Scaling groups, which scale to zero. You choose the resources and the hours. You see the estimated monthly savings before you confirm. If a scheduled stop or start fails, you see the error on the resource, and you can edit or remove a schedule any time.

I'll be honest about what it doesn't do. Not every cloud service can be switched off. NAT gateways and many cache services have no stop operation, so saving money on them means deleting and recreating them. That's a different kind of change, and Off-Hours Mode doesn't do it.

The idea is simple: match your infrastructure to when it's actually used, keep the schedule easy to understand, and keep your team in control.

References

Find it. Fix it. Keep it fixed.

CloudBudgie finds AWS cost waste, shows the evidence behind each finding, and turns supported fixes into reviewable changes.

No credit card required

All articles
  • Cartoon of BudgieBot in a detective cap peering through a magnifying glass, while a sleepy server and two worried storage disks hide in the clouds, each dripping a gold coin.
    Cost visibility

    The AWS Costs Hiding in Plain Sight

    Idle EC2 instances, forgotten EBS volumes, quiet load balancers and NAT gateways. Here’s where AWS waste hides, and how to clean it up safely.

    5 min read