Every organisation that migrates expects to save money, and roughly half are disappointed. The pattern behind the disappointment is remarkably consistent.
Non-production runs at production scale
Development and staging are frequently sized like production and left running through the night and the weekend. A schedule that stops them outside working hours is usually the single largest saving available, and it takes an afternoon.
Nobody deletes snapshots
Snapshots are created during every migration and cleaned up after approximately none of them. Tag them at creation with an expiry, or they accumulate for years.
Cross-zone traffic
An application split across availability zones for resilience will pay for every packet that crosses. Sometimes that is the right trade; frequently nobody made the trade deliberately.
Right-sizing beats reserved capacity
Committing to reserved capacity before right-sizing locks in the wrong shape for a year. Measure first, resize, then commit — in that order.
Make the bill visible
Cost per team, shown monthly, changes behaviour more reliably than any policy document. Engineers optimise what they can see.