Skip to content

Commit 03a6c36

Browse files
committed
Updates per PM feedback
1 parent dd8f96d commit 03a6c36

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

articles/logic-apps/business-continuity-disaster-recovery-guidance.md

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ The data gateway resource is associated with a location or Azure region, just li
8888
> ISE-versioned connectors for on-premises data sources, you don't need the data
8989
> gateway because ISE connectors provide direct access to the the on-premises resource.
9090
>
91-
> If no ISE-versioned connector is available for the resource that you want,
91+
> If no ISE-versioned connector is available for the on-premises resource that you want,
9292
> your logic app can still create the connection by using a non-ISE connector,
9393
> which runs in the global multi-tenant Azure, not your ISE. However, this connection
9494
> requires the on-premises data gateway.
@@ -101,8 +101,8 @@ You can set up your primary and secondary locations so that your logic app insta
101101

102102
| Primary-secondary role | Description |
103103
|------------------------|-------------|
104-
| *Active-active* | Both logic app instances in both locations actively handle requests, for example: <p><p>- You can have the secondary instance listen at an HTTP endpoint and have traffic load balanced to that instance as necessary. <p>- Or, you can have the second instance act as a competing consumer so that both instances compete for messages from a queue. If one instance fails, the other instance takes over the workload. |
105-
| *Active-passive* | The primary logic app instance handles the entire workload, while the secondary instance is passive or inactive. The secondary waits for a signal that the primary is unavailable or not working due to disruption or failure and takes over the workload as the active instance. |
104+
| *Active-active* | The primary and secondary logic app instances in both locations are enabled and actively handle requests by following either of these patterns: <p><p>- *Load balance*: You can have both instances listen to an endpoint and load balance traffic to each instance as necessary. <p>- *Competing consumers*: You can have both instances act as competing consumers so that the instances compete for messages from a queue. If one instance fails, the other instance takes over the workload. |
105+
| *Active-passive* | The primary logic app instance is enabled and actively handles the entire workload, while the secondary instance is passive (disabled or inactive). The secondary waits for a signal that the primary is unavailable or not working due to disruption or failure and takes over the workload as the active instance. |
106106
| Combination | Some logic apps play an active-active role, while other logic apps play an active-passive role. |
107107
|||
108108

@@ -146,7 +146,7 @@ To minimize the number of abandoned in-progress workflow instances, you can choo
146146

