How to Build Highly Available Apps on Azure With VM and Storage Redundancy

Perfectly reliable IT infrastructure doesn’t exist. If you wait long enough, even the best-engineered server and network components fail. Failure tends to occur on a so-called bathtub curve, which means that some infrastructure fails early in its life and all infrastructure fails eventually. In addition to the fact that systems tend towards failure, we also have to take into account human error, natural disasters, and malicious attacks.

Redundancy is one of the ways we work to overcome the inevitable failure of some aspect of the infrastructure that businesses depend on.

What is Redundancy on Azure?

Redundancy is the duplication of critical components so that when one component fails, another is ready to take its place. Microsoft builds redundancy into Azure, but, as with many aspects of cloud hosting, achieving acceptable availability is a responsibility shared between the platform and its users . Azure’s SLA for a single instance virtual machine guarantees 99.9 percent availability, which allows for almost nine hours of downtime each year. To achieve better availability, Azure users should take advantage of the platform’s built-in tools to build genuinely fault-tolerant platforms.

What Is the Relationship Between Redundancy and High Availability?

A highly available system is one that has no single points of failure. A single point of failure is a component of your infrastructure that would cause downtime if it failed. For example, your app has a single point of failure if it depends on an SQL Server database hosted on a single VM. If the VM goes down or loses its network connection, the entire app will be unavailable.

To build a highly available system, all the essential components must have redundant alternatives, and there must be a mechanism for monitoring component availability and switching to the redundant component when a failure occurs—this is called failover.

How Azure Helps Your Business With Redundancy and Availability

It is easier and less expensive to build redundant application and data hosting platforms on Azure. Azure has numerous replication and redundancy features that, if used correctly, result in fault-tolerant infrastructure that can withstand hardware failures, power and network failures, and even natural disasters.

Storage Replication and Redundancy on Azure

Azure Storage offers several data replication tiers that trade-off price for redundancy and availability.

  • Locally redundant storage copies data to three storage locations in the same physical location. It offers 99.999999999 percent durability for stored objects but is not recommended when high-availability is the goal.
  • Zone-redundant storage copies data to three availability zones in the same region. An availability zone is one or more data centers in the same region.
  • Geo-redundant storage is similar to locally redundant storage, but an additional copy is sent to a location in a different region. Regions are groups of data centers within a defined geographical perimeter.
  • Geo-zone-redundant storage is similar to zone redundant storage, but an additional copy is sent to a location in a different region.

Azure users can choose one or a combination of these replication strategies to balance cost and availability.

Virtual Machine Replication and Redundancy on Azure

Azure also offers features for achieving high availability for virtual machines. Two of the most important are Scale Sets and Availability Sets.

  • A Scale Set is a group of identical virtual machines behind a load-balancer that distributes work across the VMs in the set. For example, a Scale Set might include multiple identical web servers. Scale Sets make it easy to create redundant groups of servers: if one or more VMs fails, the load balancer will redistribute work to the others.
  • An Availability Set divides VMs with different roles into groups and makes sure that each group runs on independent physical servers, network hardware, and storage. Your app might have several web servers and a database server. A simple use of Availability Sets would be to create two sets of VMs, each with web servers and a database. Those sets run on independent infrastructure to ensure that if a failure takes one set down, the app in its entirety will continue to be available via the other set.

Azure also provides Availability Zones for additional resilience and redundancy. Availability Zones are independent groups of data centers within an Azure region. Each availability zone is physically separated from the others with independent power and network connectivity. VMs can be distributed across Availability Zones, and Azure handles the replication of data and applications across Zones to ensure there is no single point of failure. It is also possible to achieve redundancy across regions with Azure Region Pairs.

Building Redundant High-Availability Applications with VIAcode

Downtime and service disruption are inevitable if your apps and services aren’t supported by redundant cloud infrastructure. VIAcode builds redundant and highly available application and data hosting platforms on Azure that take full advantage of Azure’s storage replication, Scale Sets, Availability Sets, and Availability Zones.

Contact a VIAcode managed services consultant for a free initial consultation to discuss site reliability engineering, redundancy, and high-availability on Azure.

VIAcode provides services for migration, optimization and management for Azure.