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, an approval process on a SharePoint Document Library) without going through developers or IT. On the other hand, Logic Apps can enable advanced 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.

Flow Logic Apps
Audience Office workers, business users, SharePoint administrators Pro integrators and developers, IT pros
Scenarios Self-service Advanced integrations
Design Tool In-browser and mobile app, UI only In-browser and Visual Studio, Code view available
Application Lifecycle Management (ALM) Design and test in non-production environments, promote to production when ready. DevOps: source control, testing, support, automation and manageability in Azure Resource Management
Admin Experience Manage Flow Environments and Data Loss Prevention (DLP) policies, track licensing https://admin.flow.microsoft.com Manage Resource Groups, Connections, Access Management and Logging https://portal.azure.com
Security Office 365 Security and Compliance audit logs, Data Loss Prevention (DLP), 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:

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:

Functions 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 Event Hubs, Azure Storage queues and blobs, Azure Service Bus queues and topics Azure Storage queues and blobs, Azure Service Bus queues and topics
In-browser development Supported Not Supported
C# Supported Supported
F# Supported Not Supported
JavaScript Supported Supported
Java Preview Not supported
Bash Experimental Supported
Windows scripting (.cmd, .bat) Experimental Supported
PowerShell Experimental Supported
PHP Experimental Supported
Python Experimental Supported
TypeScript Experimental Not 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, 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.

Next steps

Get started with each of the services by creating your first flow, logic app, function app, or WebJob. Click any of the following links:

Or, get more information on these integration services with the following links: