You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/reliability/reliability-app-service.md
+38-33Lines changed: 38 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,12 @@
1
1
---
2
2
title: Reliability in Azure App Service
3
-
description: Find out about reliability in Azure App Service
3
+
description: Find out about reliability in Azure App Service, including availability zones and multi-region deployments.
4
4
author: anaharris-ms
5
-
ms.author: csudrisforresiliency
5
+
ms.author: anaharris
6
6
ms.topic: reliability-article
7
7
ms.custom: subject-reliability
8
8
ms.service: azure-app-service
9
-
ms.date: 10/25/2024
9
+
ms.date: 11/01/2024
10
10
zone_pivot_groups: app-service-sku
11
11
---
12
12
@@ -16,72 +16,72 @@ This article describes reliability support in [Azure App Service](../app-service
16
16
17
17
Because resiliency is a shared responsibility between you and Microsoft, this article also covers ways for you to build a resilient solution that meets your needs.
18
18
19
-
Azure App Service is an HTTP-based service for hosting web applications, REST APIs, and mobile back ends. Azyre App Service adds the power of Microsoft Azure to your application, with capabilities for security, load balancing, autoscaling, and automated management. To explore how Azure App Service can bolster the reliability and resiliency of your application workload, see [Why use App Service?](../app-service/overview.md#why-use-app-service)
19
+
Azure App Service is an HTTP-based service for hosting web applications, REST APIs, and mobile back ends. Azure App Service adds the power of Microsoft Azure to your application, with capabilities for security, load balancing, autoscaling, and automated management. To explore how Azure App Service can bolster the reliability and resiliency of your application workload, see [Why use App Service?](../app-service/overview.md#why-use-app-service)
20
20
21
-
When you deploy Azure App Service, you can create multiple instances of an [App Service plan](/azure/app-service/overview-hosting-plans), which represents the compute workers that run your application code. The platform makes an effort to deploy the instances across different fault domains, but by default, the platform doesn't spread the instances across availability zones.
21
+
When you deploy Azure App Service, you can create multiple instances of an [App Service plan](/azure/app-service/overview-hosting-plans), which represents the compute workers that run your application code. Although the platform makes an effort to deploy the instances across different fault domains, it doesn't automatically spread the instances across availability zones.
22
22
23
23
## Production deployment recommendations
24
24
25
-
::: zone pivot="free-shared-basic"
26
-
27
25
For production deployments, you should:
28
26
27
+
::: zone pivot="free-shared-basic"
28
+
29
29
- Use premium v3 App Service plans.
30
30
-[Enable zone redundancy](#availability-zone-support), which requires your App Service plan to use a minimum of three instances.
31
31
32
32
::: zone-end
33
33
34
34
::: zone pivot="premium,isolated"
35
35
36
-
For production deployments, you should [enable zone redundancy](#availability-zone-support), which requires your App Service plan to use a minimum of three instances.
36
+
-[Enable zone redundancy](#availability-zone-support), which requires your App Service plan to use a minimum of three instances.
37
37
38
38
::: zone-end
39
39
40
40
## Transient faults
41
41
42
42
Transient faults are short, intermittent failures in components. They occur frequently in a distributed environment like the cloud, and they're a normal part of operations. They correct themselves after a short period of time. It's important that your applications handle transient faults, usually by retrying affected requests.
43
43
44
-
All cloud-hosted applications should follow Azure's transient fault handling guidance when communicating with any cloud-hosted APIs, databases, and other components. Microsoft-provided SDKs usually handle transient faults transparently. To learn more about handling transient faults, see [Recommendations for handing transient faults](/azure/well-architected/reliability/handle-transient-faults.
44
+
All cloud-hosted applications should follow Azure's transient fault handling guidance when communicating with any cloud-hosted APIs, databases, and other components. To learn more about handling transient faults, see [Recommendations for handing transient faults](/azure/well-architected/reliability/handle-transient-faults).
45
45
46
-
Additionally, because you host your own applications on Azure App Service, you need to consider how you avoid causing transient faults to your clients:
46
+
Although Microsoft-provided SDKs usually handle transient faults, because you host your own applications on Azure App Service, you need to consider how to avoid causing transient faults by making sure that you:
47
47
48
-
-**Deploy multiple instances of your plan.** Azure App Service performs automated updates and other maintenance on instances of your plan, and it can automatically heal instances that become unhealthy. When an instance is replaced during maintenance, Azure App Service automatically creates a new worker instance. In some situations, there's a short period of time where the previous instance is unavailable and a new instance isn't yet ready to serve traffic. You can mitigate the impact of this behavior by deploying multiple instances of your App Service plan.
48
+
-**Deploy multiple instances of your plan.**Azure App Service performs automated updates and other forms of maintenance on instances of your plan. If an instance becomes unhealthy, the service can automatically replace that instance with a new healthy instance. During the replacement process, there can be a short period of time where the previous instance is unavailable and a new instance isn't yet ready to serve traffic. You can mitigate the impact of this behavior by deploying multiple instances of your App Service plan.
49
49
50
-
-**Use deployment slots.** Azure App Service [deployment slots](/azure/app-service/deploy-staging-slots) allow for zero-downtime deployments of your applications. Use deployment slots to minimize the impact of deployments and configuration changes on your users, and reduce the likelihood that your application restarts, which causes a transient fault.
50
+
-**Use deployment slots.** Azure App Service [deployment slots](/azure/app-service/deploy-staging-slots) allow for zero-downtime deployments of your applications. Use deployment slots to minimize the impact of deployments and configuration changes on your users. Using deployment slots also reduces the likelihood that your application restarts, which causes a transient fault.
51
51
52
-
-**Avoid scaling up or down.** Instead, select a tier and instance size that meet your performance requirements under typical load, and then scale out the instances to handle changes in traffic volume. Scaling up and down may trigger an application restart.
52
+
-**Avoid scaling up or down.** Instead, select a tier and instance size that meet your performance requirements under typical load. Only scale out instances to handle changes in traffic volume. Consider that scaling up and down may trigger an application restart.
53
53
54
54
## Availability zone support
55
55
56
-
Azure App Service can be configured to be *zone redundant*, which means your resources are spread across multiple [availability zones](../reliability/availability-zones-overview.md) to help you achieve resiliency and reliability for your production workloads. Availability zone support is a property of the App Service plan.
56
+
Azure App Service can be configured as *zone redundant*, which means that your resources are spread across multiple [availability zones](../reliability/availability-zones-overview.md). Spreading across multiple zones helps your production workloads achieve resiliency and reliability. <!-- Not sure what this means --> Availability zone support is a property of the App Service plan.
57
57
58
58
Instance spreading with a zone-redundant deployment is determined inside the following rules, even as the app scales in and out:
59
59
60
60
- The minimum App Service plan instance count is three.
61
61
- If you specify a capacity larger than three, and the number of instances is divisible by three, the instances are spread evenly.
62
62
- Any instance counts beyond 3*N are spread across the remaining one or two zones.
63
63
64
-
When the App Service platform allocates instances for a zone-redundant App Service plan, it uses [best effort zone balancing offered by the underlying Azure virtual machine scale sets](/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-use-availability-zones#zone-balancing). An App Service plan will be "balanced" if each zone has either the same number of VMs, or +/- one VM, in all of the other zones used by the App Service plan.
64
+
When the App Service platform allocates instances for a zone-redundant App Service plan, it uses [best effort zone balancing offered by the underlying Azure virtual machine scale sets](/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-use-availability-zones#zone-balancing). An App Service plan is "balanced" if each zone has either the same number of VMs, or +/- one VM, in all of the other zones used by the App Service plan.
65
65
66
-
For App Service plans that aren't configured to be zone redundant, VM instances are not resilient to availability zone failures. They can experience downtime during an outage in any zone in that region.
66
+
For App Service plans that aren't configured as zone redundant, VM instances are not resilient to availability zone failures. They can experience downtime during an outage in any zone in that region.
67
67
68
68
### Requirements
69
69
70
70
::: zone pivot="free-shared-basic,premium"
71
71
72
-
**Plan type:** You must use either the [Premium v2 or Premium v3 plan types](/azure/app-service/overview-hosting-plans).
73
-
74
-
**Footprint:** Availability zones are only supported on the newer App Service footprint. Even if you're using one of the supported regions, you'll receive an error if availability zones aren't supported for your resource group. To ensure your workloads land on a stamp that supports availability zones, you may need to create a new resource group, App Service plan, and App Service.
72
+
- You must use either the [Premium v2 or Premium v3 plan types](/azure/app-service/overview-hosting-plans).
73
+
<!-- Is footprint a technical term here?-->
74
+
- Availability zones are only supported on the newer App Service footprint. Even if you're using one of the supported regions, you'll receive an error if availability zones aren't supported for your resource group. To ensure your workloads land on a stamp that supports availability zones, you may need to create a new resource group, App Service plan, and App Service.
75
75
76
76
::: zone-end
77
77
78
-
**Instance count:** You must deploy a minimum of three instances of your plan.
78
+
- You must deploy a minimum of three instances of your plan.
79
79
80
80
### Regions supported
81
81
82
82
::: zone pivot="free-shared-basic,premium"
83
83
84
-
Zone-redundant App Service plans can be deployed in [any region that supports availabilty zones](./availability-zones-service-support.md#azure-regions-with-availability-zone-support).
84
+
Zone-redundant App Service plans can be deployed in [any region that supports availability zones](./availability-zones-service-support.md#azure-regions-with-availability-zone-support).
85
85
86
86
::: zone-end
87
87
@@ -99,7 +99,7 @@ Applications that are deployed in a zone-redundant App Service plan continues to
99
99
100
100
::: zone pivot="free-shared-basic,premium"
101
101
102
-
When you're using App Service Premium v2 or Premium v3 plans, there's no additional cost associated with enabling availability zones as long as you have three or more instances in your App Service plan. You'll be charged based on your App Service plan SKU, the capacity you specify, and any instances you scale to based on your autoscale criteria. If you enable availability zones but specify a capacity less than three, the platform will enforce a minimum instance count of three and charge you for those three instances.
102
+
When you're using App Service Premium v2 or Premium v3 plans, there's no additional cost associated with enabling availability zones as long as you have three or more instances in your App Service plan. You'll be charged based on your App Service plan SKU, the capacity you specify, and any instances you scale to based on your autoscale criteria. If you enable availability zones but specify a capacity less than three, the platform enforces a minimum instance count of three and charges you for those three instances.
103
103
104
104
::: zone-end
105
105
@@ -151,28 +151,34 @@ During normal operations, traffic is routed between all of your available App Se
151
151
152
152
**Traffic rerouting:** When a zone is unavailable, Azure App Service detects the lost instances from that zone. It automatically attempt to find new replacement instances. Then, it spreads traffic across the new instances as needed.
153
153
154
-
If you have [autoscale](../app-service/manage-scale-up.md) configured, and if it decides more instances are needed, autoscale will also issue a request to App Service to add more instances. Note that [autoscale behavior is independent of App Service platform behavior](/azure/azure-monitor/autoscale/autoscale-overview) and that your autoscale instance count specification doesn't need to be a multiple of three.
154
+
If you have [autoscale](../app-service/manage-scale-up.md) configured, and if it decides more instances are needed, autoscale also issues a request to App Service to add more instances.
155
155
156
-
> [!NOTE]
157
-
> There's no guarantee that requests for additional instances in a zone-down scenario will succeed. The back filling of lost instances occurs on a best-effort basis. If you need guaranteed capacity when an availability zone is lost, you should create and configure your App Service plans to account for losing a zone. You can do that by [overprovisioning the capacity of your App Service plan](#capacity-planning-and-management).
156
+
>[!NOTE]
157
+
[Autoscale behavior is independent of App Service platform behavior](/azure/azure-monitor/autoscale/autoscale-overview). Your autoscale instance count specification doesn't need to be a multiple of three.
158
+
159
+
> [!IMPORTANT]
160
+
> There's no guarantee that requests for additional instances in a zone-down scenario succeed. The back filling of lost instances occurs on a best-effort basis. If you need guaranteed capacity when an availability zone is lost, you should create and configure your App Service plans to account for losing a zone. You can do that by [overprovisioning the capacity of your App Service plan](#capacity-planning-and-management).
158
161
159
162
### Failback
160
163
161
164
When the availability zone recovers, Azure App Service automatically creates instances in the recovered availability zone, removes any temporary instances created in the other availability zones, and routes traffic between your instances as normal.
162
165
163
166
### Testing for zone failures
164
167
165
-
The Azure App Service platform manages traffic routing, failover, and failback for zone-redundant App Service plans. You don't need to initiate anything. Because this feature is fully managed, you don't need to validate availability zone failure processes.
168
+
Azure App Service platform manages traffic routing, failover, and failback for zone-redundant App Service plans. Because this feature is fully managed, you don't need to initiate or validate availability zone failure processes.
166
169
167
170
## Multi-region support
168
171
169
172
Azure App Service is a single-region service. If the region becomes unavailable, your application is also unavailable.
170
173
171
174
### Alternative multi-region solutions
172
175
173
-
If you need to use App Service in multiple regions, you need to deploy separate resources in each region. By creating identical deployments in multple Azure regions, your application becomes less susceptible to a single-region failure.
174
176
175
-
When you follow this approach, you need to deploy your application to the instances in each region, and configure load balancing and failover policies. You also need to replicate your data across the regions so that you can recover your last application state.
177
+
To ensure that your application becomes less susceptible to a single-region failure, you'll need to deploy your application to multiple regions. To do this, you should:
178
+
179
+
- Deploy your application to the instances in each region.
180
+
- Configure load balancing and failover policies.
181
+
- Replicate your data across the regions so that you can recover your last application state.
176
182
177
183
::: zone pivot="free-shared-basic,premium"
178
184
@@ -193,17 +199,16 @@ For an example approach that illustrates this architecture, see [High availabili
193
199
194
200
## Backups
195
201
196
-
When you use the Basic tier or higher, you can back up your App Service app to a file by using the [App Service backup and restore capabilities](../app-service/manage-backup.md). This feature can be useful if it's hard to redeploy your code, or if you store state on disk. For most solutions, you shouldn't rely on App Service backups, and you should use the other capabilities described in this article to support your resiliency requirements.
202
+
When you use Basic tier or higher, you can back up your App Service app to a file by using the [App Service backup and restore capabilities](../app-service/manage-backup.md). This feature is useful if it's hard to redeploy your code, or if you store state on disk. However, for most solutions, you shouldn't rely on App Service backups, and should instead use the other methods described in this article to support your resiliency requirements.
197
203
198
-
To learn more about backups and how they contribute to a resiliency strategy, see [new conceptual article]. <!-- TODO We should omit this until we've got the conceptual article ready -->
204
+
<!--To learn more about backups and how they contribute to a resiliency strategy, see [new conceptual article]. TODO We should omit this until we've got the conceptual article ready -->
199
205
200
206
## Service-level agreement (SLA)
201
207
202
-
The service-level agreement (SLA) for Azure App Service describes the expected availability of the service, and the conditions that must be met to achieve that availability expectation. To understand those conditions, it's important that you review the [Service Level Agreements (SLA) for Online Services](https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services).
208
+
The service-level agreement (SLA) for Azure App Service describes the expected availability of the service. It also describes the conditions that must be met to achieve that availability expectation. To understand those conditions, it's important that you review the [Service Level Agreements (SLA) for Online Services](https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services).
203
209
204
210
When you deploy a zone-redundant App Service plan, the uptime percentage defined in the SLA increases.
0 commit comments