Multi-cloud FinOps: Practical Optimization Strategies on AWS and Azure
Introduction
Migrating to the cloud promises unlimited flexibility and scalability. However, without structured financial governance, the cloud bill can quickly turn into the biggest nightmare for a technology department.
FinOps (Cloud Financial Operations) emerges as a cultural and operational discipline to unite engineering, finance, and business in smart cloud cost management. In this article, we share field-tested practical strategies to reduce waste by up to 40% on AWS and Azure.
1. Identifying Orphaned Resources
The first step to cutting costs is a basic cleanup of resources that are turned on and generating costs but are not being used:
Orphaned Disks (EBS volumes on AWS / Managed Disks on Azure): When a virtual machine is destroyed, the disk attached to it is often preserved. These volumes continue to charge per GB/month. Unassociated Public IPs (Elastic IPs): AWS charges additional fees for reserved Elastic IPs that are not associated with any running instance. Zombie Database Instances: Staging or test databases that have not received connections for months.
CLI Command for Cleaning Orphaned IPs (AWS CLI):
aws ec2 describe-addresses --query "Addresses[?AssociationId==null].{AddressID:AllocationId,IP:PublicIp}" --output table
This command returns all reserved public IPs that are not in use so that you can release them immediately.
2. Implementing Storage Lifecycle Management (S3/Blob Storage)
Storing gigabytes of logs or old backups in the Standard storage class is a classic cost mistake.
AWS S3 Lifecycle Rules: Move files older than 30 days to S3 Standard-IA (Infrequent Access) and files older than 90 days to S3 Glacier Deep Archive. Azure Blob Access Tiers: Move historical data from the Hot tier to the Cool or Archive tiers.This can reduce the cost per GB stored from $0.023 to $0.00099 (a savings of over 95%!).
3. Savings Plans and Reserved Instances
For predictable workloads (such as production databases running 24x7), On-Demand usage is inefficient.
AWS Compute Savings Plans: Offer discounts of up to 66% in exchange for a commitment to consistent compute usage (EC2, Fargate, Lambda) for 1 or 3 years. Azure Reservations: Guarantees significant discounts by pre-purchasing VM instances, Azure SQL, or Azure Synapse for long periods. Golden tip: Never buy 100% of your projected capacity in Savings Plans on day one. Buy around 60-70% and adjust gradually in the following months by monitoring the AWS Cost Explorer dashboard.*Multi-cloud cost check on AWS
After the orphaned-IP cleanup, I group the bill by service in Cost Explorer before buying a Savings Plan.
aws ce get-cost-and-usage \
--time-period Start=2026-09-01,End=2026-10-01 \
--granularity MONTHLY \
--metrics UnblendedCost \
--group-by Type=DIMENSION,Key=SERVICE
Unattached disks on Azure:
az disk list --query "[?diskState=='Unattached'].{name:name,size:diskSizeGb}" -o table
Move old logs off S3 Standard:
aws s3api put-bucket-lifecycle-configuration \
--bucket company-logs \
--lifecycle-configuration file://lifecycle.json
{
"Rules": [{
"ID": "logs-to-glacier",
"Status": "Enabled",
"Filter": { "Prefix": "logs/" },
"Transitions": [
{ "Days": 30, "StorageClass": "STANDARD_IA" },
{ "Days": 90, "StorageClass": "DEEP_ARCHIVE" }
]
}]
}
Conclusion
FinOps is not a "once a year" activity; it is a continuous routine of monitoring and optimization. By empowering engineers to understand the financial impact of their architectural decisions, companies can accelerate development without breaking the budget.
Does your company face cloud cost issues? Let's talk and draw up a structured FinOps plan. Get in touch via my LinkedIn!
Related Articles
Multi-cloud for Banks: Separating the Core, Data, and the Audit Trail
Multi-cloud architecture for banks: a locked region, a core isolated from the lab, and an audit trail nobody can delete. SCP, CloudTrail, and Object Lock commands.
SAP Business One with SAP HANA on AWS: Architecture and Day-to-Day Operations
How to run SAP Business One on SAP HANA on AWS: instance, data and log volumes, port 30015, and backup. Power BI reads the replica, not production HANA.