Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Take your Azure Functions to the next level wit...

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

Marc Duiker

November 13, 2018
Tweet

More Decks by Marc Duiker

Other Decks in Programming

Transcript

  1. 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
  2. Marc Duiker Durable Functions Demo: Function Chaining Find a Star

    Wars character and their home planet. https://swapi.co/
  3. Marc Duiker Durable Functions Fan-out/fan-in FA1 returns a collection of

    items FA2 is called for each of the items from FA1
  4. Marc Duiker Durable Functions Demo: Fan-out/Fan-in Find a Star Wars

    planet and their residents. https://swapi.co/
  5. Marc Duiker Durable Functions Unit Testing Demo Testing the GetPlanetResidents

    orchestration using: • xUnit • Moq • AutoFixture • FluentAssertions
  6. 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 .
  7. 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
  8. 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