Availability Zones in Azure ensure VM/service placement on physically separate infrastructure with no shared dependencies (power/cooling/etc). This leads to a design decision for new Azure projects as well as prompting a revisit to designs that use Availability sets.
I’m not going to list all the services that support Zones, or the regions that support them as this is constantly changing. It’s summarised here: https://docs.microsoft.com/en-us/azure/availability-zones/az-overview However, at the time of writing: Not all Regions support Availability Zones, if your desired region does not support them yet then it is likely on the roadmap but it does limit your options for the time being. The first Azure Services to support Zones were VM’s, Disks, Public IP’s and Load Balancers – clearly geared up for the IaaS market. Since then many of the PaaS services have onboarded to support Zones.
I think it’s fair to say that if the Region you’re deploying to supports Availability Zones, then use them! VM’s in Availability Zones offer a higher SLA that Availability Sets: 99.99% VS 99.95% and many of the Azure PaaS services are now being enabled to work in Zones by being “Zone Redundant”.
Zone’s are supported by VM Scalesets, which mean you don’t need to explicitly place them, however for normal VM’s you are required to specify the Zone. When using Availability sets, Azure would automatically set placement of the VM based on the Availability Set properties.
Availability Zone’s require Managed Disks, wheras VM’s in Availability Sets could choose between Managed or Unmanaged. I won’t go into the pro’s and con’s on disk storage now but my rule of thumb is that most VM’s should use Managed Disks.
Availability Zone’s do carry an extra cost when compared to Availability Sets, not for the VM Compute cost but for the bandwidth. This is charged at $0.01 per GB in/out of the Zone. It’s a pretty minimal charge when you think about it, and really it’s the price for the extra 0.05% in the SLA. Still, it’s worth including when you’re designing your architecture.