SlideShare a Scribd company logo
1 of 28
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
• Spokesman of the Special Interest Group “Development” @ DSAG,
SAP Mentor Alumnus, SAP Press Author
• Focus Topics: Extensibility, Cloud Native Development, Serverless
• @lechnerc77
© minnosphere 2020 | Azure Durable Functions 3
Why should we care about Microsoft at all?
© minnosphere 2020 | Azure Durable Functions 4
Okay … so where can we benefit from Azure?
• Integrate SAP with Microsoft 365
• Blend in Azure Services into ABAP via ABAP SDK for Azure
(https://github.com/microsoft/ABAP-SDK-for-Azure)
• Side-by-Side Extension on Microsoft Azure
© minnosphere 2020 | Azure Durable Functions 5
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 6
Azure Functions 101
© minnosphere 2020 | Azure Durable Functions 7
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 8
How do we model “workflows” in a FaaS world?
© minnosphere 2020 | Azure Durable Functions 9
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 10
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 11
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 12
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 13
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 14
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 15
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 16
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 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
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 19
Summing up: Durable Functions are like …
© minnosphere 2020 | Azure Durable Functions 20
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 21
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 22
Challenge 2 – Handle Errors in Activity Calls (Retry)
Orchestrator
Activity 1 Activity 2
SAP Cloud Applications
© minnosphere 2020 | Azure Durable Functions 23
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 24
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 25
Summary - Durable Functions
• … are a great AddOn to Azure Functions
• … manage state for you
• … allow the modelling of complex scenarios without losing the benefits of FaaS
• … 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 Functions26
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 28
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

Azure kubernetes service (aks) part 3
Azure kubernetes service (aks)   part 3Azure kubernetes service (aks)   part 3
Azure kubernetes service (aks) part 3Nilesh Gule
 
Build automation with Fastlane
Build automation with FastlaneBuild automation with Fastlane
Build automation with FastlaneEugene Zharkov
 
Quick, resilient and auto scaling cluster with Senlin [Meetup #21 - 03]
Quick, resilient and auto scaling cluster with Senlin [Meetup #21 - 03]Quick, resilient and auto scaling cluster with Senlin [Meetup #21 - 03]
Quick, resilient and auto scaling cluster with Senlin [Meetup #21 - 03]Vietnam Open Infrastructure User Group
 
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
 
20211120 Automating EC2 operations / EC2運用の自動化
20211120 Automating EC2 operations / EC2運用の自動化20211120 Automating EC2 operations / EC2運用の自動化
20211120 Automating EC2 operations / EC2運用の自動化Masaru Ogura
 
Sitecore on Azure
Sitecore on AzureSitecore on Azure
Sitecore on AzureClearPeople
 
Managing Azure Components Using Azure PowerShell
Managing Azure Components Using Azure PowerShellManaging Azure Components Using Azure PowerShell
Managing Azure Components Using Azure PowerShellNitesh Luharuka
 
Iteratively Develop Microservices with Speed on Kubernetes
Iteratively Develop Microservices with Speed on KubernetesIteratively Develop Microservices with Speed on Kubernetes
Iteratively Develop Microservices with Speed on KubernetesMicrosoft Tech Community
 
kubernates and micro-services
kubernates and micro-serviceskubernates and micro-services
kubernates and micro-servicesMegha Sahu
 
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)Stacy Véronneau
 
Julien Corioland - Keynote - Global Azure Bootcamp 2016 Paris
Julien Corioland - Keynote - Global Azure Bootcamp 2016 ParisJulien Corioland - Keynote - Global Azure Bootcamp 2016 Paris
Julien Corioland - Keynote - Global Azure Bootcamp 2016 ParisAZUG FR
 
Microsoft Azure News - August 2019
Microsoft Azure News - August 2019Microsoft Azure News - August 2019
Microsoft Azure News - August 2019Daniel Toomey
 
Sitecore User Group - JSS & GraphQL
Sitecore User Group - JSS & GraphQLSitecore User Group - JSS & GraphQL
Sitecore User Group - JSS & GraphQLThom Puiman
 
Scalr - Open Source Cloud Management
Scalr - Open Source Cloud Management Scalr - Open Source Cloud Management
Scalr - Open Source Cloud Management Arvind Palanisamy
 
Scaling AWS With Scalr
Scaling AWS With ScalrScaling AWS With Scalr
Scaling AWS With ScalrRam Viswanadha
 

What's hot (20)

SQL_HA_DR_Azure
SQL_HA_DR_AzureSQL_HA_DR_Azure
SQL_HA_DR_Azure
 
Azure kubernetes service (aks) part 3
Azure kubernetes service (aks)   part 3Azure kubernetes service (aks)   part 3
Azure kubernetes service (aks) part 3
 
Continuous Delivery with AWS Services
Continuous Delivery with AWS ServicesContinuous Delivery with AWS Services
Continuous Delivery with AWS Services
 
Resumen - Microsoft Build 2021
Resumen - Microsoft Build 2021Resumen - Microsoft Build 2021
Resumen - Microsoft Build 2021
 
Build automation with Fastlane
Build automation with FastlaneBuild automation with Fastlane
Build automation with Fastlane
 
Quick, resilient and auto scaling cluster with Senlin [Meetup #21 - 03]
Quick, resilient and auto scaling cluster with Senlin [Meetup #21 - 03]Quick, resilient and auto scaling cluster with Senlin [Meetup #21 - 03]
Quick, resilient and auto scaling cluster with Senlin [Meetup #21 - 03]
 
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
 
20211120 Automating EC2 operations / EC2運用の自動化
20211120 Automating EC2 operations / EC2運用の自動化20211120 Automating EC2 operations / EC2運用の自動化
20211120 Automating EC2 operations / EC2運用の自動化
 
Sitecore on Azure
Sitecore on AzureSitecore on Azure
Sitecore on Azure
 
Managing Azure Components Using Azure PowerShell
Managing Azure Components Using Azure PowerShellManaging Azure Components Using Azure PowerShell
Managing Azure Components Using Azure PowerShell
 
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONSSERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
 
Iteratively Develop Microservices with Speed on Kubernetes
Iteratively Develop Microservices with Speed on KubernetesIteratively Develop Microservices with Speed on Kubernetes
Iteratively Develop Microservices with Speed on Kubernetes
 
kubernates and micro-services
kubernates and micro-serviceskubernates and micro-services
kubernates and micro-services
 
Wantedly on AWS #ctonight
Wantedly on AWS #ctonightWantedly on AWS #ctonight
Wantedly on AWS #ctonight
 
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
 
Julien Corioland - Keynote - Global Azure Bootcamp 2016 Paris
Julien Corioland - Keynote - Global Azure Bootcamp 2016 ParisJulien Corioland - Keynote - Global Azure Bootcamp 2016 Paris
Julien Corioland - Keynote - Global Azure Bootcamp 2016 Paris
 
Microsoft Azure News - August 2019
Microsoft Azure News - August 2019Microsoft Azure News - August 2019
Microsoft Azure News - August 2019
 
Sitecore User Group - JSS & GraphQL
Sitecore User Group - JSS & GraphQLSitecore User Group - JSS & GraphQL
Sitecore User Group - JSS & GraphQL
 
Scalr - Open Source Cloud Management
Scalr - Open Source Cloud Management Scalr - Open Source Cloud Management
Scalr - Open Source Cloud Management
 
Scaling AWS With Scalr
Scaling AWS With ScalrScaling AWS With Scalr
Scaling AWS With Scalr
 

Similar to Serverless Side-by-Side Extensions with Durable Functions

[SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - Wh...
[SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - Wh...[SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - Wh...
[SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - Wh...Christian Lechner
 
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
 
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
 
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
 
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
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugToshiaki Maki
 
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
 
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
 
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
 
Unleash the power of Serverless Computing
Unleash the power of Serverless ComputingUnleash the power of Serverless Computing
Unleash the power of Serverless ComputingGaurav Madaan
 
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
 
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesGIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesPatrick Chanezon
 
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User StoreAzure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User StoreDataStax Academy
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316Jupil Hwang
 
Azure Serverless Toolbox
Azure Serverless ToolboxAzure Serverless Toolbox
Azure Serverless ToolboxJohan Eriksson
 
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
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSAOracle Korea
 

Similar to Serverless Side-by-Side Extensions with Durable Functions (20)

[SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - Wh...
[SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - Wh...[SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - Wh...
[SOT322] Serverless Side-by-Side Extensions with Azure Durable Functions - Wh...
 
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...
 
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 ...
 
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
 
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
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
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
 
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
 
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
 
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft AzureEvolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
 
Unleash the power of Serverless Computing
Unleash the power of Serverless ComputingUnleash the power of Serverless Computing
Unleash the power of Serverless Computing
 
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...
 
Chinnasamy Manickam
Chinnasamy ManickamChinnasamy Manickam
Chinnasamy Manickam
 
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesGIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
 
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User StoreAzure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316
 
Azure Serverless Toolbox
Azure Serverless ToolboxAzure Serverless Toolbox
Azure Serverless Toolbox
 
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
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 

More from Christian Lechner

Serverless and SAP … Oh Behave
Serverless and SAP … Oh BehaveServerless and SAP … Oh Behave
Serverless and SAP … Oh BehaveChristian 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 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 (8)

Serverless and SAP … Oh Behave
Serverless and SAP … Oh BehaveServerless and SAP … Oh Behave
Serverless and SAP … Oh Behave
 
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 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

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Serverless Side-by-Side Extensions with Durable Functions

  • 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 • Spokesman of the Special Interest Group “Development” @ DSAG, SAP Mentor Alumnus, SAP Press Author • Focus Topics: Extensibility, Cloud Native Development, Serverless • @lechnerc77
  • 3. © minnosphere 2020 | Azure Durable Functions 3 Why should we care about Microsoft at all?
  • 4. © minnosphere 2020 | Azure Durable Functions 4 Okay … so where can we benefit from Azure? • Integrate SAP with Microsoft 365 • Blend in Azure Services into ABAP via ABAP SDK for Azure (https://github.com/microsoft/ABAP-SDK-for-Azure) • Side-by-Side Extension on Microsoft Azure
  • 5. © minnosphere 2020 | Azure Durable Functions 5 Scenario – Serverless Extension of SAP https://blogs.sap.com/2019/12/09/a-serverless-extension-story-from-abap-to-azure/
  • 6. © minnosphere 2020 | Azure Durable Functions 6 Azure Functions 101
  • 7. © minnosphere 2020 | Azure Durable Functions 7 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
  • 8. © minnosphere 2020 | Azure Durable Functions 8 How do we model “workflows” in a FaaS world?
  • 9. © minnosphere 2020 | Azure Durable Functions 9 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
  • 10. © minnosphere 2020 | Azure Durable Functions 10 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
  • 11. © minnosphere 2020 | Azure Durable Functions 11 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)
  • 12. © minnosphere 2020 | Azure Durable Functions 12 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)
  • 13. © minnosphere 2020 | Azure Durable Functions 13 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)
  • 14. © minnosphere 2020 | Azure Durable Functions 14 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)
  • 15. © minnosphere 2020 | Azure Durable Functions 15 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)
  • 16. © minnosphere 2020 | Azure Durable Functions 16 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)
  • 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 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)
  • 19. © minnosphere 2020 | Azure Durable Functions 19 Summing up: Durable Functions are like …
  • 20. © minnosphere 2020 | Azure Durable Functions 20 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
  • 21. © minnosphere 2020 | Azure Durable Functions 21 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
  • 22. © minnosphere 2020 | Azure Durable Functions 22 Challenge 2 – Handle Errors in Activity Calls (Retry) Orchestrator Activity 1 Activity 2 SAP Cloud Applications
  • 23. © minnosphere 2020 | Azure Durable Functions 23 Challenge 3 – Handle Timeouts in Activity Calls Orchestrator Activity 1 Activity 2 SAP Cloud Applications Race Condition
  • 24. Orchestrator 3 Activity 1 Activity 2 SAP Cloud Applications © minnosphere 2020 | Azure Durable Functions 24 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
  • 25. © minnosphere 2020 | Azure Durable Functions 25 Summary - Durable Functions • … are a great AddOn to Azure Functions • … manage state for you • … allow the modelling of complex scenarios without losing the benefits of FaaS • … low entry barrier due to support of local development • … open up new options in the context of side-by-side extensibility
  • 26. Thank you for your attention © minnosphere 2020 | Azure Durable Functions26
  • 27. minnosphere GmbH Robert-Buerkle-Str. 1, 85737 Ismaning/Munich Germany www.minnosphere.com Dr. Christian Lechner christian.lechner@minnosphere.com
  • 28. © minnosphere 2020 | Azure Durable Functions 28 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