Marc Duiker
Durable Functions
• Shift to Serverless
• What are orchestrations?
• Why do we need them?
• What is Durable Functions?
• Local development
• Demos
• Hello World / Hello Name
• Function chaining
• Fan-out/Fan-in
• Unit Testing
Slide 4
Slide 4 text
Marc Duiker
Durable Functions
Slide 5
Slide 5 text
Marc Duiker
Durable Functions
IaaS PaaS SaaS
FaaS
+ Less maintenance
+ Pay as you go
+ More fine grained scalability
- Less control
- More moving parts
Slide 6
Slide 6 text
Marc Duiker
Durable Functions
Slide 7
Slide 7 text
Marc Duiker
Durable Functions
Control flow
Slide 8
Slide 8 text
Marc Duiker
Durable Functions
Slide 9
Slide 9 text
Marc Duiker
Durable Functions
Orchestration?
Orchestration is the automated arrangement, coordination, and
management of computer systems, middleware, and services.
Slide 10
Slide 10 text
Marc Duiker
Durable Functions
Slide 11
Slide 11 text
Marc Duiker
Durable Functions
Slide 12
Slide 12 text
Marc Duiker
Durable Functions
Slide 13
Slide 13 text
Marc Duiker
Durable Functions
Slide 14
Slide 14 text
Marc Duiker
Durable Functions
Slide 15
Slide 15 text
Marc Duiker
Durable Functions
Slide 16
Slide 16 text
Marc Duiker
Durable Functions
Slide 17
Slide 17 text
Marc Duiker
Durable Functions
Durable Functions is based on
Slide 18
Slide 18 text
Marc Duiker
Durable Functions
Function Roles
Slide 19
Slide 19 text
Marc Duiker
Durable Functions
New Trigger Bindings
[OrchestrationClient] DurableOrchestrationClient
Function Role: Orchestration Starter
Slide 20
Slide 20 text
Marc Duiker
Durable Functions
DurableOrchestrationClient
Slide 21
Slide 21 text
Marc Duiker
Durable Functions
New Trigger Bindings
[OrchestrationTrigger] DurableOrchestrationContext
Function Role: Orchestration Function
Slide 22
Slide 22 text
Marc Duiker
Durable Functions
DurableOrchestrationContext
Slide 23
Slide 23 text
Marc Duiker
Durable Functions
New Trigger Bindings
[ActivityTrigger] DurableActivityContext
Function Role: Activity Function
Slide 24
Slide 24 text
Marc Duiker
Durable Functions
DurableActivityContext
Slide 25
Slide 25 text
Marc Duiker
Durable Functions
Invocations, Checkpoints & Replay
Function invocation Execution history
Slide 26
Slide 26 text
Marc Duiker
Durable Functions
Storage Types used by Durable Functions
Slide 27
Slide 27 text
Marc Duiker
Durable Functions
State is Persisted in Table Storage
Slide 28
Slide 28 text
Marc Duiker
Durable Functions
Considerations when using Durable Functions
- In and output of functions should be serializable.
- Orchestration Functions should be deterministic:
- DateTime.Now, use CurrentUtcDateTime
- Guid.NewGuid()
- Random generated data
Slide 29
Slide 29 text
Marc Duiker
Durable Functions
Slide 30
Slide 30 text
Marc Duiker
Durable Functions
Visual Studio 2017 15.7+
- “Azure development tools” workload
- Extension: Azure Functions & Web Jobs Tools
- Azure Storage Emulator
- Azure Storage Explorer
Local development
Slide 31
Slide 31 text
Marc Duiker
Durable Functions
Hello World Demo!
HelloWorld HelloWorldActivity
HttpStart
Marc Duiker
Durable Functions
Demo: Function Chaining
Find a Star Wars character and their home planet.
https://swapi.co/
Slide 36
Slide 36 text
Marc Duiker
Durable Functions
Demo: Function Chaining
HttpStart GetSwCharacterInfo SearchCharacter GetPlanet
Slide 37
Slide 37 text
Marc Duiker
Durable Functions
Slide 38
Slide 38 text
Marc Duiker
Durable Functions
Fan-out/fan-in
FA1
returns a collection of items
FA2
is called for each of the items from FA1
Slide 39
Slide 39 text
Marc Duiker
Durable Functions
Demo: Fan-out/Fan-in
Find a Star Wars planet and their residents.
https://swapi.co/
Slide 40
Slide 40 text
Marc Duiker
Durable Functions
Demo: Fan-out/Fan-in
HttpStart GetSwPlanetResidents SearchPlanet GetCharacter
Slide 41
Slide 41 text
Marc Duiker
Durable Functions
Slide 42
Slide 42 text
Marc Duiker
Durable Functions
Unit Testing Demo
Testing the GetSwPlanetAndResidentials orchestration using:
• xUnit
• Moq
• AutoFixture
Slide 43
Slide 43 text
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 ).
Slide 44
Slide 44 text
Marc Duiker
Durable Functions
Slide 45
Slide 45 text
Marc Duiker
Durable Functions
• Orchestration Functions can only call Activity Functions in the
same Function App.
• Keep your orchestration small.
• What changes together should be deployed together.
Closing remarks
Slide 46
Slide 46 text
Marc Duiker
Durable Functions
GitHub: demos-azure-durable-functions
blog.marcduiker.nl
@marcduiker