Implementing Multi-region Deployment and Disaster Recovery in Azure


Every application has its own criticality level, some are mission critical in nature, while other aren’t. Mission critical apps typically requires very high uptime or availability. Many Azure PaaS services such as App Service and SQL Database have built-in HA (high availability) features to tolerate failure within the region with minimum or even zero configuration requires. However, most of the HA features are in-region, meaning the redundancy takes place within the same region or datacenter. In the unfortunate events such or large-scale disasters such as earthquake, flooding, etc., it may affect the whole region which bring down your applications.

One common strategy people when dealing with mission critical application is to have multi-region deployment with DR (disaster recovery) strategy. Nonetheless, it’s very difficult and complicated to setup such architecture.

Solution Demo Video Series

Join me and my colleague Adityo Setyonugroho for this video series of: Implementing multi-region deployment and disaster recovery in Azure. We implemented the demo from the reference architecture on Azure within two regions serving as primary and secondary, active/passive model.

We cover 4 different scenarios how the failover takes place:

  • Scenario 1: the happy flow when both deployment in each region are well
  • Scenario 2: when the Web App in primary region is down
  • Scenario 3: when the Database in the primary region is down
  • Scenario 4: when entire primary region is down, we could failover to secondary region in less than 3 minutes!

Video 1 – Introduction to multi-region deployment and disaster recovery on Azure

This video covers the background of this initiative, fundamental of HA vs DR in general, and how we plan to implement the solution architecture in real actions.

Video 2 – Crash Course: App Service, SQL Database, Traffic Manager, Event Hubs, Stream Analytics, Functions, Logic App

This video covers fundamental and introduction of some of the Azure services and tools (Postman and JMeter) used in this video series


Video 3 – Sample app, database, and deployment on Azure

This video walk-throughs the sample application and database used for this demo series. We will also show how they are deployed on Azure.

Video 4 – Everything goes well. Opps… suddenly Web in primary region is down

This video firstly shows the happy flow, when all running well in Region A. Suddenly, Web app in Region A goes down… How will Azure Traffic Manager handle this?

Video 5 – Database in Region A is down

This video shows scenario 3, what happens when database in region A goes down? We will perform a database failover without having to change the application at all.

Video 6 – The setup for Scenario 4 (entire primary region is down)

This demo shows the setup to anticipate the scenario 4 (when entire primary region goes down). We design a solution to streamline the failover process for app and database.

Video 7 – The demo of failing over to secondary region when primary region is down

This video demonstrates the actual failing over to secondary region when entire primary region goes down.


What’s next?

We are not done yet! Adityo and I are currently working on automating the deployment of the solution to achieve single button deployment. We will be also sharing the sample code along with the ARM template in GitHub.

Hope you enjoy this video series. Stay tuned!

This entry was posted in Uncategorized. Bookmark the permalink.

7 Responses to Implementing Multi-region Deployment and Disaster Recovery in Azure

  1. Eilesh Gondalia says:

    Hi Wely Lau, did you get a chance to share any sample code and ARM templates yet, I found the video real helpful and are looking to implement a similar deployment and would really appreciate any help on the sample code used, thanks. Eilesh

  2. HAYTHAM ALI says:

    Hi Wely,
    Thank for this video series. I have a question about Web App service deployment. Can I create App service application and deploy it to multiple regions not only Primary and secondary and not active/passive model. Which means all the regions receives traffic depending how close the request to the region. and if one region failed Azure redirect its traffic to other region. any direction on how to implement that?

    • wely says:

      Hi Haytham,

      Yes you can do that. However, one thing that you need to carefully look after is the state of the database. Does each app access its own database or accessing the “centralize database”?

      Here’re the logical steps:
      1) Provision your app service (web app) to multiple regions (either with IoC infrastructure as code or portal)
      2) Deploy your code to the apps (in respective region)
      3) Setup traffic manager with the load balancing option to “Performance” ( This is the mode which it can route the client to the closest region if the endpoint is available. Or else, it will route to the second closest available region.

      Hope this help.

  3. Jitendra says:

    Hi Wely,

    I have downloaded slides from
    but it is cornuted.

    Is there any possibility that I can get it ?

    Jitendra I

Leave a Reply

Your email address will not be published. Required fields are marked *