So, you’re new to the cloud or just starting off with Azure. You’re probably starting your first project and using the Azure Calculator to help estimate your monthly run rate. The problem is that Azure, like all clouds, has hidden costs.
So why does the cloud have hidden costs? Well, while we call them hidden costs, it’s really more a matter of unexpected costs or unknown costs.
Basically, apart from the main “expected” costs, we also have additional charges that newbies will often be surprised by. These could be charges for extra usage beyond a certain included threshold, costs associated with resources that are mandatorily created as part of a deployment, and additional charges for services such as a disk added to a VM or things like backups and monitoring that were not factored into the original estimate.
So I’m going to try to list some of the top hidden (unexpected) costs that you should factor into your run rates.
Data Transfer
For Outbound traffic or in its official Azure name “Bandwidth”, like most clouds, you pay for both outbound traffic and inter-region traffic.
Now this does make sense as if you think about it you’re not paying for an ISP, so rather than paying for an ISP or Bandwidth speed you’re simply charged for actual usage based on outbound traffic.
→ Outbound traffic = traffic that leaves the data center for the public internet.
→ Inter-region traffic = traffic that is leaving the data center to a data center in a second region.
Azure allocates each tenant a quota of 100GB a month of outbound internet traffic for no charge.
Once you pass that 100GB Mark you are charged $0.087 per GB for the first 10TB and from there the prices continue to drop.
Now here is where things get interesting. While many people are aware of this traffic charge they are not aware of additional traffic charges. These include:
- Inter Zone traffic. So while a zone is technically in the same region, if you deploy a zone redundant configuration you are charged for traffic that flows between these zones.
- Peering traffic, now this is an annoying one. You create two virtual networks (VNets) in the exact same region and in the exact same zone. Now let’s say for instance that in each virtual network, you had a VM with a public IP, any communication between these two would be free as it is within the region. However, if you peer the networks together there is a charge for all traffic over the peer.
This is charged at $0.01 per GB in both directions.
If the peering is between two Virtual Networks in different regions, known as Global VNet Peering, then that charge will increase to between $0.035 to $0.09 depending on the zone.
This is hidden in the Azure calculator under Virtual Network
- Finally, we have private links. Private links are a way of assigning a private IP and encapsulating a PaaS service within a VNet.
Now while the private link has a fixed price of around $7 to $8 per month you are also charged for all traffic over that private link and this is priced at $0.01 per GB and will drop if you exceed 1PB per month.
So this now means that all traffic let’s say between a VM and a managed DB will now be charged!
So to summarise based on your network architecture including the use of regions, zones, peerings & private links you could find yourself paying a lot of money for data transfer.
This can be a large unexpected charge that could cost you thousands more per month than your initial estimate if not factored in correctly.
Azure Backups
Azure Backup for VMs has a fairly simple pricing model.
You pay once for the backup service itself and then you pay for the storage consumed by the backup itself. However there is a catch, the price of backing up a VM (not including the storage) is $5 for a VM under 50GB and $10 for up to 500GB.
So what happens if the VM is more than 500GB? That’s right, you guessed it you pay an additional $10 for each 500GB increment. So if you have a VM with let’s say 2.2TB you are going to pay each month $50 to back it up and that’s not including consumed storage.
When you realize that that works out at $600 a year it’s an expensive solution.
Azure Storage
So you want to store large amounts of data in Azure (blob) storage. Makes sense that’s what it’s there for. So you of course choose the required tier, could be Hot, Cool, Archive… and maybe set up a lifecycle policy to automatically cycle tiers based on usage.
Now you may think that the cost is just for stored data, WRONG!
There are many costs associated with Azure storage beyond the actual stored data costs.
You will be charged for all operations performed on the storage account such as read, write, delete etc.
The cost of these operations changes based on the storage tier. So while using the hot tier has the highest data stored costs it also has lower costs for operations, while the cool tier has higher costs for operations.
This is also the reason why you should never store data under the cool tier that is being frequently accessed as your access and operation charges will run higher than if you were on the hot tier.
You should also be careful of the data retrieval charge when accessing data from Cool, cold and archive tiers as this ranges from $0.01 to $0.03 per GB.
Oh and you want to enable SFTP in your storage account? Well that’s another $220 per month.
Log Analytics
Log Analytics is as its name suggests a place to store and analyze your logs. Now Azure offers you 45 days of built in metrics for all services but if you want a longer retention period then you need to send those metrics to Log analytics.
Also when setting up AKS (Kubernetes) there is a check box to enable container logs and this will also be sent to log analytics.
Now I’m sure you know where I’m getting with this? Log Analytics costs $2.30 a month per GB.
So when container logs, or any other log for that matter, start pouring in you can easily find yourself with thousands of dollars a month in charges for the service.
Wastage
While not really a hidden cost waste is still one of the biggest issues with cloud bills.
From oversized VMs, or any other resource that can be downsized to save money to resources that can just be deleted, especially leftover disks after a VM is deleted to underutilized reservations.
That’s right, you purchased a 1-year reservation to save money on your VM, and then when that VM got deleted you’re still paying for the reservation, so now rather than save you money you’re actually paying for a reservation that isn’t even in use.
So always take care, to clean up your environment, the use of infrastructure as code tools such as Terraform is also always a good idea, and keep a lookout for those hidden costs.
I hope this blog article will help you.
Want a proof of concept? Talk to us to learn how much you can save with Anodot’s tools.