EXAMTOPICS / TECHNOLOGY INSIGHTS

Microsoft AZ-104: Azure VM Availability Sets, Zones, and Scale Sets

Availability sets, availability zones, and Virtual Machine Scale Sets solve related but different Azure compute problems.

An availability set spreads a small group of VMs across fault and update domains within a datacenter-scale placement model.

An availability zone places resources in physically separate fault-isolated zones within a region.

A Virtual Machine Scale Set manages a group of VMs and can scale them automatically; the scale set itself can use zonal, zone-spanning, or regional placement.

VM availability sets, availability zones and scale sets address different failure boundaries, so first map whether the goal is to survive host maintenance, a zone outage, an unhealthy application instance or a demand spike. Placement does not make a shared database redundant, and adding VM instances does not repair an application that fails its health probe. Use a small failure-and-evidence table before changing infrastructure. Independent third-party AZ-104 VM-resiliency practice scenarios can help test whether a candidate distinguishes fault isolation, capacity management and observed application health. Verify the actual region, supported VM SKU, availability options and dependencies from current Azure documentation before implementing a decision.

Availability sets protect against correlated infrastructure failure

An availability set is a logical grouping of VMs.

Azure places the VMs across fault domains and update domains.

Fault domains reduce the likelihood that related VMs depend on the same underlying physical infrastructure.

Update domains help Azure avoid planned-maintenance restarts across all instances at the same time.

Microsoft currently notes that availability sets provide less resiliency than availability zones and are especially useful where zones are not available or where the deployment needs that placement model.

Availability sets do not automatically scale the number of VMs.

They are primarily a placement and availability construct.

Availability sets spread two or more VMs across fault and update domains inside a datacenter-level placement model. Fault domains reduce the chance that all instances share the same underlying power or network failure, while update domains control how Azure sequences certain platform maintenance. Microsoft continues to position availability sets mainly for regions or workloads that do not use availability zones.

The application still needs multiple instances. Putting one VM in an availability set does not create redundancy, and an availability set cannot protect against failures that affect the wider datacenter. It is a placement mechanism for redundant VMs, not a substitute for application replication, load balancing, or resilient data services.

Availability zones protect against datacenter-level failures

Availability zones are physically separate zones inside an Azure region.

Microsoft states that supported Azure regions have multiple zones with independent power, cooling, and networking.

Placing replicated workloads across zones protects against a failure affecting one datacenter-scale zone.

That is a larger failure boundary than an availability set.

A region contains the Azure geography in which resources are deployed, while an availability zone is a fault-isolated location inside a supported region; the two are not interchangeable terms.

A zone exists within a region.

Availability zones provide a larger failure boundary. Supported regions expose separate zones with independent power, cooling, and networking, allowing instances to be distributed so a datacenter-level outage does not remove every copy of the application.

The stronger isolation comes with architecture consequences. Dependencies must also survive the zone loss: a zonal VM backed by a single-zone database or a load balancer with only one healthy backend is not an end-to-end highly available service. Zone-aware design therefore includes compute, storage, networking, data, and any appliance that sits in the traffic path.

Zones require the application to be redundant

Putting one VM in one availability zone does not make the application zone-resilient.

The workload needs multiple instances or another service architecture that can continue operating if one zone fails.

That usually means:

  • at least two application instances
  • a load-balancing strategy
  • data/storage resiliency
  • dependency placement
  • health monitoring

Availability is an application property built from multiple Azure services.

The VM placement is only one layer.

Cross-zone traffic can add latency and cost considerations for some designs, so placement should follow the workload’s failure and communication requirements. Quorum systems, tightly coupled clusters, and latency-sensitive tiers may need additional design work rather than a blanket “put everything in three zones” rule.

Azure regions and availability zones define possible placement and fault-isolation boundaries, but they do not automatically make an application resilient. A VM pair in different zones still fails together when both depend on a single database or identity service. Draw each shared dependency and compare it with the recovery objective before calling a zonal design highly available.

Virtual Machine Scale Sets solve lifecycle and scale

VM Scale Sets let administrators create and manage groups of VMs.

A scale set can:

  • create many VM instances
  • apply common configuration
  • orchestrate updates
  • scale out and in
  • respond to autoscale rules
  • distribute instances across availability zones

This is a different category from an availability set.

The scale set is an operational construct for managing a fleet.

Its instances can still use availability-zone placement for resiliency.

Virtual Machine Scale Sets add orchestration on top of VM placement. A scale set can maintain a desired instance count, integrate with autoscale, perform health-aware repair and upgrade operations, and place instances across zones or fault domains depending on the selected design.

