SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a Serverless side by-side extensions with Azure 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
 

Semelhante a Serverless side by-side extensions with Azure 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
 

Mais de 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
 

Mais de 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
 

Último

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 

Último (20)

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 

Serverless side by-side extensions with Azure 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