147147
* [Fixed routing slip pattern](https://docs.microsoft.com/biztalk/esb-toolkit/message-routing-patterns#routing-slip)
148148

149-
This enterprise message pattern that splits a business process into smaller stages. For each stage, you set up a logic app that handles the workload for that stage. To communicate with each other, your logic apps use an asynchronous messaging protocol such as Azure Service Bus queues or topics. When you divide a process into smaller stages, you reduce the number of stages that might get stuck on a failed logic app instance. For more general information about this pattern, see [Enterprise integration patterns - Routing slip](https://www.enterpriseintegrationpatterns.com/patterns/messaging/RoutingTable.html).
149+
This enterprise message pattern that splits a business process into smaller stages. For each stage, you set up a logic app that handles the workload for that stage. To communicate with each other, your logic apps use an asynchronous messaging protocol such as Azure Service Bus queues or topics. When you divide a process into smaller stages, you reduce the number of business processes that might get stuck on a failed logic app instance. For more general information about this pattern, see [Enterprise integration patterns - Routing slip](https://www.enterpriseintegrationpatterns.com/patterns/messaging/RoutingTable.html).
150150

151151
This example shows a routing slip pattern where each logic app represents a stage and uses a Service Bus queue to communicate with the next logic app in the process.
152152

@@ -168,7 +168,7 @@ To get more information about your logic app's past workflow executions, you can
168168

169169
## Trigger type guidance
170170

171-
The trigger type that you use in your logic apps determines your options for how you can set up logic apps across locations in your disaster recovery strategy. You can use these trigger types in logic apps:
171+
The trigger type that you use in your logic apps determines your options for how you can set up logic apps across locations in your disaster recovery strategy. Here are the available trigger types that you can use in logic apps:
172172

173173
* [Recurrence trigger](#recurrence-trigger)
174174
* [Polling trigger](#polling-trigger)
@@ -184,23 +184,25 @@ The **Recurrence** trigger is independent from any specific service or endpoint,
184184
* A fixed frequency and interval, such as every 10 minutes
185185
* A more advanced schedule, such as the last Monday of every month at 5:00 PM
186186

187-
If your logic app starts with a Recurrence trigger, you need to set up the primary and secondary instances as active-passive in their respective locations. To reduce the *recovery time objective* (RTO), which refers to the target duration for restoring a business process after a disruption or disaster, you can set up logic apps that use Recurrence triggers either as active-passive or passive-active. In this setup, you split the schedule across locations.
187+
So, if your logic app starts with a Recurrence trigger, you need to set up the primary and secondary logic app instances with the ]active-passive roles](#roles).
188188

189-
For example, if you have a logic app that needs to run every 10 minutes, set up your logic apps and locations as follows:
189+
To reduce the *recovery time objective* (RTO), which refers to the target duration for restoring a business process after a disruption or disaster, you can set logic app instances that start with Recurrence triggers in a combination of [active-passive roles](#roles) and [passive-active roles](#roles). In this setup, you split the schedule across locations.
190190

191-
* Active-passive
191+
For example, if you want to have a logic app that must run every 10 minutes, you can set up your logic apps and locations as follows:
192192

193-
* In the primary location, set the *active* logic app's Recurrence trigger to a 20-minute recurrence that starts at the top of the hour, for example, 9:00 AM.
193+
* In the primary location, set up [active-passive roles](#roles) for these logic apps:
194194

195-
* In the secondary location, set the *passive* logic app's Recurrence trigger to a 20-minute recurrence that starts at 10 minutes past the hour that's set in the other location, for example, 9:10 AM.
195+
* On the *active* (enabled) logic app, set the Recurrence trigger to a 20-minute recurrence that starts at the top of the hour, for example, 9:00 AM.
196196

197-
!["Active-passive" setup that uses Recurrence triggers](./media/business-continuity-disaster-recovery-guidance/active-passive-recurrence-trigger.png)
197+
* On the *passive* (disabled) logic app, set the Recurrence trigger to a 20-minute recurrence that starts at 10 minutes past the hour, for example, 9:10 AM.
198198

199-
* Passive-active
199+
!["Active-passive" setup that uses Recurrence triggers](./media/business-continuity-disaster-recovery-guidance/active-passive-recurrence-primary.png)
200200

201-
* In the secondary location, set the *active* logic app's Recurrence trigger to a 20-minute recurrence that starts at 10 minutes past the hour, for example, 9:10 AM.
201+
* For the reverse configuration in the secondary location, set up [passive-active](#roles) for these logic apps:
202202

203-
* In the primary location, set the *passive* logic app's Recurrence trigger to a 20-minute recurrence that starts at the top of the hour that's set in the other location, for example, 9:00 AM.
203+
* On the *active* logic app's, set the Recurrence trigger to a 20-minute recurrence that starts at 10 minutes past the hour, for example, 9:10 AM.
204+
205+
* On the *passive* logic app, set the Recurrence trigger to a 20-minute recurrence that starts at the top of the hour that's set in the other location, for example, 9:00 AM.
204206

205207
When a disruptive event happens in one location, enable the passive logic app. That way, if discovering the failure takes time, this configuration limits the number of missed recurrences during that delay.
206208

@@ -259,9 +261,9 @@ The **Request** trigger makes your logic app callable from other apps, services,
259261

260262
From a disaster recovery perspective, the Request trigger plays a passive role because the logic app doesn't do any work and waits until some other service or system explicitly calls the trigger. As a passive endpoint, you can set up your primary and secondary instances in these ways:
261263

262-
* [Active-active](#roles): Both instances are enabled and active. The caller or router balances or distributes traffic between those instances.
264+
* [Active-active](#roles): Both instances are enabled. The caller or router balances or distributes traffic between those instances.
263265

264-
* [Active-passive](#roles): Only the primary instance is enabled and active, handling all the work. The secondary instance is inactive and waits until the primary is disrupted or fails. The caller or router determines when to enable the secondary instance.
266+
* [Active-passive](#roles): Only the primary instance is enabled and handles all the work. The secondary instance is disabled and waits until the primary is disrupted or fails. The caller or router determines when to enable the secondary instance.
265267

266268
As a recommended architecture, you can use Azure API Management as a proxy for the logic apps that use Request triggers. API Management provides [built-in cross-regional resiliency and the capability to route traffic across multiple endpoints](https://docs.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region).
267269

11.8 KB
Loading

0 commit comments

Comments
 (0)