September 30, 2021
Most businesses, from independent professionals and mom-and-pop stores to large multi-national corporations, run multiple applications and services. It's rare that the functionality of these software suites fit perfectly into the business processes of an organization, and even rarer that they provide out-of-the-box integrations with one another. Yet this is exactly what every company needs: a well-oiled end-to-end business engine that runs with minimal human intervention, and efficiently distributes the right data to the right task at the right time, empowering workers to perform optimally.
This is a common problem, and it's not surprising that there are many application integration and business process automation tools to choose from. One company that has been innovating in this space effectively since the beginning of the digital era is Microsoft. More recently it has taken all its expertise and applied it to building a powerful and diverse suite of services powered by its cloud platform, Microsoft Azure.
Azure offers four services that make it possible for organizations of all sizes to integrate their applications and automate their processes without taking on infrastructure maintenance or heavy upfront costs:
All four technologies allow creation of workflows, as the business processes modelled in software are often called, that can be started based on a schedule or triggered by an external event. They all accept inputs, can run actions, employ conditions to build complex control flows, and produce outputs. These constructs can be combined in trees and chains of actions that orchestrate interactions between applications and people to reduce unproductive manual work and expedite desired business outcomes.
The obvious question now is why four services that effectively do the same thing, why not just one? The answer is that each targets a different audience, and they differ by how workflows are authored, the necessary technical expertise, and how and where they can be executed, among others.
Microsoft Power Automate and Logic Apps include interfaces that can be used to draw out the workflow, just as business stakeholders would design a business process by drawing a flow diagram on a whiteboard.
Microsoft Power Automate is a service targeted towards organizations or departments with no software development expertise. It supports definition of workflows that are triggered by an event (a tweet or an email), started manually with the press of a button, or scheduled to run at defined intervals or on specific dates. In addition, it supports modelling a business process with approval steps and notifications to stakeholders, with approvals and times recorded.
It is built on top of Logic Apps, so it supports the same wide selection of integration points (called connectors) and actions, as described in the next section.
Logic Apps is the developer-centric design-first solution for authoring workflows. Its biggest strength is the very rich set of triggers and actions, defined as connectors to a multitude of applications and platforms: Office 365, Azure DevOps, on-premises or cloud-hosted SQL Server, Salesforce, Twitter, and many more. Defining connectors to your own services is straightforward, when needed.
Microsoft has recently re-engineered the Logic Apps execution engine for portability and performance, implementing it as an extension to Azure Functions. As we'll describe in a later section, this enables deployment to various hosting environments such as Azure, on-premises or any-cloud container orchestrators.
Equally important, the new Azure Functions-based runtime unlocks an excellent developer experience, by making it possible to design workflows in development tools such as Visual Studio and VS Code, to complement the authoring tools available in the Azure Portal. If needed or preferred, it is also possible to edit the underlying JSON workflow definition files.
If you're looking for self-serve workflow creation experience for your office workers and business analysts, Microsoft Power Automate is the best choice. Workflows can be designed either in the browser or on the mobile app, and the included testing and production environments enable a simple workflow development lifecycle that is sufficient for most use-cases.
On the other hand, if you have developers and IT professionals on staff, and you need to support advanced integration scenarios, reach for Logic Apps. The developer tools are powerful, the Logic Apps source code can be included in source code management systems, and built and deployed with any release management tool, such as Azure DevOps.
When you need more control over the end-to-end reliability and scalability of your workflows, or you have highly complex integration scenarios, the developers on your team would be able to better manage the complexity and be more productive by using code-first services: Azure Functions and WebJobs.
Azure Functions is an event-driven serverless compute platform that also excels at solving complex orchestration problems via its Durable Functions extension. It is a simple way to run code in the cloud, in response to HTTP calls, based on a schedule, or when documents are updated in a database, or files added to Azure Storage.
The Durable Functions and Durable Entities extensions facilitate the development of complex stateful long-running workflows that can run for days if needed, reacting to, and acting upon external events from other applications or because of human-input. Developers use common programming constructs, such as if-then-else, switch, and try-catch statements, and the runtime ensures each action is reliably executed or, if necessary, replayed with no side effects, if necessary. By employing Azure Storage or SQL Server as backing stores for orchestration state, developers have the ability to transparently inspect workflow execution progress, for a better debugging and incident response process.
The Azure Functions runtime can be run almost anywhere: on Windows, Linux, and macOS machines, on-premises or in-the-cloud containers on Azure, AWS, or Google Cloud.
Developers can build workflows using the full power of the development tools and practices that they are already familiar with, including tracing and debugging, unit & integration testing, code reviews, etc.
Azure App Service is one of Azure's hosting services for web applications and HTTP-based APIs. WebJobs are part of Azure App Service and can be used to run background jobs either continuously or triggered, manually or on a schedule.
Aside from the job-triggering mechanism, there are no built-in facilities for developing long-running workflows.
Azure WebJobs have very limited workflow-building capabilities. Choose them if you need to implement a simple flow, you already have an App Service application, and you'd like to manage the workflow code as part of that same application.
The choice may seem daunting. But you don't have to choose one or the other. If you've been paying attention, you may remember that Microsoft Power Automate is built on top of Logic Apps, and Logic Apps are built on top of Azure Functions. Workflows developed with one technology can call actions or workflows developed with the others. Logic Apps and Azure Functions can even share the same Azure execution environment, so communication between the two is optimized.
Start wherever you feel most comfortable. As workflows grow and become more complex, re-asses your choice of technology. Split workflows into smaller, more manageable ones, and potentially move them to a more appropriate technology.
If you need assistance with selecting the most appropriate application integration and business process automation service, or with building integration and automation workflows, our solution architects and engineers are just one phone call or email away.