AWS · FinOps
€15,000 → €2,500 in monthly AWS costs.
Without doing less.
Two grown AWS accounts for production and staging. The same applications, users and production availability, but around €12,500 less cost per month. Delivered over twelve months, one measure at a time, with every result measured.
The starting point
No single mistake. Four years of sediment.
Production and staging cost around €15,000 net per month together. The infrastructure had not been built carelessly. It had grown: new metrics stayed forever, data was never deleted, capacity was sized against load spikes, and staging ran around the clock. A typical FinOps starting point.
The team considered a saving of ten to fifteen percent realistic. The first problem was not the size of the bill but the lack of an explanation for it. Nobody could reliably connect an increase to a workload, a volume of data or a specific decision.
The challenge
Cut cost without trading operations against the bill.
A lower bill is not a success if availability, recoverability or delivery suffer. Every change therefore needed a way back and an observation period. The work measured not only euros but consumption, load and business units.
The order mattered just as much. Commitments have an immediate effect, but fix the existing baseline for one to three years. Applied to inflated infrastructure, they would have discounted the waste while making every later optimization economically pointless.
My approach
Measure.
Clean up.
Optimize.
Establish a trustworthy cost baseline
Enabled the Cost and Usage Report and queried it through Athena by usage type and resource. The result was a prioritized list giving expected saving, effort and operational risk for every measure.
Delete and cap retention
Identified log groups without retention, old snapshots, backups and leftover data. Stopped or archived them first, observed for two weeks, and deleted only then. Result: around €1,200 less per month at practically no risk.
Reshape observability and data
Removed unused high-cardinality CloudWatch metrics, partitioned Athena data and aligned S3 retention with actual demand. Together, these two areas removed around €5,800 per month.
Match capacity to real load
Applied rightsizing to ECS tasks step by step from 14-day metrics, measured Lambda memory against runtime, and moved interruptible work to Fargate Spot. No guesses, with one week of observation after every step.
Remove expensive baseline load from the architecture
Stopped staging outside working hours, cached repeated database queries and replaced polling with events. Small changes with a permanent effect because the underlying work no longer happens.
Commit only to the cleaned-up baseline
Only when the remaining load was stable did Reserved Instances, Reserved Capacity and a one-year Compute Savings Plan follow. Result: another €2,700 less per month.
An AWS bill nobody can explain any more?
The cost analysis delivers the cost drivers and prioritized measures before anyone changes your infrastructure.
What was difficult
A saving is only real when the comparison is sound.
Credits, exchange rates, taxes, one-off effects and upfront payments can move the bill without changing consumption. After the first commitments, RDS suddenly looked almost free in the unamortized view. Comparisons therefore used amortized cost, complemented by hours, gigabytes, terabytes scanned and requests.
The second difficult part was organizational: cost work competes with feature work. One measure per week made the project interruptible. Every change was completed and measured before the next began. That avoided half-finished rebuilds and, after three months, produced a record that let the team make further decisions with data instead of opinions.
The result
Lower bill. Less complexity. The same operation.
AWS costs
From around €15,000 to around €2,500 net per month, calculated on an amortized basis.
without architectural change
More than half the saving came from clean-up, observability and data.
cuts to the feature set
The same applications and users, with no reduction in production availability.
Costs did not fall because a tool found a discount. They fell because unused work was removed, the remaining load was sized correctly, and only then committed. The full field report covers all six phases with figures, measurement methods and the dead ends encountered during the project.
Technologies used
Understand cost. Change consumption.
- Cost & Usage Report
- Cost Explorer
- Athena
- AWS Glue
- ECS Fargate
- Fargate Spot
- Lambda
- RDS
- DynamoDB
- S3 Lifecycle
- CloudWatch
- EventBridge
- SQS
- Terraform
- Savings Plans
- Reserved Instances
- Reserved Capacity
Frequently asked
What clients ask before deciding.
How were AWS costs reduced by 83 percent?
Not through one discount. Around €7,000 per month disappeared through clean-up, appropriate retention, fewer unused CloudWatch metrics, and better data storage and Athena queries. Rightsizing and small architectural changes followed, with commitments applied only to the cleaned-up baseline at the end.
Was functionality or availability sacrificed?
No. The same applications continued to serve the same users, with no reduction in production availability. What disappeared was unused work: data without consumers, metrics nobody read, oversized capacity and baseline load with no business value.
Why did the optimization take twelve months?
It ran alongside the day job in a safe rhythm: implement one measure, observe it for a week, document the result, then move to the next. Full-time work could have shortened the period. A single sprint would not have been credible for changes that affect live operations.
