Choose between Flow, Logic Apps, Functions, and WebJobs
This article compares and contrasts the following services in the Microsoft cloud, which can all solve integration problems and automate business processes:
All these services are useful when "gluing" together disparate systems. They can all define input, actions, conditions, and output. You can run each of them on a schedule or trigger. However, each service has unique advantages, and comparing them is not a question of "Which service is the best?" but one of "Which service is best suited for this situation?" Often, a combination of these services is the best way to rapidly build a scalable, full-featured integration solution.
Flow vs. Logic Apps
We can discuss Microsoft Flow and Azure Logic Apps together because they are both configuration-first integration services. They make it easy to build processes and workflows and integrate with various SaaS and enterprise applications.
- Flow is built on top of Logic Apps
- They have the same workflow designer
- Connectors that work in one can also work in the other
Flow empowers any office worker to perform simple integrations (for example, get SMS for important emails) without going through developers or IT. On the other hand, Logic Apps can enable advanced or mission-critical integrations (for example, B2B processes) where enterprise-level DevOps and security practices are required. It is typical for a business workflow to grow in complexity over time. Accordingly, you can start with a flow at first, then convert it to a logic app as needed.
The following table helps you determine whether Flow or Logic Apps is best for a given integration.
|Audience||Office workers, business users||IT pros, developers|
|Design Tool||In-browser and mobile app, UI only||In-browser and Visual Studio, Code view available|
|DevOps||Ad-hoc, develop in production||source control, testing, support, and automation and manageability in Azure Resource Management|
|Security||Standard practices: data sovereignty, encryption at rest for sensitive data, etc.||Security assurance of Azure: Azure Security, Security Center, audit logs, and more.|
Functions vs. WebJobs
We can discuss Azure Functions and Azure App Service WebJobs together because they are both code-first integration services and designed for developers. They enable you to run a script or a piece of code in response to various events, such as new Storage Blobs or a WebHook request. Here are their similarities:
- Both are built on Azure App Service and enjoy features such as source control, authentication, and monitoring.
- Both are developer-focused services.
- Both support standard scripting and programming languages.
- Both have NuGet and NPM support.
Functions is the natural evolution of WebJobs in that it takes the best things about WebJobs and improves upon them. The improvements include:
- Serverless app model.
- Streamlined dev, test, and run of code, directly in the browser.
- Built-in integration with more Azure services and 3rd-party services like GitHub WebHooks.
- Pay-per-use, no need to pay for an App Service plan.
- Automatic, dynamic scaling.
- For existing customers of App Service, running on App Service plan still possible (to take advantage of under-utilized resources).
- Integration with Logic Apps.
The following table summarizes the differences between Functions and WebJobs:
|Scaling||Configurationless scaling||Scale with App Service plan|
|Pricing||Pay-per-use or part of App Service plan||Part of App Service plan|
|Run-type||Triggered, scheduled (by timer trigger)||Triggered, continuous, scheduled|
|Trigger events||Timer, Azure Cosmos DB, Azure Event Hubs, HTTP/WebHook (GitHub, Slack), Azure App Service Mobile Apps, Azure Notification Hubs, Azure Service Bus, Azure Storage||Azure Storage, Azure Service Bus|
|In-browser development||Supported||Not Supported|
|Windows scripting (.cmd, .bat)||Experimental||Supported|
Whether to use Functions or WebJobs ultimately depends on what you're already doing with App Service. If you have an App Service app for which you want to run code snippets, and you want to manage them together in the same DevOps environment, use WebJobs. In the following scenarios, use Functions.
- You want to run code snippets for other Azure services or 3rd-party apps.
- You want to manage your integration code separately from your App Service apps.
- You want to call your code snippets from a Logic app.
Flow, Logic Apps, and Functions together
As previously mentioned, which service is best suited to you depends on your situation.
- For simple business optimization, use Flow.
- If your integration scenario is too advanced for Flow, or you need DevOps capabilities and security compliances, then use Logic Apps.
- If a step in your integration scenario requires highly custom transformation or specialized code, then write a function and trigger the function as an action in your logic app.
You can call a logic app in a flow. You can also call a function in a logic app, and a logic app in a function. The integration between Flow, Logic Apps, and Functions continues to improve over time. You can build something in one service and use it in the other services. Therefore, any investment you make in these three technologies is worthwhile.
Get started with each of the services by creating your first flow, logic app, function app, or WebJob. Click any of the following links:
- Get started with Microsoft Flow
- Create a logic app
- Create your first Azure Function
- Deploy WebJobs using Visual Studio
Or, get more information on these integration services with the following links: