Azure Blob Storage defaults to the Hot tier. That's fine for frequently accessed data, but most organisations have huge amounts of data that's rarely touched - and they're paying Hot prices for it.
Understanding the Tiers
Azure offers four access tiers:
| Tier | Storage Cost | Access Cost | Best For |
|---|---|---|---|
| Hot | Highest | Lowest | Frequently accessed data |
| Cool | ~50% less | Higher | Infrequently accessed (30+ days) |
| Cold | ~70% less | Higher | Rarely accessed (90+ days) |
| Archive | ~90% less | Highest + retrieval time | Long-term retention |
The trade-off is simple: cheaper storage, more expensive (and slower) to access.
Real Cost Comparison
For 10TB of data in UK South:
| Tier | Monthly Storage Cost |
|---|---|
| Hot | ~£150 |
| Cool | ~£75 |
| Cold | ~£35 |
| Archive | ~£15 |
If that 10TB is backup data you access maybe once a year, you're wasting £135/month in the Hot tier.
Finding Tier Optimisation Opportunities
Azure Storage Analytics
Enable Storage Analytics to see access patterns:
- Go to your storage account
- Diagnostics settings → Enable logging
- After a month, analyse the logs for access frequency
Azure Advisor
Advisor now recommends lifecycle management policies when it detects infrequently accessed data. Check Cost recommendations.
Manual Review
Ask yourself:
- When was this data last accessed?
- How often will it be accessed in future?
- How quickly do we need it when we do access it?
Implementing Lifecycle Management
Rather than manually moving blobs, use lifecycle management policies:
{
"rules": [
{
"name": "MoveToCoolAfter30Days",
"type": "Lifecycle",
"definition": {
"filters": {
"blobTypes": ["blockBlob"],
"prefixMatch": ["logs/", "backups/"]
},
"actions": {
"baseBlob": {
"tierToCool": {
"daysAfterModificationGreaterThan": 30
},
"tierToArchive": {
"daysAfterModificationGreaterThan": 365
},
"delete": {
"daysAfterModificationGreaterThan": 2555
}
}
}
}
}
]
}
This policy:
- Moves blobs to Cool after 30 days
- Moves to Archive after 1 year
- Deletes after 7 years
Set it once and forget it.
Archive Tier Considerations
Archive is the cheapest but has caveats:
Retrieval time: Hours, not seconds. Standard retrieval is up to 15 hours. High priority is under an hour but costs more.
Minimum storage duration: 180 days. If you delete or move data before 180 days, you pay an early deletion fee.
Access costs: Reading from Archive is expensive. It's for data you hope to never access.
Rehydration required: You can't read directly from Archive. You must rehydrate to Hot or Cool first.
Best Practices
Use prefixes/containers strategically: Organise data by access pattern. Put logs in /logs, backups in /backups, etc. This makes lifecycle policies cleaner.
Don't over-archive: If you need data regularly, Cool or Cold is better than Archive. The access costs of Archive can exceed the storage savings.
Test your retrieval process: Before committing critical data to Archive, practice retrieving it. Know how long it takes and what it costs.
Consider retention requirements: Some data must be kept for compliance. Archive tier + lifecycle policies can automate this affordably.
Common Mistake: The SQL Backup Trap
SQL Server backups to Azure Blob Storage often go to Hot tier by default. These backups are rarely accessed (only during disaster recovery) but can be huge.
Move them to Cool or Cold. Set up lifecycle management to archive after 30-90 days and delete after your retention period.
Not sure which of your storage could be tiered down? Our free savings snapshot includes storage optimisation recommendations.