Introduction
With the rapid adoption of cloud based services and with the advent of various types of cloud services serving/solving a need/problem there was/is a need to have a way to let the individual services be able to communicate to each other.
Also to orchestrate a business flow with integrating various services, and this is where Microsoft introduced Logic Apps (Other IT leaders have too came up with their offerings)
Logic App is nothing but an Integration engine(tool) which resides on cloud, so now question might arise - yet another Integration tool.
Already there is BizTalk Server which has been there for over a decade solving the need around integrating various applications, helping in automating the business flow and assisting B2B function properly in adherence to industry standards(EDI,SWIFT,HIPPA, HL7 etc).
True, both the offering from Microsoft at high level address the same area i.e., Integration, but BizTalk been on premises solution and Logic apps primarily to cater the integration needs of SAAS services, now getting more evolved with connectors getting added related to on premises applications, LOB etc.
The most fundamental difference is BizTalk is a product which you need to buy, procure a machine/s for it , install, build applications on it and you have to manage both applications and BizTalk server, whereas Logic App is a cloud based service for which you pay as you use (Platform as a service) and is managed for you by Microsoft.
Being a BizTalk Developer it is but obvious to correlate many things with Logic apps or compare the features available. It is my perception that Logic app is greatly influenced by BizTalk Orchestration, off course it is also a workflow so there will be:).
What's the differences
Native message format
BizTalk is XML based whereas Logic apps is JSON based, although both are capable of handling other formats as well like EDI, HIPPA, HL7, SWIFT etc (Logic App needs Enterprise Integration Pack)
Types of solution
In BizTalk we have Messaging Solution(use only schema, maps and ports) and Orchestration(workflow) based solution whereas in Logic app we have only workflow.
Connecting to other systems/applications
In BizTalk it is via Adapters whereas in Logic apps it is via connectors. Connectors is encapsulation of authentication, data validation in combination of Triggers and actions.
Instantiation of workflow
In BizTalk Message creates instance of Orchestration likewise trigger creates instance of Logic app.
Following are Trigger type available as of now
i. Request(endpoint) ii. Recurrence(schedule) iii. Http iv. ApiConnection v.HttpWebhook vi. ApiConnectionWebhook
Development tool
BizTalk development is done only with Visual Studio whereas Logic app development can be done in Browser based Logic app designer and also support for development using Visual studio is present.
Flow controls
BizTalk Orchestration have following shapes which can be used to create workflow
Whereas logic app has following as of now (I am sure more will be added in coming days)
Promoted/Distinguished properties
In BizTalk some system properties are promoted by Adapters/pipelines and if anything from content is to be promoted/distinguished then explicitly has to be marked as so in Schema whereas in Logic App if you define schema the properties are auto promoted, and are available in workflow wherever appropriate.
Exception handling
In BizTalk exceptions can be handled at port level by enabling Failed Message routing and in orchestration by adding Exception Handling shape whereas in logic app you can check for error conditions of single Action and take required steps or you can use Scope to group multiple Action and apply check on its result using @result workflow function. Also we can Catch failures with the RunAfter property.
Long running transactions
BizTalk has out of box support for orchestration which can be marked as Long running whereas in Logic app it has to be architected at design time accordingly
Nested Workflow
BizTalk has support for calling or starting an orchestration from within another orchestration likewise Logic app support invoking another logic app from within Logic app
Deployment
BizTalk deployment on development environments is done via visual studio and on other environments with the use of MSI whereas in Logic app you save a workflow in browser designer – it gets deployed in the procured logic app instance, also deployment from visual studio is supported.
Tracking and Monitoring
There is provision in BizTalk to track the artifacts and Group Hub page to monitor the events going on in BizTalk, also support for process monitoring is available with the help of Business Activity Monitoring(BAM).
BRE
One of the very strong capability/feature in BizTalk is Business Rule engine, logic app doesn’t have it as of now but would be good to have such feature.
Retry Mechanism
Retry functionality is provided out of box in BizTalk and can be set statically over send port or dynamically in Orchestration.
Scalability
We can scale out or scale in BizTalk - depends on edition whereas Logic app can be scale out or scale up – by using appropriate tier, but the time taken for Logic App is too less
SQL Dependency
BizTalk depends on SQL Server, as it is used to house databases and stored procedures which are needed at BizTalk design and runtime whereas you don’t have to worry about the backend of Logic App.
Utilizing custom code in workflow
In a scenario where we need custom code to be used, it can be done with help of Helper class in BizTalk, likewise in Logic App we can use Azure functions.
B2B
BizTalk has out of box support for B2B supporting various industry standards like ANSI X12, EDIFACT,SWIFT,HIPPA, HL7,AS2 etc.
Cost
Last but not the least, we have to invest before in case of BizTalk to procure the hardware, license etc whereas for logic app you need to have a Azure subscription first and you pay per action in Logic App.
After going through above points, there might arise a question - is Logic App a replacement to BizTalk? The answer is No
Although the capabilities of both may be overlapping but BizTalk and Logic App are not alternative but instead BizTalk and Logic App are better together.
1. Company Policies
2. Country Policies
3. Industry domain specific policies
4. Not all functionalities/applications available on cloud or are not that robust (which are available on prem) etc etc.
But to keep up with the pace of revolution happening in cloud and to extend the Business capabilities, companies would be utilizing the SAAS services along with what they have on prem.
Considering all this points following options are made available by Microsoft in order to enable the Hybrid Integration.
1. On Premise Data gateway – to access on prem resources from Cloud (Logic App, Power BI, Microsoft Flow etc)
2. BizTalk Connector in Logic App- to connect to BizTalk from Logic App
3. Logic App adapter – to connect to Logic App from BizTalk
4. Service Bus Adapter - to connect to Service Bus on Azure from BizTalk
Following statistics was published by Gartner
Final thought, something I think should be considered while making decision- Will the cost of having Logic App will be more than setting up BizTalk infrastructure on Prem. Say if logic app has 50/100 actions and millions of transactions processed?
Hybrid Integration is future :)
Knowledge Sharing is Caring !!!!!!
Learn More about Logic App
- How to configure Logic App Standard workflow behind Azure APIM
- How to Query Azure Table storage from Logic App | How to filter results of Azure Table storage from Logic App
- Understanding expressions in Logic Apps | Frequently used expressions in Logic Apps | What is expressions in Logic App
- How to use Logic app Run History | How to troubleshoot Logic App workflow execution
- Logic App and Slack - Sending messages to slack channel | Logic app and slack integration | Connecting Logic App to Slack channel
- How to access Application settings fields value from Logic app Standard workflow | Using Application settings as configuration store for Logic app standard workflow
- Developing Logic app standard workflow which uses Map locally and deploying to Azure
- Developing Logic App Standard Workflow Using Visual Studio Code | Create Logic App Standard Workflow Using Visual Studio Code
- Logic App - Xml to Json using Liquid Map | Append in Liquid Map
- How to use Azure Event Grid Custom Topic | Publishing and Subscribing from Azure Event Grid Custom Topic using Logic App
- Using Azure Storage Account Table as Config Store for Logic Apps | How to read and write from Logic App to Azure Storage Account Table
- Get Logic App Name in Logic App
- Difference between Logic App Consumption and Logic App Standard
- Getting Started with Logic App Standard | Overview of Logic App Standard | Basics of Logic App Standard
- How to find count of Logic App executions using Azure Portal
- Azure Functions vs Azure Logic App | Difference between Azure Functions and Azure Logic App
- Getting started with Logic App : Liquid Map | Using Liquid template in Logic app
- How to get actual error message of Scope in Logic App | Exception Handling in Logic app
- Interview questions and answers on Logic Apps | Interview questions for azure logic app developers
- How to execute Stored Procedure in Logic App | How to connect to SQL in Logic App
- How to get current date in logic app | How to format date time in Logic App
- BizTalk Developer getting started with Logic App
- Getting Started with Logic Apps - Fundamentals
- Getting Started with Logic Apps - Enterprise Application Integration
- Getting Started with Logic Apps - AS2
- Getting Started with Logic Apps - EDI X12 Fundamentals
- Getting Started with Logic Apps - XML to EDI X12
- Getting Started with Logic Apps - EDI X12 to XML
- Getting Started with Logic Apps - What happened to the Request?
- Inserting Multiple Records In On Prem SQL Using Logic App
- Inserting data in On Premises SQL Database using Logic Apps
- Installing and Configuring On Premises Data Gateway - By adding user to Active Directory
- XML Batching(Aggregation) in Logic App
- Batching(Aggregating) messages in Logic App
- Debatching(Splitting) JSON Message in Logic Apps - ForEach and SplitOn
- Debatching(Splitting) XML Message in Logic Apps - ForEach and SplitOn
- Securing Logic App with Azure Active Directory authentication
- Removing ns0: prefix from xml output from BizTalk/Logic app XSLT map
- Using Managed Identity in Logic Apps for Calling Active Directory Secured Function App
- Logic Apps : Fetching ISA and GS Segment Values From Interchange Envelope and Mapping
- Logic Apps : For Each Inside a For Each - Fetching values from field in an array inside an array
- How to configure Logic App Standard workflow behind Azure APIM
- How to Query Azure Table storage from Logic App | How to filter results of Azure Table storage from Logic App
- Understanding expressions in Logic Apps | Frequently used expressions in Logic Apps | What is expressions in Logic App
- How to use Logic app Run History | How to troubleshoot Logic App workflow execution
- Logic App and Slack - Sending messages to slack channel | Logic app and slack integration | Connecting Logic App to Slack channel
- How to access Application settings fields value from Logic app Standard workflow | Using Application settings as configuration store for Logic app standard workflow
- Developing Logic app standard workflow which uses Map locally and deploying to Azure
- Developing Logic App Standard Workflow Using Visual Studio Code | Create Logic App Standard Workflow Using Visual Studio Code
- Logic App - Xml to Json using Liquid Map | Append in Liquid Map
- How to use Azure Event Grid Custom Topic | Publishing and Subscribing from Azure Event Grid Custom Topic using Logic App
- Using Azure Storage Account Table as Config Store for Logic Apps | How to read and write from Logic App to Azure Storage Account Table
- Get Logic App Name in Logic App
- Difference between Logic App Consumption and Logic App Standard
- Getting Started with Logic App Standard | Overview of Logic App Standard | Basics of Logic App Standard
- How to find count of Logic App executions using Azure Portal
- Azure Functions vs Azure Logic App | Difference between Azure Functions and Azure Logic App
- Getting started with Logic App : Liquid Map | Using Liquid template in Logic app
- How to get actual error message of Scope in Logic App | Exception Handling in Logic app
- Interview questions and answers on Logic Apps | Interview questions for azure logic app developers
- How to execute Stored Procedure in Logic App | How to connect to SQL in Logic App
- How to get current date in logic app | How to format date time in Logic App
- BizTalk Developer getting started with Logic App
- Getting Started with Logic Apps - Fundamentals
- Getting Started with Logic Apps - Enterprise Application Integration
- Getting Started with Logic Apps - AS2
- Getting Started with Logic Apps - EDI X12 Fundamentals
- Getting Started with Logic Apps - XML to EDI X12
- Getting Started with Logic Apps - EDI X12 to XML
- Getting Started with Logic Apps - What happened to the Request?
- Inserting Multiple Records In On Prem SQL Using Logic App
- Inserting data in On Premises SQL Database using Logic Apps
- Installing and Configuring On Premises Data Gateway - By adding user to Active Directory
- XML Batching(Aggregation) in Logic App
- Batching(Aggregating) messages in Logic App
- Debatching(Splitting) JSON Message in Logic Apps - ForEach and SplitOn
- Debatching(Splitting) XML Message in Logic Apps - ForEach and SplitOn
- Securing Logic App with Azure Active Directory authentication
- Removing ns0: prefix from xml output from BizTalk/Logic app XSLT map
- Using Managed Identity in Logic Apps for Calling Active Directory Secured Function App
- Logic Apps : Fetching ISA and GS Segment Values From Interchange Envelope and Mapping
- Logic Apps : For Each Inside a For Each - Fetching values from field in an array inside an array
nice article
ReplyDeletewhat about esb implementation future in biztalk?
ReplyDelete