Cloud bills grow quietly when nobody owns them. Here is a step-by-step routine for small teams to see, shrink and cap their infrastructure spend without slowing delivery.
A small team rarely overspends on cloud because of one big mistake. The bill grows from many small leftovers: a staging database nobody opened since spring, a load balancer for a prototype that was never launched, a storage bucket full of logs with no expiry date. Each one is cheap. Together they become a line item that surprises the founder at the end of the month.
This post is a practical routine for teams of two to twenty people. It assumes you run on a major provider such as AWS, Google Cloud or Azure, and the ideas apply to all of them. Names of settings differ, the habits do not. We will not quote price tables, because prices change. Check your provider's current pricing pages when you apply any of this.
You cannot reduce what you cannot see. Before changing anything, set up three things.
project, env (prod, staging, dev) and owner. Then group cost by tag. Untagged spend is the first thing to hunt down, because nobody is responsible for it.Enforce tagging early. If your infrastructure is defined in code (Terraform, Pulumi, CloudFormation), set default tags in one place so new resources inherit them. Retagging old resources by hand is dull work, so do it once and then prevent the problem.
Start with resources that are doing no work. Removing them carries almost no risk, as long as you check first.
env tag and ask the owner if each one is still needed.A safe process: before deleting anything, snapshot or tag it with delete-after: <date> two weeks ahead and announce it in the team channel. If nobody objects, remove it. A short grace period costs a little and prevents the one deletion that causes a bad afternoon.
Teams tend to choose instance sizes by guessing, then never revisit. After a few weeks of real traffic, check actual usage.
Look at CPU and memory over the past 30 days. If a server peaks at a small fraction of its capacity and never gets close to the limit, move down one size and watch for a week. Your provider's cost tools often include right-sizing suggestions based on this data. Treat them as a starting point, not an instruction: check the peak, not only the average, and check memory if your monitoring agent reports it, since CPU alone can mislead.
Take a snapshot before resizing a managed database, and do it in a maintenance window, since it can cause a short outage.
Non-production environments rarely need to run at 3 a.m. on a Sunday. If your team works in one or two time zones, a staging environment may be needed for around a third of the hours in a week.
Simple scheduling options:
Keep the schedule honest. If someone in another time zone needs staging at night, give them a documented way to start it, such as a chat command or a button in your CI tool. A schedule people fight against gets switched off, and then you have saved nothing.
Storage grows slowly and quietly, which is why it often becomes a large part of the bill.
Cost control is a routine, not a project. Put a 30-minute review on the calendar at the same time each month, with one person responsible for running it. The agenda:
One saving per month is enough. After a year, that is twelve fixes, and the bill reflects them.
There is no standard figure. Set the budget from your revenue or runway and the needs of the product, then keep the trend steady unless usage grows. A rising bill with rising users is healthy. A rising bill with flat users is a leak.
Rarely as the first step. Migration costs engineering time and adds risk. Fix waste, right-size and schedule first. Reconsider the provider only if the architecture changes or the pricing model no longer fits your workload.
If your cloud setup has grown without a plan and you want a second pair of eyes, we can review it with you and suggest a sensible order of fixes. Email hello@risingstation.com or visit risingstation.com/contact-us.
Md Kabir Hossain
Co-Founder & CTO