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

Take your Azure Functions to the next level with Durable Functions @ WAZUG 2018

Take your Azure Functions to the next level with Durable Functions @ WAZUG 2018

These are the slides for the Azure Durable Functions presentation I gave at the Azure User Group Netherlands (https://www.wazug.nl/) hosted by Xpirit.

Source code: https://github.com/marcduiker/demos-azure-durable-functions

Fd55de4174accaf3b4f030e43a8a70c6?s=128

Marc Duiker

November 01, 2018
Tweet

Transcript

  1. None
  2. Marc Duiker Lead Azure Consultant @ Xpirit

  3. Marc Duiker Durable Functions

  4. Marc Duiker Durable Functions

  5. Marc Duiker Durable Functions

  6. Marc Duiker Durable Functions

  7. Marc Duiker Durable Functions Multiple Functions & Control Flow

  8. Marc Duiker Durable Functions

  9. Marc Duiker Durable Functions

  10. Marc Duiker Durable Functions

  11. Marc Duiker Durable Functions

  12. Marc Duiker Durable Functions

  13. Marc Duiker Durable Functions

  14. Marc Duiker Durable Functions

  15. Marc Duiker Durable Functions Durable Functions is based on

  16. Marc Duiker Durable Functions Function Roles

  17. Marc Duiker Durable Functions Invocations, Checkpoints & Replay

  18. Marc Duiker Durable Functions Storage Types used by Durable Functions

  19. Marc Duiker Durable Functions State is Persisted in Table Storage

  20. Marc Duiker Durable Functions New Trigger Bindings [OrchestrationClient] DurableOrchestrationClient(Base) Function

    Role: Orchestration Starter
  21. Marc Duiker Durable Functions DurableOrchestrationClient

  22. Marc Duiker Durable Functions New Trigger Bindings [OrchestrationTrigger] DurableOrchestrationContext(Base) Function

    Role: Orchestration Function
  23. Marc Duiker Durable Functions DurableOrchestrationContext

  24. Marc Duiker Durable Functions New Trigger Bindings [ActivityTrigger] DurableActivityContext Function

    Role: Activity Function
  25. Marc Duiker Durable Functions DurableActivityContext

  26. Marc Duiker Durable Functions

  27. 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
  28. Marc Duiker Durable Functions Hello {name} Demo! HttpStart HelloName {name}

    HelloNameActivity {name}
  29. Marc Duiker Durable Functions

  30. Marc Duiker Durable Functions Function chaining

  31. Marc Duiker Durable Functions Demo: Function Chaining Find a Star

    Wars character and their home planet. https://swapi.co/
  32. Marc Duiker Durable Functions Demo: Function Chaining HttpStart GetCharacterInfo SearchCharacter

    GetPlanet
  33. Marc Duiker Durable Functions

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

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

    planet and their residents. https://swapi.co/
  36. Marc Duiker Durable Functions Demo: Fan-out/Fan-in HttpStart GetPlanetResidents SearchPlanet GetCharacter

  37. Marc Duiker Durable Functions

  38. Marc Duiker Durable Functions Unit Testing Demo Testing the GetPlanetResidents

    orchestration using: • xUnit • Moq • AutoFixture
  39. Marc Duiker Durable Functions Unit Testing • Use DurableOrchestrationContextBase in

    the orchestration. • Use serializable types with [ActivityTrigger] for the activity input (because DurableActivityContext can’t be instantiated/mocked due to internal constructor  ).
  40. Marc Duiker Durable Functions

  41. 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
  42. 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
  43. Marc Duiker Durable Functions GitHub: demos-azure-durable-functions mduiker@xpirit.com blog.marcduiker.nl @marcduiker