When you set up a new business or have a small/medium business, these days having a cloud platform solution is the best way to go since all of your technology can be managed by a Cloud solution provider like Microsoft, AWS, Google or others.
But you need to plan your business continuity architecture well so your systems can adapt to possible local or regional disruptions natural, digital or human. The objective of this document is to present a basic solid approach for you to work with your technology specialist and ensure that the systems they design for you has a 99.99% availability.
The points below address the typical technology components of your system/application framework and guide your thought process towards an architecture diagram below, which presents a framework for BCP.
- Your Application – Every application needs two working copies primary and secondary, the secondary to take over from primary in case it fails to respond. Make sure your application has a scale-out elasticity built in so it can generate more of itself to handle more traffic. We will call these applications, Primary App Service and its backup the Secondary App service.
- Load Balancer – The Load balancer is the single point of Entry on the internet for your application. You should set up a firewall with it. The Load balancer constantly checks the availability of the Primary app service and is always ready to switch over /re-direct traffic from the Primary app to the secondary if the primary apps responsiveness is below a satisfactory level.
- Hosting of Primary App service and Secondary app service should be in different cloud datacenters in completely different regions, say one in East USA and other one in West USA or Canada. This ensures reliability in business continuity especially in case of disruptions.
- Your Application database – Most of your data will be in a Primary SQL database hosted in the same region along with your Primary app service. A Geo replication of this Primary database can be set up in most cloud environments with a Secondary database in a different region made available from the primary database at any point. A Fail over listener is the best way to configure routing of request from the App service layer to the database ( based on which database is active/responsive). Thus the primary app can work with either the primary or secondary database whichever one is active/responsive. In case the primary app fails now the secondary app takes over and then it can communicate with either the primary or secondary database whichever one is active.
- Machines : In same cases when you have data / application components on Virtual machines, regional availability zones can be set up with Primary VM’s and Secondary VMs in different regions with a switchover configuration.
The Load balancers and listeners are managed by the Cloud solution provider such that they availability is maintained. Elasticity configurations are also available for these components.
A generic architecture diagram below defines a complete framework with all of the above components.
The Table below will guide you to Microsoft Azure specific links to review the key components which will help you set up such a architecture.
|Load Balancer||Azure traffic manager||https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-overview|
|Azure Application Gateway||https://docs.microsoft.com/en-us/azure/application-gateway/features|
|Azure Front door||https://docs.microsoft.com/en-us/azure/frontdoor/front-door-overview|
|Comparisons||Traffic Manager Vs Application Gateway Vs Front door||https://docs.microsoft.com/en-us/azure/frontdoor/front-door-faq|
|Geo replication for databases||DB replication||https://docs.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview|
|Failover listener for databases||Failover group||https://docs.microsoft.com/en-us/azure/azure-sql/database/auto-failover-group-overview?tabs=azure-powershell|
|Virtual machines availability zones||Azure VM availability zones||https://docs.microsoft.com/en-us/azure/virtual-machines/windows/manage-availability|