![]() If one of the App Service instance stops the API as experienced by the client will still be available online. If primary App Service fails all API requests will still be made to the secondary App Service. The above design provides HA when an entire region fails.Į.g. Let me first present the maximum Multi-Region HA API architecture before I describe it in details: If two components are in parallel then the composite uptime is 1 - (1-Ax*Ay)^2. If availability of component x is Ax & availability of component y is Ay then overall availability is AxAy. If two components x & y are in series then the composite availability is the product of the individual availability.Į.g. Failover - A functioning redundant component can takeover the degraded or failed component and the system continues to function as usual.Monitoring - The system internally or externally should be able to measure the metrics and detect that a component has failed or degraded.Redundancy - All components that can fail should have one or more redundant instances.The 3 main design elements to consider for HA are Other metrics like Recovery Time Objective (RTO) and Recovery Point Objective (RPO) also comes into play. a 99.95% monthly uptime means the system will be down for at most 30x24圆0x0.0005 = 21.6 min / mo. HA is often measured in uptime percentage. Two related concepts are Business Continuity (BC) and Disaster Recovery (DR).ĭesigning for DR mitigates against catastrophes where entire region can fail due to natural events like flooding or earthquakes and also protects against data corruption.Īlthough DR is more focussed on backups and restore a good HA design will also significantly help for DR and even provides some DR benefits on its own. It is also important to design for HA to protect the system from deliberate security attacks like DDoS. Lets assume your enterprise has mobile apps or web apps accessed by thousands or millions of customers and the backend APIs are serving the frontends, if they fail it will have a significant customer and possible regulatory and financial impacts as well.ĭesigning you Azure API applications to survive a failover event is critical for your company’s ongoing operations and business. ![]() This is extremely important for critical enterprise applications. Very simply HA is a non-functional quality attribute for a system that allows its services to be accessible even when one or more of its components have failed. Lets first start in understanding what High Availability (HA) means. Web apps do not require a APIM in front, which is why we cannot blindly use the Microsoft reference architecture. This is the key difference to a web app, the presence of Azure APIM. I will implement the API as a ASP.Net Core app for this post but the concept will apply to function apps in consumption tier.Ī highly recommended way and adopted by most enterprises is to expose your APIs through an Azure API Management (APIM) Gateway.Ī typical API architecture will look like: Often the examples shown don’t take into account the security aspects in conjunction with HA.ĪPI apps in Azure App Service can be deployed as an ASP.Net Core application or as a function app. Web applications but my focus is on API apps which is different. Microsoft has a published reference architecture for The deployments to Azure can be done from the Azure portal, I have used Azure Cli wherever possible. My code examples will be in C#/.Net core as that is the language I am most familiar with. In this post I will delve into designing and building Highly Available APIs hosted on Azure App Service.Īpp Service is a very popular PAAS service in Azure that is used to host web applications, REST APIs and mobile backends on either Windows or Linux based server environments.Īpp Service is ultra developer friendly and at the same time offers very robust scalability and security features suitable even for large Enterprises.
0 Comments
Leave a Reply. |