We’ve been migrating our legacy ERP system to AWS over the past 18 months, and cost governance has been our biggest non-technical challenge. Initial estimates were blown within the first quarter due to untracked development environments, over-provisioned databases, and lack of ownership accountability.
Our CFO nearly pulled the plug on the entire modernization program when monthly AWS bills hit 240% of projected costs. We’ve since implemented several governance strategies that brought spending back under control and established sustainable cost management practices.
I’m curious what approaches other teams have used for cost governance during large-scale ERP migrations. Specifically around cost tagging strategies, establishing resource ownership models, and automated reporting that actually drives behavioral change rather than just generating dashboards nobody acts on. What worked for you, and what turned out to be wasted effort?
We faced similar issues. Our breakthrough was implementing showback reports distributed weekly to development team leads showing their team’s actual spending versus allocated budget. Once engineers saw their names attached to specific costs, behavior changed overnight. Idle RDS instances were terminated, oversized EC2 instances were rightsized, and suddenly everyone cared about turning off non-production environments outside business hours. Financial accountability drove more optimization than any technical tool.
The showback model resonates with our experience. We started with chargeback but that created too much friction with finance teams. Showback provided visibility without the accounting overhead. Question for those who’ve implemented this - how did you handle shared services costs like networking, security tooling, and central monitoring? Did you allocate proportionally or treat them as separate line items?
Shared services are tricky. We use AWS Cost Categories to group shared infrastructure and allocate costs based on consumption metrics where possible - data transfer for networking, log volume for monitoring, API calls for security services. For truly shared resources like VPCs, we allocate proportionally based on each application’s overall cloud spend percentage. It’s not perfect but it’s defensible and automated through Cost Allocation Tags and Cost Categories.
Cost tagging is foundational but most organizations implement it wrong. We enforced mandatory tags at the infrastructure-as-code level using AWS Service Catalog and tag policies. Every resource must have CostCenter, Environment, Application, and Owner tags or deployment fails. This shifted tagging from an afterthought to a prerequisite. The key was making it impossible to deploy untagged resources rather than trying to retroactively tag existing infrastructure.
One thing that helped us was implementing budget alerts with automatic actions. We set up AWS Budgets with SNS notifications at 80%, 100%, and 120% thresholds, but also configured Lambda functions to automatically stop non-production resources when budgets hit 110%. This prevented runaway costs while giving teams breathing room. The automation removed the delay between detection and action that killed us in the early months.