Microsoft currently recommends Flexible orchestration for new scale-set workloads. Flexible mode manages standard Azure IaaS VMs with scale-set orchestration and supports scenarios that need more per-instance flexibility. Uniform orchestration remains available and is optimized around a common VM profile for large sets of similar instances. The orchestration mode is selected when the scale set is created, so it is a design choice rather than a toggle to change later.

VMSS and availability zones are complementary

A scale set can span multiple availability zones.

Microsoft recommends zone-spanning scale sets for many workloads that require high availability.

The scale set can distribute VM instances across selected zones and scale capacity as demand changes.

This combines two functions:

  • VMSS: manage and scale the group
  • Availability zones: separate the group across larger failure domains

That is why “VMSS vs availability zones” is not always a true either/or decision.

A well-designed VMSS often uses zones.

Scale sets can be created with a scaling profile that describes the VM image, disks, networking, and other instance properties. In Flexible mode the profile is optional in some scenarios, while Uniform mode relies on the shared profile. That difference matters during operations: a team that needs individually managed VMs with standard VM APIs may prefer Flexible, while a tightly uniform fleet may fit Uniform behavior.

Autoscale is also independent from availability. A scale set can have several instances and still be concentrated in one failure boundary if zones or fault-domain placement are not designed correctly. Conversely, a fixed-size scale set can use zones for resilience even if it never scales based on CPU or queue depth.

Availability sets and VMSS overlap less than they used to

Microsoft’s current availability-set documentation recommends Virtual Machine Scale Sets with flexible orchestration for high availability with a broad feature set.

Flexible scale sets can manage VMs while providing modern orchestration and placement capabilities.

This means new designs should not automatically choose availability sets just because there are multiple VMs.

Evaluate whether VMSS flexible orchestration and zones provide a better operational model.

Availability sets remain valid, but they are no longer the default answer for every multi-VM deployment.

Fault domains are not availability zones.

The terms sound similar but represent different failure boundaries.

A fault domain inside an availability set represents shared underlying infrastructure separation within the placement model.

An availability zone is a physically separate zone within a region with independent infrastructure.

A zonal architecture is designed for a larger class of failure.

This is why Microsoft says availability zones provide higher resiliency than availability sets.

Latency and dependency design still matter

Zones improve fault isolation, but separation can affect application design.

Cross-zone communication may introduce small additional latency and can have cost implications for some traffic patterns.

Some workloads need very low inter-node latency.

Others prioritize surviving a datacenter-level outage.

Do not select a topology only from an SLA percentage.

Understand how the application communicates and where its dependencies live.

Load balancing is the other half of a multi-instance availability pattern. An application may be unhealthy even while both Azure VM resources report a running state; the balancer must use an appropriate backend health probe and healthy pool membership, and application readiness must be checked along with VM placement. The probe endpoint, expected status, access route and failure action should be reviewed as one operational contract; a green platform health label alone is not proof that users can complete a request.

Data services deserve the same review. Stateless web servers are easy to duplicate; stateful components may need database replication, zone-redundant storage, or an application-specific quorum. The highest-availability compute option cannot compensate for a single nonredundant dependency.

Choose the option by requirement

Use an availability set when:

  • the region or workload does not use availability zones
  • multiple standalone VMs need fault/update-domain separation
  • the application fits the availability-set model

Use availability zones when:

  • datacenter-level fault isolation is required
  • the region and VM SKU support zones
  • the application can run redundant instances across zones

Use Virtual Machine Scale Sets when:

  • instances should be managed as a fleet
  • autoscaling is required
  • centralized updates/configuration are needed
  • the workload can benefit from zone-spanning placement

For an application that needs elastic VM management and resilience against a supported-zone failure, a Virtual Machine Scale Set with instances deliberately distributed across multiple availability zones can be a strong choice. It still needs appropriate health checks, a resilient frontend and independent data-service recovery. A single-zone scale set or one running instance cannot survive loss of that zone simply because the scale-set resource exists.

Diagnose the failure boundary before changing placement

When a VM application is not highly available, ask:

  1. How many application instances exist?
  2. Are they in an availability set, one zone, or multiple zones?
  3. Is the load balancer sending traffic only to healthy instances?
  4. Does the scale set have enough capacity?
  5. Are autoscale rules working?
  6. Is zone balance appropriate?
  7. Are disks and data services resilient to the same failure boundary?
  8. Does a dependency still create a single point of failure?

When choosing an Azure VM availability design, separate failure isolation from fleet management. Availability sets spread redundant VMs across fault and update domains. Availability zones protect against a datacenter-level failure inside a supported region. Virtual Machine Scale Sets manage VM fleets and can combine orchestration, autoscale, repair, and zone-aware placement. The strongest design often uses more than one of those ideas because placement, traffic distribution, and application redundancy solve different parts of the availability problem.