Moving a workload is not the same as improving it.
Lifting an application onto rented infrastructure changes where it runs and very little else. Sometimes that is exactly right: the data centre contract is ending and the application is fine. Sometimes it produces a more expensive version of the same problem, because whatever made it slow or fragile moved with it.
Cost surprises are a design outcome, not a billing accident.
Bills grow when environments are provisioned for peak and never scaled down, when storage tiers are never reviewed, when data leaves the platform more often than anybody expected, and when nothing is tagged so nobody can attribute spend. All of that is decided at design time and discovered on an invoice.
We assess per workload, then agree how it will be run.
Inventory the workloads with their dependencies, performance profile and any obligation about where data may sit. Choose a treatment per workload rather than a blanket policy. Size against measured demand instead of the inherited specification. Then agree who operates it, how it is monitored, how it is backed up and how spend is attributed, before anything moves.
What you are left with.
Workloads placed where they make sense with the reasoning written down, environments sized to what they actually use, a named operating model rather than an assumption that somebody is watching, and cost attribution good enough to hold a conversation about.

