After doing some work with Azure VMs and scale sets I’ve found out that, generally, selecting the same size SKU does not mean getting the same performance. On top of that, some of the newer generation sizes (v2 vs v3) are not available in certain region+zone combinations affecting availability configuration options for desired sizing SKUs.
Performance. For example if you choose F4s_v2 in Central US, every time you de-allocate and re-allocate the VM you may get a different generation Intel processor. I’ve seen VMs go from Xeon E5-2673_v3 to Xeon Platinum 8168 for the same SKU! Obviously in a cloud environment hardware is not guaranteed as long as certain performance metrics are met, but I can tell you for the same workload I’ve seen noticeable difference.
Availability. An example of this is when we tried to configure a VM scale set to be Zone redundant we found that the same SKU we were able to spin up before in that region was no longer able to be selected. After a talk with Azure’s capacity team, it was confirmed not all VM sizes are available in all availability zone configurations.
We recommend testing your planned deployment well in advanced in both your testing and production environments to make sure you are able to provision the resources as planned. Keep in mind once you commit to a region, architecture of HA and DR may make it more difficult to move later. It is also important to understand that the whole point of Cloud is not to dedicate specific hardware to customers and instead focus is on ability to scale quickly. Also, word from Azure capacity team is that they are constantly rolling out newer generation SKUs to new regions and availability options like zones and scale sets.