SlideShare a Scribd company logo
1 of 27
Download to read offline
info@minnosphere.comwww.minnosphere.com
Serverless Side-by-Side Extensions
with Azure Durable Functions
When stateful meets stateless
© minnosphere 2020 | Azure Durable Functions 2
About me
• Heading the Microsoft Azure team@minnosphere
• In the SAP ecosystem since 2005
• Kind of active in the community
• Focus Topics: Extensibility, Cloud Native Development, Serverless
• @lechnerc77
© minnosphere 2020 | Azure Durable Functions 3
Why should we care about Microsoft at all?
Lift
Enabling Data First Execution
Reshape
Enhancing Processes with
Intelligence and Automation
Create
Creating Experiences with New
Business Models
© minnosphere 2020 | Azure Durable Functions 4
Scenario – Serverless Extension of SAP
https://blogs.sap.com/2019/12/09/a-serverless-extension-story-from-abap-to-azure/
© minnosphere 2020 | Azure Durable Functions 5
Azure Functions 101
© minnosphere 2020 | Azure Durable Functions 6
Principles and Best Practices
Serverless is great … but Functions as a Service come with “drawbacks”
• Functions must be stateless
• Functions must not call other functions
• Functions should do only one thing
© minnosphere 2020 | Azure Durable Functions 7
How do we model “workflows” in a FaaS world?
© minnosphere 2020 | Azure Durable Functions 8
Function Chaining to achieve State
Function 1 Function 2 Function 3
Problems
• Unclear relation between functions
• Queues are a necessary evil
• Context must be stored in a DB
• Error handling becomes very complex
© minnosphere 2020 | Azure Durable Functions 9
Durable Functions for the Rescue
• Extension to the Azure Functions Framework
• Preserves local state via Event Sourcing
• Heavy work happens behind the curtain
• Supports you in front of the curtain with additional features
© minnosphere 2020 | Azure Durable Functions 10
How does this work?
Tasks in orchestrator
1. let x = await ctx.CallActivityAsync(“F1”)
2. let y = await ctx.CallActivityAsync(“F2”, x)
3. return await ctx.CallActivityAsync(“F3”, y)
© minnosphere 2020 | Azure Durable Functions 11
How does this work?
Trigger
Orchestrator
Activity
Tasks in orchestrator
1. let x = await ctx.CallActivityAsync(“F1”)
2. let y = await ctx.CallActivityAsync(“F2”, x)
3. return await ctx.CallActivityAsync(“F3”, y)
© minnosphere 2020 | Azure Durable Functions 12
Step 1 - Trigger
Trigger
Orchestrator
Activity
Tasks in orchestrator
1. let x = await ctx.CallActivityAsync(“F1”)
2. let y = await ctx.CallActivityAsync(“F2”, x)
3. return await ctx.CallActivityAsync(“F3”, y)
© minnosphere 2020 | Azure Durable Functions 13
Step 2 – Orchestrator fetches event & schedules task for F1
Trigger
Orchestrator
Activity
Tasks in orchestrator
1. let x = await ctx.CallActivityAsync(“F1”)
2. let y = await ctx.CallActivityAsync(“F2”, x)
3. return await ctx.CallActivityAsync(“F3”, y)
© minnosphere 2020 | Azure Durable Functions 14
Step 3 – F1 executes task & returns result
Trigger
Orchestrator
Activity
Tasks in orchestrator
1. let x = await ctx.CallActivityAsync(“F1”)
2. let y = await ctx.CallActivityAsync(“F2”, x)
3. return await ctx.CallActivityAsync(“F3”, y)
© minnosphere 2020 | Azure Durable Functions 15
Step 4a – Orchestrator updates Event History
Trigger
Orchestrator
Activity
Tasks in orchestrator
1. let x = await ctx.CallActivityAsync(“F1”)
2. let y = await ctx.CallActivityAsync(“F2”, x)
3. return await ctx.CallActivityAsync(“F3”, y)
© minnosphere 2020 | Azure Durable Functions 16
Step 4b – Orchestrator schedules next task Event History
Trigger
Orchestrator
Activity
Tasks in orchestrator
1. let x = await ctx.CallActivityAsync(“F1”)
2. let y = await ctx.CallActivityAsync(“F2”, x)
3. return await ctx.CallActivityAsync(“F3”, y)
© minnosphere 2020 | Azure Durable Functions 17
Step 4b – Orchestrator schedules next task Event History
Trigger
Orchestrator
Activity
Tasks in orchestrator
1. let x = await ctx.CallActivityAsync(“F1”)
2. let y = await ctx.CallActivityAsync(“F2”, x)
3. return await ctx.CallActivityAsync(“F3”, y)
© minnosphere 2020 | Azure Durable Functions 18
Summing up: Durable Functions are like …
© minnosphere 2020 | Azure Durable Functions 19
Let’s get local
• Azure Functions Runtime
(https://docs.microsoft.com/en-US/azure/azure-functions/functions-run-local?tabs=windows)
• Azure Durable Functions Extension
(npm install durable-functions)
• Microsoft SQL Server Express
(https://www.microsoft.com/de-de/sql-server/sql-server-downloads)
• Microsoft Azure Storage Emulator
(https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/storage/common/storage-use-
emulator.md)
• Optional: Microsoft Azure Storage Explorer
(https://azure.microsoft.com/en-us/features/storage-explorer/)
Walkthrough: https://youtu.be/HdhPC_K6cLo
© minnosphere 2020 | Azure Durable Functions 20
Challenge 1 – Decompose Single Function into Orchestrator and Activities
SAP Cloud Applications
Current State
Activity
2x
Target State
Orchestrator
Activity 1 Activity 2
SAP Cloud Applications
© minnosphere 2020 | Azure Durable Functions 21
Challenge 2 – Handle Errors in Activity Calls (Retry)
Orchestrator
Activity 1 Activity 2
SAP Cloud Applications
© minnosphere 2020 | Azure Durable Functions 22
Challenge 3 – Handle Timeouts in Activity Calls
Orchestrator
Activity 1 Activity 2
SAP Cloud Applications
Race Condition
Orchestrator 3
Activity 1 Activity 2
SAP Cloud Applications
© minnosphere 2020 | Azure Durable Functions 23
Challenge 4 – Scale Out … Do we have an external State?
Orchestrator 2
Activity 1 Activity 2
SAP Cloud Applications
Orchestrator 1
Activity 1 Activity 2
SAP Cloud Applications
Circuit Breaker
© minnosphere 2020 | Azure Durable Functions 24
Summary - Durable Functions
• … are a great AddOn to Azure Functions
• … allow the modelling of complex scenarios without losing the benefits of FaaS
• … manage state for you
• … low entry barrier due to support of local development
• … open up new options in the context of side-by-side extensibility
Thank you for your attention
© minnosphere 2020 | Azure Durable Functions25
minnosphere GmbH
Robert-Buerkle-Str. 1,
85737 Ismaning/Munich
Germany
www.minnosphere.com
Dr. Christian Lechner
christian.lechner@minnosphere.com
© minnosphere 2020 | Azure Durable Functions 27
Additional Resources
SAP Embrace – my 5 cent
• https://blogs.sap.com/2020/01/29/my-thoughts-on-sap-embrace-part-1/
• https://blogs.sap.com/2020/01/29/my-thoughts-on-sap-embrace-part-2/
Serverless Extensions with Microsoft Azure
• https://blogs.sap.com/2019/12/09/a-serverless-extension-story-from-abap-to-azure/
• https://blogs.sap.com/2020/02/17/a-serverless-extension-story-ii-bringing-state-to-the-stateless/
GitHub Repo
• https://github.com/lechnerc77/AzureFuncPurchaseOrderCheckDemo
Walk Through Local Development with Azure Durable Functions:
• https://youtu.be/HdhPC_K6cLo

More Related Content

What's hot

Streamline business worksflows with azure durable functiox
Streamline business worksflows with azure durable functioxStreamline business worksflows with azure durable functiox
Streamline business worksflows with azure durable functioxSammani Palansuriya
 
Meet the FME Product Managers and Take Your Data to New Heights
Meet the FME Product Managers and Take Your Data to New HeightsMeet the FME Product Managers and Take Your Data to New Heights
Meet the FME Product Managers and Take Your Data to New HeightsSafe Software
 
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CodeOps Technologies LLP
 
Choosing the right messaging service for your serverless app [with lumigo]
Choosing the right messaging service for your serverless app [with lumigo]Choosing the right messaging service for your serverless app [with lumigo]
Choosing the right messaging service for your serverless app [with lumigo]Dhaval Nagar
 
Building a REST API Interface With FME
Building a REST API Interface With FMEBuilding a REST API Interface With FME
Building a REST API Interface With FMESafe Software
 
Blazing new trails with salesforce data nov 16, 2021
Blazing new trails with salesforce data   nov 16, 2021Blazing new trails with salesforce data   nov 16, 2021
Blazing new trails with salesforce data nov 16, 2021Safe Software
 
Automate all your EMR related activities
Automate all your EMR related activitiesAutomate all your EMR related activities
Automate all your EMR related activitiesEitan Sela
 
5 b2 b ecommerce trends vanuit het sana product team en de ontwikkeling van h...
5 b2 b ecommerce trends vanuit het sana product team en de ontwikkeling van h...5 b2 b ecommerce trends vanuit het sana product team en de ontwikkeling van h...
5 b2 b ecommerce trends vanuit het sana product team en de ontwikkeling van h...Sana Commerce
 
Thinking Asynchronously Full Vesion - Utah UG
Thinking Asynchronously Full Vesion - Utah UGThinking Asynchronously Full Vesion - Utah UG
Thinking Asynchronously Full Vesion - Utah UGEric Johnson
 
CICD in the World of Serverless
CICD in the World of ServerlessCICD in the World of Serverless
CICD in the World of ServerlessSrushith Repakula
 
How we use the play framework
How we use the play frameworkHow we use the play framework
How we use the play frameworkItai Gilo
 
How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...
How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...
How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...UK DevOps Collective
 
Serhat Can- 4 keytakeaways from running serverless on production for 4 years
Serhat Can-  4 keytakeaways from running serverless on production for 4 yearsSerhat Can-  4 keytakeaways from running serverless on production for 4 years
Serhat Can- 4 keytakeaways from running serverless on production for 4 yearsAWSCOMSUM
 
Configuring SQL Server Reporting Services for ASP.NET Running on Azure Web Role
Configuring SQL Server Reporting Services for ASP.NET Running on Azure Web RoleConfiguring SQL Server Reporting Services for ASP.NET Running on Azure Web Role
Configuring SQL Server Reporting Services for ASP.NET Running on Azure Web RoleAllan Mangune
 
Innovation in the Cloud - Rackspace Zurich Event
Innovation in the Cloud - Rackspace Zurich EventInnovation in the Cloud - Rackspace Zurich Event
Innovation in the Cloud - Rackspace Zurich EventMarc Cluet
 
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!Rencore
 

What's hot (19)

Streamline business worksflows with azure durable functiox
Streamline business worksflows with azure durable functioxStreamline business worksflows with azure durable functiox
Streamline business worksflows with azure durable functiox
 
Meet the FME Product Managers and Take Your Data to New Heights
Meet the FME Product Managers and Take Your Data to New HeightsMeet the FME Product Managers and Take Your Data to New Heights
Meet the FME Product Managers and Take Your Data to New Heights
 
Tracing Java Applications on Azure
Tracing Java Applications on AzureTracing Java Applications on Azure
Tracing Java Applications on Azure
 
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
 
Getting started with Scrum - in plain English
Getting started with Scrum - in plain EnglishGetting started with Scrum - in plain English
Getting started with Scrum - in plain English
 
Choosing the right messaging service for your serverless app [with lumigo]
Choosing the right messaging service for your serverless app [with lumigo]Choosing the right messaging service for your serverless app [with lumigo]
Choosing the right messaging service for your serverless app [with lumigo]
 
Building a REST API Interface With FME
Building a REST API Interface With FMEBuilding a REST API Interface With FME
Building a REST API Interface With FME
 
Blazing new trails with salesforce data nov 16, 2021
Blazing new trails with salesforce data   nov 16, 2021Blazing new trails with salesforce data   nov 16, 2021
Blazing new trails with salesforce data nov 16, 2021
 
Automate all your EMR related activities
Automate all your EMR related activitiesAutomate all your EMR related activities
Automate all your EMR related activities
 
5 b2 b ecommerce trends vanuit het sana product team en de ontwikkeling van h...
5 b2 b ecommerce trends vanuit het sana product team en de ontwikkeling van h...5 b2 b ecommerce trends vanuit het sana product team en de ontwikkeling van h...
5 b2 b ecommerce trends vanuit het sana product team en de ontwikkeling van h...
 
Thinking Asynchronously Full Vesion - Utah UG
Thinking Asynchronously Full Vesion - Utah UGThinking Asynchronously Full Vesion - Utah UG
Thinking Asynchronously Full Vesion - Utah UG
 
CICD in the World of Serverless
CICD in the World of ServerlessCICD in the World of Serverless
CICD in the World of Serverless
 
How we use the play framework
How we use the play frameworkHow we use the play framework
How we use the play framework
 
Effect of Batch Size on Work Flow
Effect of Batch Size on Work FlowEffect of Batch Size on Work Flow
Effect of Batch Size on Work Flow
 
How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...
How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...
How and why test Azure Front Door with AWS Lambda & PowerShell? | Osman Sahin...
 
Serhat Can- 4 keytakeaways from running serverless on production for 4 years
Serhat Can-  4 keytakeaways from running serverless on production for 4 yearsSerhat Can-  4 keytakeaways from running serverless on production for 4 years
Serhat Can- 4 keytakeaways from running serverless on production for 4 years
 
Configuring SQL Server Reporting Services for ASP.NET Running on Azure Web Role
Configuring SQL Server Reporting Services for ASP.NET Running on Azure Web RoleConfiguring SQL Server Reporting Services for ASP.NET Running on Azure Web Role
Configuring SQL Server Reporting Services for ASP.NET Running on Azure Web Role
 
Innovation in the Cloud - Rackspace Zurich Event
Innovation in the Cloud - Rackspace Zurich EventInnovation in the Cloud - Rackspace Zurich Event
Innovation in the Cloud - Rackspace Zurich Event
 
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
 

Similar to [SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - When stateful meets stateless

Serverless side by-side extensions with Azure Durable Functions
Serverless side by-side extensions with Azure Durable FunctionsServerless side by-side extensions with Azure Durable Functions
Serverless side by-side extensions with Azure Durable FunctionsChristian Lechner
 
FaaS by Microsoft: Azure Functions and Azure Durable Functions
FaaS by Microsoft: Azure Functions and Azure Durable FunctionsFaaS by Microsoft: Azure Functions and Azure Durable Functions
FaaS by Microsoft: Azure Functions and Azure Durable FunctionsChristian Lechner
 
Building workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration MondayBuilding workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration MondayBizTalk360
 
Building stateful serverless orchestrations with Azure Durable Azure Function...
Building stateful serverless orchestrations with Azure Durable Azure Function...Building stateful serverless orchestrations with Azure Durable Azure Function...
Building stateful serverless orchestrations with Azure Durable Azure Function...Callon Campbell
 
Develop in ludicrous mode with azure serverless
Develop in ludicrous mode with azure serverlessDevelop in ludicrous mode with azure serverless
Develop in ludicrous mode with azure serverlessLalit Kale
 
Getting started with Azure Functions in Isolated Mode
Getting started with Azure Functions in Isolated ModeGetting started with Azure Functions in Isolated Mode
Getting started with Azure Functions in Isolated ModeCallon Campbell
 
Serverless Orchestration with Azure Durable Functions
Serverless Orchestration with Azure Durable FunctionsServerless Orchestration with Azure Durable Functions
Serverless Orchestration with Azure Durable FunctionsCallon Campbell
 
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...Pierre GRANDIN
 
Azure functions: Build apps faster with serverless architecture (March 2018)
Azure functions: Build apps faster with serverless architecture (March 2018)Azure functions: Build apps faster with serverless architecture (March 2018)
Azure functions: Build apps faster with serverless architecture (March 2018)Callon Campbell
 
Build mobile back-end (Restful API) by using Microsoft Azure Functions
Build mobile back-end (Restful API) by using Microsoft Azure FunctionsBuild mobile back-end (Restful API) by using Microsoft Azure Functions
Build mobile back-end (Restful API) by using Microsoft Azure FunctionsSuki Huang
 
Serverless Development with Azure Durable Functions in .Net by Jonah Andersson
Serverless Development with Azure Durable Functions in .Net by Jonah AnderssonServerless Development with Azure Durable Functions in .Net by Jonah Andersson
Serverless Development with Azure Durable Functions in .Net by Jonah AnderssonJonah Andersson
 
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...Lightbend
 
Operational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU SeminarOperational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU SeminarCanturk Isci
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure FunctionsMassimo Bonanni
 
vRO Training Document
vRO Training DocumentvRO Training Document
vRO Training DocumentMayank Goyal
 
Serverless Application Development with Azure
Serverless Application Development with AzureServerless Application Development with Azure
Serverless Application Development with AzureCallon Campbell
 
Unleash the power of Serverless Computing
Unleash the power of Serverless ComputingUnleash the power of Serverless Computing
Unleash the power of Serverless ComputingGaurav Madaan
 

Similar to [SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - When stateful meets stateless (20)

Serverless side by-side extensions with Azure Durable Functions
Serverless side by-side extensions with Azure Durable FunctionsServerless side by-side extensions with Azure Durable Functions
Serverless side by-side extensions with Azure Durable Functions
 
FaaS by Microsoft: Azure Functions and Azure Durable Functions
FaaS by Microsoft: Azure Functions and Azure Durable FunctionsFaaS by Microsoft: Azure Functions and Azure Durable Functions
FaaS by Microsoft: Azure Functions and Azure Durable Functions
 
Building workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration MondayBuilding workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration Monday
 
Building stateful serverless orchestrations with Azure Durable Azure Function...
Building stateful serverless orchestrations with Azure Durable Azure Function...Building stateful serverless orchestrations with Azure Durable Azure Function...
Building stateful serverless orchestrations with Azure Durable Azure Function...
 
Develop in ludicrous mode with azure serverless
Develop in ludicrous mode with azure serverlessDevelop in ludicrous mode with azure serverless
Develop in ludicrous mode with azure serverless
 
Getting started with Azure Functions in Isolated Mode
Getting started with Azure Functions in Isolated ModeGetting started with Azure Functions in Isolated Mode
Getting started with Azure Functions in Isolated Mode
 
Serverless Orchestration with Azure Durable Functions
Serverless Orchestration with Azure Durable FunctionsServerless Orchestration with Azure Durable Functions
Serverless Orchestration with Azure Durable Functions
 
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
 
Azure functions: Build apps faster with serverless architecture (March 2018)
Azure functions: Build apps faster with serverless architecture (March 2018)Azure functions: Build apps faster with serverless architecture (March 2018)
Azure functions: Build apps faster with serverless architecture (March 2018)
 
Build mobile back-end (Restful API) by using Microsoft Azure Functions
Build mobile back-end (Restful API) by using Microsoft Azure FunctionsBuild mobile back-end (Restful API) by using Microsoft Azure Functions
Build mobile back-end (Restful API) by using Microsoft Azure Functions
 
Serverless Development with Azure Durable Functions in .Net by Jonah Andersson
Serverless Development with Azure Durable Functions in .Net by Jonah AnderssonServerless Development with Azure Durable Functions in .Net by Jonah Andersson
Serverless Development with Azure Durable Functions in .Net by Jonah Andersson
 
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONSSERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
 
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
 
Durable functions
Durable functionsDurable functions
Durable functions
 
Operational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU SeminarOperational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU Seminar
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure Functions
 
Chinnasamy Manickam
Chinnasamy ManickamChinnasamy Manickam
Chinnasamy Manickam
 
vRO Training Document
vRO Training DocumentvRO Training Document
vRO Training Document
 
Serverless Application Development with Azure
Serverless Application Development with AzureServerless Application Development with Azure
Serverless Application Development with Azure
 
Unleash the power of Serverless Computing
Unleash the power of Serverless ComputingUnleash the power of Serverless Computing
Unleash the power of Serverless Computing
 

More from Christian Lechner

SAP Embrace - A Look behind the curtains (by minnosphere)
SAP Embrace - A Look behind the curtains (by minnosphere)SAP Embrace - A Look behind the curtains (by minnosphere)
SAP Embrace - A Look behind the curtains (by minnosphere)Christian Lechner
 
SAP Inside Track Hamburg 2019 - Side-by-Side Extensibility with Microsoft Azure
SAP Inside Track Hamburg 2019 - Side-by-Side Extensibility with Microsoft Azure SAP Inside Track Hamburg 2019 - Side-by-Side Extensibility with Microsoft Azure
SAP Inside Track Hamburg 2019 - Side-by-Side Extensibility with Microsoft Azure Christian Lechner
 
Side-by-Side Extensibility with Microsoft Azure
Side-by-Side Extensibility with Microsoft AzureSide-by-Side Extensibility with Microsoft Azure
Side-by-Side Extensibility with Microsoft AzureChristian Lechner
 
SAP Inside Track 2018 - "Quidquid agis, prudenter agas ..." - Learnings from ...
SAP Inside Track 2018 - "Quidquid agis, prudenter agas ..." - Learnings from ...SAP Inside Track 2018 - "Quidquid agis, prudenter agas ..." - Learnings from ...
SAP Inside Track 2018 - "Quidquid agis, prudenter agas ..." - Learnings from ...Christian Lechner
 
NET53494 Extensions in the Age of S/4HANA
NET53494  Extensions in the Age of S/4HANANET53494  Extensions in the Age of S/4HANA
NET53494 Extensions in the Age of S/4HANAChristian Lechner
 
ABAP Development in time of S/4 - Do's and Don'ts and Golden Rules for Simpli...
ABAP Development in time of S/4 - Do's and Don'ts and Golden Rules for Simpli...ABAP Development in time of S/4 - Do's and Don'ts and Golden Rules for Simpli...
ABAP Development in time of S/4 - Do's and Don'ts and Golden Rules for Simpli...Christian Lechner
 
SAP Inside Track Munich 2016 - SAP HANA Cloud Platform
SAP Inside Track Munich 2016 - SAP HANA Cloud Platform SAP Inside Track Munich 2016 - SAP HANA Cloud Platform
SAP Inside Track Munich 2016 - SAP HANA Cloud Platform Christian Lechner
 

More from Christian Lechner (9)

SAP Embrace - A Look behind the curtains (by minnosphere)
SAP Embrace - A Look behind the curtains (by minnosphere)SAP Embrace - A Look behind the curtains (by minnosphere)
SAP Embrace - A Look behind the curtains (by minnosphere)
 
SAP Inside Track Hamburg 2019 - Side-by-Side Extensibility with Microsoft Azure
SAP Inside Track Hamburg 2019 - Side-by-Side Extensibility with Microsoft Azure SAP Inside Track Hamburg 2019 - Side-by-Side Extensibility with Microsoft Azure
SAP Inside Track Hamburg 2019 - Side-by-Side Extensibility with Microsoft Azure
 
Side-by-Side Extensibility with Microsoft Azure
Side-by-Side Extensibility with Microsoft AzureSide-by-Side Extensibility with Microsoft Azure
Side-by-Side Extensibility with Microsoft Azure
 
SAP Inside Track 2018 - "Quidquid agis, prudenter agas ..." - Learnings from ...
SAP Inside Track 2018 - "Quidquid agis, prudenter agas ..." - Learnings from ...SAP Inside Track 2018 - "Quidquid agis, prudenter agas ..." - Learnings from ...
SAP Inside Track 2018 - "Quidquid agis, prudenter agas ..." - Learnings from ...
 
NET53494 Extensions in the Age of S/4HANA
NET53494  Extensions in the Age of S/4HANANET53494  Extensions in the Age of S/4HANA
NET53494 Extensions in the Age of S/4HANA
 
ABAP Development in time of S/4 - Do's and Don'ts and Golden Rules for Simpli...
ABAP Development in time of S/4 - Do's and Don'ts and Golden Rules for Simpli...ABAP Development in time of S/4 - Do's and Don'ts and Golden Rules for Simpli...
ABAP Development in time of S/4 - Do's and Don'ts and Golden Rules for Simpli...
 
SAP Inside Track Munich 2016 - SAP HANA Cloud Platform
SAP Inside Track Munich 2016 - SAP HANA Cloud Platform SAP Inside Track Munich 2016 - SAP HANA Cloud Platform
SAP Inside Track Munich 2016 - SAP HANA Cloud Platform
 
Text Analysis with SAP HANA
Text Analysis with SAP HANAText Analysis with SAP HANA
Text Analysis with SAP HANA
 
sitFRA_ BRFplus_TheAPIWay
sitFRA_ BRFplus_TheAPIWaysitFRA_ BRFplus_TheAPIWay
sitFRA_ BRFplus_TheAPIWay
 

Recently uploaded

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutionsmonugehlot87
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 

Recently uploaded (20)

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutions
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 

[SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - When stateful meets stateless

  • 1. info@minnosphere.comwww.minnosphere.com Serverless Side-by-Side Extensions with Azure Durable Functions When stateful meets stateless
  • 2. © minnosphere 2020 | Azure Durable Functions 2 About me • Heading the Microsoft Azure team@minnosphere • In the SAP ecosystem since 2005 • Kind of active in the community • Focus Topics: Extensibility, Cloud Native Development, Serverless • @lechnerc77
  • 3. © minnosphere 2020 | Azure Durable Functions 3 Why should we care about Microsoft at all? Lift Enabling Data First Execution Reshape Enhancing Processes with Intelligence and Automation Create Creating Experiences with New Business Models
  • 4. © minnosphere 2020 | Azure Durable Functions 4 Scenario – Serverless Extension of SAP https://blogs.sap.com/2019/12/09/a-serverless-extension-story-from-abap-to-azure/
  • 5. © minnosphere 2020 | Azure Durable Functions 5 Azure Functions 101
  • 6. © minnosphere 2020 | Azure Durable Functions 6 Principles and Best Practices Serverless is great … but Functions as a Service come with “drawbacks” • Functions must be stateless • Functions must not call other functions • Functions should do only one thing
  • 7. © minnosphere 2020 | Azure Durable Functions 7 How do we model “workflows” in a FaaS world?
  • 8. © minnosphere 2020 | Azure Durable Functions 8 Function Chaining to achieve State Function 1 Function 2 Function 3 Problems • Unclear relation between functions • Queues are a necessary evil • Context must be stored in a DB • Error handling becomes very complex
  • 9. © minnosphere 2020 | Azure Durable Functions 9 Durable Functions for the Rescue • Extension to the Azure Functions Framework • Preserves local state via Event Sourcing • Heavy work happens behind the curtain • Supports you in front of the curtain with additional features
  • 10. © minnosphere 2020 | Azure Durable Functions 10 How does this work? Tasks in orchestrator 1. let x = await ctx.CallActivityAsync(“F1”) 2. let y = await ctx.CallActivityAsync(“F2”, x) 3. return await ctx.CallActivityAsync(“F3”, y)
  • 11. © minnosphere 2020 | Azure Durable Functions 11 How does this work? Trigger Orchestrator Activity Tasks in orchestrator 1. let x = await ctx.CallActivityAsync(“F1”) 2. let y = await ctx.CallActivityAsync(“F2”, x) 3. return await ctx.CallActivityAsync(“F3”, y)
  • 12. © minnosphere 2020 | Azure Durable Functions 12 Step 1 - Trigger Trigger Orchestrator Activity Tasks in orchestrator 1. let x = await ctx.CallActivityAsync(“F1”) 2. let y = await ctx.CallActivityAsync(“F2”, x) 3. return await ctx.CallActivityAsync(“F3”, y)
  • 13. © minnosphere 2020 | Azure Durable Functions 13 Step 2 – Orchestrator fetches event & schedules task for F1 Trigger Orchestrator Activity Tasks in orchestrator 1. let x = await ctx.CallActivityAsync(“F1”) 2. let y = await ctx.CallActivityAsync(“F2”, x) 3. return await ctx.CallActivityAsync(“F3”, y)
  • 14. © minnosphere 2020 | Azure Durable Functions 14 Step 3 – F1 executes task & returns result Trigger Orchestrator Activity Tasks in orchestrator 1. let x = await ctx.CallActivityAsync(“F1”) 2. let y = await ctx.CallActivityAsync(“F2”, x) 3. return await ctx.CallActivityAsync(“F3”, y)
  • 15. © minnosphere 2020 | Azure Durable Functions 15 Step 4a – Orchestrator updates Event History Trigger Orchestrator Activity Tasks in orchestrator 1. let x = await ctx.CallActivityAsync(“F1”) 2. let y = await ctx.CallActivityAsync(“F2”, x) 3. return await ctx.CallActivityAsync(“F3”, y)
  • 16. © minnosphere 2020 | Azure Durable Functions 16 Step 4b – Orchestrator schedules next task Event History Trigger Orchestrator Activity Tasks in orchestrator 1. let x = await ctx.CallActivityAsync(“F1”) 2. let y = await ctx.CallActivityAsync(“F2”, x) 3. return await ctx.CallActivityAsync(“F3”, y)
  • 17. © minnosphere 2020 | Azure Durable Functions 17 Step 4b – Orchestrator schedules next task Event History Trigger Orchestrator Activity Tasks in orchestrator 1. let x = await ctx.CallActivityAsync(“F1”) 2. let y = await ctx.CallActivityAsync(“F2”, x) 3. return await ctx.CallActivityAsync(“F3”, y)
  • 18. © minnosphere 2020 | Azure Durable Functions 18 Summing up: Durable Functions are like …
  • 19. © minnosphere 2020 | Azure Durable Functions 19 Let’s get local • Azure Functions Runtime (https://docs.microsoft.com/en-US/azure/azure-functions/functions-run-local?tabs=windows) • Azure Durable Functions Extension (npm install durable-functions) • Microsoft SQL Server Express (https://www.microsoft.com/de-de/sql-server/sql-server-downloads) • Microsoft Azure Storage Emulator (https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/storage/common/storage-use- emulator.md) • Optional: Microsoft Azure Storage Explorer (https://azure.microsoft.com/en-us/features/storage-explorer/) Walkthrough: https://youtu.be/HdhPC_K6cLo
  • 20. © minnosphere 2020 | Azure Durable Functions 20 Challenge 1 – Decompose Single Function into Orchestrator and Activities SAP Cloud Applications Current State Activity 2x Target State Orchestrator Activity 1 Activity 2 SAP Cloud Applications
  • 21. © minnosphere 2020 | Azure Durable Functions 21 Challenge 2 – Handle Errors in Activity Calls (Retry) Orchestrator Activity 1 Activity 2 SAP Cloud Applications
  • 22. © minnosphere 2020 | Azure Durable Functions 22 Challenge 3 – Handle Timeouts in Activity Calls Orchestrator Activity 1 Activity 2 SAP Cloud Applications Race Condition
  • 23. Orchestrator 3 Activity 1 Activity 2 SAP Cloud Applications © minnosphere 2020 | Azure Durable Functions 23 Challenge 4 – Scale Out … Do we have an external State? Orchestrator 2 Activity 1 Activity 2 SAP Cloud Applications Orchestrator 1 Activity 1 Activity 2 SAP Cloud Applications Circuit Breaker
  • 24. © minnosphere 2020 | Azure Durable Functions 24 Summary - Durable Functions • … are a great AddOn to Azure Functions • … allow the modelling of complex scenarios without losing the benefits of FaaS • … manage state for you • … low entry barrier due to support of local development • … open up new options in the context of side-by-side extensibility
  • 25. Thank you for your attention © minnosphere 2020 | Azure Durable Functions25
  • 26. minnosphere GmbH Robert-Buerkle-Str. 1, 85737 Ismaning/Munich Germany www.minnosphere.com Dr. Christian Lechner christian.lechner@minnosphere.com
  • 27. © minnosphere 2020 | Azure Durable Functions 27 Additional Resources SAP Embrace – my 5 cent • https://blogs.sap.com/2020/01/29/my-thoughts-on-sap-embrace-part-1/ • https://blogs.sap.com/2020/01/29/my-thoughts-on-sap-embrace-part-2/ Serverless Extensions with Microsoft Azure • https://blogs.sap.com/2019/12/09/a-serverless-extension-story-from-abap-to-azure/ • https://blogs.sap.com/2020/02/17/a-serverless-extension-story-ii-bringing-state-to-the-stateless/ GitHub Repo • https://github.com/lechnerc77/AzureFuncPurchaseOrderCheckDemo Walk Through Local Development with Azure Durable Functions: • https://youtu.be/HdhPC_K6cLo