Take your Azure Functions to the next level with Durable Functions @ Serverless Computing London 2018

Take your Azure Functions to the next level with Durable Functions @ Serverless Computing London 2018

Slides of my presentation for the Serverless Computing conference in London on 13 Nov 2018.

Source code for the demos is located in this repo: https://github.com/marcduiker/demos-azure-durable-functions

Fd55de4174accaf3b4f030e43a8a70c6?s=128

Marc Duiker

November 13, 2018
Tweet

Transcript

  1. 1.
  2. 28.

    Marc Duiker Durable Functions • Visual Studio 2017 15.7+ •

    Azure Workload - Extension: Azure Functions & Web Jobs Tools - Azure Storage Emulator - Microsoft.Azure.Webjobs.Extensions.DurableTask Local development with VS2017
  3. 32.

    Marc Duiker Durable Functions Demo: Function Chaining Find a Star

    Wars character and their home planet. https://swapi.co/
  4. 35.

    Marc Duiker Durable Functions Fan-out/fan-in FA1 returns a collection of

    items FA2 is called for each of the items from FA1
  5. 36.

    Marc Duiker Durable Functions Demo: Fan-out/Fan-in Find a Star Wars

    planet and their residents. https://swapi.co/
  6. 39.

    Marc Duiker Durable Functions Unit Testing Demo Testing the GetPlanetResidents

    orchestration using: • xUnit • Moq • AutoFixture • FluentAssertions
  7. 40.

    Marc Duiker Durable Functions Unit Testing • Use the context

    base classes. • Use simple or complex (serializable) types with [ActivityTrigger] for the activity input. • Because DurableActivityContext can’t be instantiated/mocked due to internal constructor .
  8. 42.

    Marc Duiker Durable Functions • In and output of functions

    should be serializable. • Orchestration Functions should be deterministic: - DateTime.Now, use CurrentUtcDateTime - Guid.NewGuid() - Random generated data Closing remarks I
  9. 43.

    Marc Duiker Durable Functions • Orchestration Functions can only call

    Activity Functions in the same Function App. • Keep your orchestrations small. • What changes together should be deployed together. Closing remarks II