Skip to content

Choose the best Azure service to automate your business processes

Steve Pettifer edited this page May 25, 2021 · 1 revision
  • Power Automate
    • Design-first
    • No requirement for experience or code
    • Ideal for business users
    • Includes some pre-made workflows
    • No ability to include in source control
  • Logic apps
    • Design first
    • More powerful and extensible - many connectors for other services
    • Can be edited and extended with code (JSON)
    • Can be managed in source control and deployed using CI/CD tools
  • WebJobs
    • Code first
      • Supports shell scripts like Windows, PS, Bash
      • PHP, Py, Hode.js, JavaScript
      • SDK can be used in C#/VB (v3 allows .Net Core as well)
      • SDK brings easier integration with app service via HostBuilder and JobHostConfiguration classes
    • Hosted in app service so might be a good choice for a job that tightly integrates with existing app
    • Poor choice for a standalone job as costs of app service may be higher than per-execution functions
    • SDK offers more control over JobHost class
    • Supposedly the better choice when you want a custom retry policy for calls to external systems as it supports them, but see below in Functions: Polly can do this
    • Only real reason for using webjobs is that you want the workflow managed as part of an existing web app but that's pretty thin
    • Jobs run continuously or are triggered manually/by schedule
    • Does not autoscale - constrained by app service SKU
  • Functions
    • Code first
      • Supports C#, Java, Javascript, Py, PS, TS, F#
    • Can be source controlled and deployed by CI/CD
    • Many types of pre-existing triggers with code templates (http, timer, blob, EG, Cosmos, EH etc)
    • Possible to create your own bindings if needed
    • Can integrate easily with third party services
    • Can autoscale on demand
    • Although MS say that webjobs are the thing to use if you want retry policies when talking to external deps, it is perfectly possible to use Polly (or similar) in funcs which gives powerful, flexible retries