In this session, Toon will share his vision on how to achieve a loosely coupled architecture with Logic Apps and why this is so important. The focus will be on re-usability, flexibility, error handling, reliability and monitoring. This session targets both developers and architects.
3. Consider the following scenario
Enterprise integration
FILE, FTP, SFTP
Pure messaging
100+ Integrations
Batching
Debatching
Canonical data format
Business Critical
4. Goal of this session
Can we establish such enterprise
integrations with Logic Apps?
5. Let’s get our hands dirty!
5
Receive FF Archive FF Parse to XML Transform Send XML
6. Analyze the result!
6
We cannot reuse this
development effort in
similar integrations!
This workflow is too tightly
coupled with its receiving
transport protocol!
There’s no option to resume
this workflow if it fails
during processing.
This is spaghetti interfacing!
There’s no loose coupling or
pub/sub involved!
This workflow handles
multiple files, which results
in difficult troubleshooting!
10. you know your patterns
you know its strengths
you know its limitations
Logic Apps can be used for enterprise integration if
11. Analyze the result!
11
We cannot reuse this
development effort in
similar integrations!
This workflow is too tightly
coupled with its receiving
transport protocol!
There’s no option to resume
this workflow if it fails
during processing.
This is spaghetti interfacing!
There’s no loose coupling or
pub/sub involved!
This workflow handles
multiple files, which results
in difficult troubleshooting!
Design your solution to
enable reuse of common
integration tasks!
Perform protocol and
message processing in
different Logic Apps.
Design your solution to
turn resubmit into resume
functionality!
Don’t forget your
enterprise integration
patterns! Avoid P2P!
One Logic App instance
should handle only
one message.
12. How to achieve this?
12
➔ Process Manager: orchestrates the message exchange by
consuming reusable nested Logic Apps
➔ Publish - Subscribe: leverageAzure Service Bus and the
LogicApps connector to create loosely couple integrations
➔ Routing Slip: configure a message exchange, by reusing
LogicApps, without the need for a central process manager
➔ Templated Deployments: leverage advanced deployment
techniques to introduce reuse of development efforts
13. The Routing Slip Pattern
13
➔ Route a message through a series of processing steps
➔ Dynamically assign a route for each message
➔ The message exchange is completely config-based
14. The Routing Slip Pattern
15
➔ How to assign a routing slip?
➔ External
➔ Static
➔ Dynamic
➔ Scheduled
➔ How to invoke a service (step)?
➔ Sync
➔ Async
➔ Combination
Using Azure Service Bus
15. The Claim Check Pattern
16
➔ Azure Service Bus has a 256kB message size limit
➔ Store the payload in Azure Blob Storage
➔ Include a SAS-URI reference in the exchanged message
16. The Final Solution
17
➔ Developed a custom API App that:
➔ Provides Routing Slip functionality
➔ Reads Routing Slips from Azure File Share
➔ Integrates with Azure Service Bus
➔ Leverages claim check pattern with Azure Blob Storage