15:HowTo-Decouple Interface Pattern using LogicApp
Tarun Kumar Garg
Azure Technical Architect at KPMG UK | Integration Solution Architecture
LogicApp can be triggered from outside and linked with each other by HTTP calls but this all gives a synchronous approach to message processing. But often we need to decouple source and destination systems, as we integrate more systems having different downtime, downstream downtime, parallel processing capacity, a mechanism to save messages and process the same on-demand at a later stage.
Let's try to understand with a sample scenario:
Interface Int01 with two sources, one processing ( data transformation), and three destination systems.
Solution 1: Create two logic app for each source and perform processing and send to three destinations from each logic app. Problems with this solution
- source and destination are directly coupled, we can potentially hit throttling scenario
- duplicate processing code
- all failed message needs to be manually reprocessed
- timeout due to destination system capacity
Solution 2:
We can classify logic app into three categories
- Source system(s) interfaces — Int01-LAS01, Int01-LAS02
- LogicApp processing interfaces — Int01-LAP01
- Destination system(s) interfaces — Int01-LADRouter, Int01-LAD01, Int01-LAD02, Int01-LAD03
Communication between can be set up using Azure Storage queue and processing and destination logic app can be triggered from Azure Storage queue
Int01-LAS01, Int01-LAS02 will send message to Azure Storage Queue ( Int01SourceQueue)
Int01-LAP01 can pick messages from Azure Storage Queue ( Int01SourceQueue) and once processing is complete send message to Azure Storage Queue ( Int01DestinationQueue)
LADRouter can pick the message from Azure Storage Queue ( Int01DestinationQueue) and route to all three destinations LogicApp.
Based on requirement we can create an additional queue to store message during downtime and reprocess once things are back to normal or throttle message processing for the destination using Concurrency control in the logic app like the below image( max 26 message in parallel processing)
Decoupling is the key feature that should be implemented in all interfaces irrespective of underlying tools like LogicApp, BizTalk, Mulesoft, Dell Boomi … We will not have systems working with similar capability, maintenance downtime, technology, data format.
We need an interface system to manage all disparity and provide a solution approach that can be easily adaptable to ever-changing business needs.
Keep sharing…
Lead Digital Engineer at Sonata Software
3 周Thanks for posting