Azure Functions vs. Durable Functions

Summary

I was working with a client a few months ago trying to decide on a serverless architecture for a payment system. After considering the following for several months, and months of applied testing, the client settled for Microsoft Azure Functions.

  • AWS Lambda
  • Google Cloud Functions
  • IBM Cloud Functions
  • OpenFaaS
  • Apache OpenWhisk
  • Azure Functions

Once Azure Function was decided as the target serverless technology, the second round of evaluations started. This round consisted of testing the technology (Azure Functions vs. Azure Durable Function).

This post documents some of the findings from the evaluation.

*Note that this page may be outdated.

Azure Functions SKU

1. Azure Functions are single purpose, stateless compute services that are triggered by events and run in a serverless environment while Azure Durable Functions are stateful, long-running services that are triggered by events and run in a distributed, durable environment.

2. Azure Functions are built with serverless processing in mind while Azure Durable Functions are built to orchestrate and manage long-running processes.

3. Azure Functions are suitable for simpler computing tasks while Azure Durable Functions are suitable for complex, long-running processes.

4. Azure Functions are ideal for event-driven, real-time applications while Azure Durable Functions are ideal for orchestrating and managing long-running processes.

5. Azure Functions are serverless, meaning they can scale up or down without the need for manual intervention while Azure Durable Functions are distributed and durable, meaning they can persist the state of a process and recover from failure.

6. Azure Functions are triggered by events (such as a new message on a queue) while Azure Durable Functions are triggered by activities (such as a function call).

7. Azure Functions have a short execution time while Azure Durable Functions can have long-running execution times.

8. Azure Functions are written in languages such as C#, F#, Node.js, Java, Python and PHP while Azure Durable Functions are written in C#, F#, Node.js and Java.

9. Azure Functions have a pay-per-execution pricing model while Azure Durable Functions have a pay-per-resource pricing model.

10. Azure Functions are deployed to an Azure Function App while Azure Durable Functions are deployed to an Azure Durable Functions App.

11. Azure Functions are triggered via HTTP requests, Azure Queues, Azure Event Hubs, and other sources while Azure Durable Functions are triggered via HTTP requests, Azure Queues, Azure Event Hubs, Azure Service Bus, and other sources.

12. Azure Functions support a variety of programming languages while Azure Durable Functions support C# and JavaScript.

13. Azure Functions have an execution timeout of 10 minutes while Azure Durable Functions have an execution timeout of up to 7 days.

14. Azure Functions support custom bindings while Azure Durable Functions support custom activities.

15. Azure Functions support function chaining while Azure Durable Functions support function orchestration.

16. Azure Functions can be used for serverless compute tasks while Azure Durable Functions can be used for serverless workflow tasks.

17. Azure Functions are designed for fast, stateless execution while Azure Durable Functions are designed for orchestrating long-running, stateful processes.

18. Azure Functions are designed for a single purpose while Azure Durable Functions are designed for multiple purposes.

19. Azure Functions provide built-in scalability while Azure Durable Functions provide built-in state management.

20. Azure Functions can be deployed and run locally while Azure Durable Functions must be deployed and run in the cloud.