This article focuses on understanding basic concepts of Azure infrastructure architecture. This article also focuses on some important concepts like Fault Domain, Update Domain, Availability Set, etc.
These concepts are very important for everyone working on high availability applications.
Azure Global Infrastructure
While working on Azure based applications, many time we hear terms like Geography, Region, Availability Zone, Cluster, etc. Although these are very basic concepts and many times they are transparent to the developers, it is very important to understand these concepts.
If you understand these concepts well, you can easily design your applications for high availability and better performance.
Azure regions are organized in Azure Geographies. Each Geography consists of two or more regions.
An Azure geography ensures that data residency, sovereignty, compliance, and resiliency requirements are honored within geographical boundaries.From MSDN
The Azure data centers are organized in Azure Regions. Each region can have one or more data centers.
A region is a set of datacenters deployed within a latency-defined perimeter and connected through a dedicated regional low-latency network.From MSDN
Azure Data Centers
Every region has one or more data centers. There are many globally distributed data centers. Every data center consists of below blocks:
- Clusters – Each data center has one or more clusters.
- Rack – Each Cluster consists of many racks.
- Blades – Each rack has many blades. Each blade is dedicated to compute or storage.
An Availability Zone is a physically separate zone within an Azure region. There are three Availability Zones per supported Azure region.
Each Availability Zone has a distinct power source, network, and cooling, and is logically separate from the other Availability Zones within the Azure region.
Availability Zone and Data Center terms are many times considered to be synonymous.
Not all services are available in all the Azure regions. You can know services availability across regions at this link.
Whenever a virtual machine is created in Azure, it is associated with a Fault Domain and an Update Domain. As of today, there are two fault domains available by default, which can be increased to 3 through configurations.
Fault domains define the group of virtual machines that share a common power source and network switch. So, if power supply fails, all virtual machines in that fault domain also fail.
In short, each fault domain represents single point of failure. You should try to place VMs in different fault domains so as to increase availability of your application. Also to take advantage of availability set, configure load balancer. If load banacer is not configured, then the requests going to the failed machine would be continuously failing.
As I told earlier, every virtual machine is associated with a fault domain and an update domain. As of today, there are 5 update domains available by default, this value can be increased to 20 through configurations.
Update domain represents the collection of Azure resources, which would be updated at same point of time. If number update domain is configured to be 5, then sixth virtual machine would be placed in same update domain as of first virtual machine, seventh virtual machine would be placed in same update domain of second virtual machine, and so on.
Please note that updates may not be ordered sequentially as per update domain numbers. Once update is done, the resources / virtual machines are rebooted and 30 minutes are given to update domain to recover before initiating update on next update domain.
This configuration is set on virtual machines. It has two values.
- Number of Fault Domains (max – 3)
- Number of Update Domains (max – 20)
You can set this setting while creating new resources.
I hope this article provided enough information on some of the basic concepts about Azure Global Infrastructure. I am sure this information would help you to design your applications for high availability. Do not forget to comment and let me know your thoughts.