Slide 1

Slide 1 text

@marcduiker

Slide 2

Slide 2 text

Marc Duiker Lead Azure Consultant @ Xpirit

Slide 3

Slide 3 text

@marcduiker Durable Functions

Slide 4

Slide 4 text

@marcduiker Durable Functions

Slide 5

Slide 5 text

@marcduiker Durable Functions

Slide 6

Slide 6 text

@marcduiker Durable Functions

Slide 7

Slide 7 text

@marcduiker Durable Functions

Slide 8

Slide 8 text

@marcduiker Durable Functions Multiple Functions & Control Flow

Slide 9

Slide 9 text

@marcduiker Durable Functions

Slide 10

Slide 10 text

@marcduiker Durable Functions

Slide 11

Slide 11 text

@marcduiker Durable Functions

Slide 12

Slide 12 text

@marcduiker Durable Functions

Slide 13

Slide 13 text

@marcduiker Durable Functions

Slide 14

Slide 14 text

@marcduiker Durable Functions

Slide 15

Slide 15 text

@marcduiker Durable Functions

Slide 16

Slide 16 text

@marcduiker Durable Functions Durable Functions is based on

Slide 17

Slide 17 text

@marcduiker Durable Functions Function Roles

Slide 18

Slide 18 text

@marcduiker Durable Functions Invocations, Checkpoints & Replay

Slide 19

Slide 19 text

@marcduiker Durable Functions State is Persisted in Table Storage

Slide 20

Slide 20 text

@marcduiker Durable Functions New Trigger Bindings [OrchestrationClient] DurableOrchestrationClient(Base) Function Role: Starter Function

Slide 21

Slide 21 text

@marcduiker Durable Functions DurableOrchestrationClient

Slide 22

Slide 22 text

@marcduiker Durable Functions New Trigger Bindings [OrchestrationTrigger] DurableOrchestrationContext(Base) Function Role: Orchestrator Function

Slide 23

Slide 23 text

@marcduiker Durable Functions DurableOrchestrationContext

Slide 24

Slide 24 text

@marcduiker Durable Functions New Trigger Bindings [ActivityTrigger] DurableActivityContext Function Role: Activity Function

Slide 25

Slide 25 text

@marcduiker Durable Functions DurableActivityContext

Slide 26

Slide 26 text

@marcduiker Durable Functions

Slide 27

Slide 27 text

@marcduiker Durable Functions • Visual Studio 2017 15.7+ • Azure Workload • Extension: Azure Functions & Web Jobs Tools • Azure Storage Emulator • Nuget packages • Microsoft.NET.Sdk.Functions (1.0.26) • Microsoft.Azure.Webjobs.Extensions.DurableTask (1.8.0) Local development with VS2017/2019

Slide 28

Slide 28 text

@marcduiker Durable Functions Hello {name} Demo! HttpStart HelloName Ochestrator {name} HelloName Activity {name}

Slide 29

Slide 29 text

@marcduiker Durable Functions

Slide 30

Slide 30 text

@marcduiker Durable Functions Function chaining

Slide 31

Slide 31 text

@marcduiker Durable Functions Demo: Function Chaining Find a Star Wars character and return it’s: - Full name - Home planet - Species name - Species home planet. https://swapi.co/

Slide 32

Slide 32 text

@marcduiker Durable Functions Demo: Function Chaining HttpStart GetCharacterInfo Orchestrator GetSpecies Activity GetPlanet Activity SearchCharacter Activity

Slide 33

Slide 33 text

@marcduiker Durable Functions

Slide 34

Slide 34 text

@marcduiker Durable Functions Fan-out/fan-in FA1 returns a collection of items FA2 is called for each of the items from FA1

Slide 35

Slide 35 text

@marcduiker Durable Functions Demo: Fan-out/Fan-in Find a Star Wars planet and their residents. https://swapi.co/

Slide 36

Slide 36 text

@marcduiker Durable Functions Demo: Fan-out/Fan-in HttpStart GetPlanetResidents Orchestrator GetCharacter Activity SearchPlanet Activity

Slide 37

Slide 37 text

@marcduiker Durable Functions

Slide 38

Slide 38 text

@marcduiker Durable Functions Unit Testing Demo Testing the GetPlanetResidents orchestrator using: • xUnit • Moq • AutoFixture

Slide 39

Slide 39 text

@marcduiker Durable Functions

Slide 40

Slide 40 text

@marcduiker Durable Functions • In and output of functions should be serializable. • Orchestration Functions should be deterministic. Don’t use: - DateTime.Now, use CurrentUtcDateTime - Guid.NewGuid() - Random generated data Closing remarks I

Slide 41

Slide 41 text

@marcduiker Durable Functions • Orchestrator 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

Slide 42

Slide 42 text

@marcduiker Durable Functions GitHub: demos-azure-durable-functions [email protected] blog.marcduiker.nl @marcduiker