Slide 1

Slide 1 text

Getting Started with Serverless Architectures using Azure Functions MARC DUIKER

Slide 2

Slide 2 text

Marc Duiker Lead Consultant Xpirit Netherlands @marcduiker – [email protected]

Slide 3

Slide 3 text

Current situation Client PlaceOrder Search ValidateOrder CalculatePrice Orders Products Prices

Slide 4

Slide 4 text

Current situation - Problems Client PlaceOrder Search ValidateOrder CalculatePrice Orders Products Prices Expensive infrastructure Performance issues Teams require synced delivery

Slide 5

Slide 5 text

POC to redesign – Conditions & Requirements Client PlaceOrder Search ValidateOrder CalculatePrice Orders Products Prices Uneven & spikey workload 2 weeks Limited budget Fault tolerant Independent delivery

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

What are serverless architectures?

Slide 9

Slide 9 text

1. Application that fully depends on a 3rd party service in the cloud to manage logic and state. Multiple interpretations for Serverless

Slide 10

Slide 10 text

2. Application where some code is written by the developer but is run in stateless compute containers that are event-triggered, short lived and fully managed by a 3rd party. Multiple interpretations for Serverless

Slide 11

Slide 11 text

• Serverless is a misleading term • Functions as a Service (FaaS) is better “Serverless”

Slide 12

Slide 12 text

Traditional n-tier architecture Client PlaceOrder Search ValidateOrder CalculatePrice Orders Products Prices

Slide 13

Slide 13 text

Serverless architecture with FaaS Client PlaceOrder Gateway Search Validate Order Calculate Price Temp Storage Perm Storage Products Prices

Slide 14

Slide 14 text

Why a serverless architecture?

Slide 15

Slide 15 text

What we all want • A responsive application • Regardless of workload • Regardless of failures

Slide 16

Slide 16 text

Solution: Reactive Systems Responsive Message driven Resilient Elastic https://www.reactivemanifesto.org/ FaaS enables Reactive Systems

Slide 17

Slide 17 text

Serverless architecture with FaaS Client Temp Storage Gateway Search Products PlaceOrder Perm Storage Calculate Price Prices Validate Order

Slide 18

Slide 18 text

Serverless architecture with FaaS Client Temp Storage Gateway Search Products PlaceOrder Perm Storage Calculate Price Prices Validate Order

Slide 19

Slide 19 text

Benefits of FaaS • Focus on code instead of servers & runtime • Node.js , Python, C#, Java … • Reduced operational costs • Allows easier experimentation • Shorter time to market

Slide 20

Slide 20 text

Benefits of FaaS • Consumption based pricing • Resource consumption & number of executions # Executions / month 2m Time / execution 0.5 sec Time consumption 2m * 0.5 = 1m sec Avg memory consumption 1.5 GB Resource consumption 1.5 * 1m = 1.5m GB-s Resource price* 0.000014 Eur / GB-s Resource costs 1.5m * 0.000014 = 21 EUR Execution price* 0.169 EUR/1m executions Execution costs 2m * 0.169 = 0.34 EUR *Based on Azure Functions consumption plan dd 11 Oct 2017 2 1

Slide 21

Slide 21 text

Benefits of FaaS • Automatic scaling • Can reduce compute costs for spikey workloads constant spikey

Slide 22

Slide 22 text

Disadvantages of FaaS • Learning curve • Limited execution duration • Startup latency • Development tooling

Slide 23

Slide 23 text

FaaS offerings AWS Lambda (2014) Google Cloud Functions (2016) Azure Functions (2016)

Slide 24

Slide 24 text

How do Azure Functions fit in?

Slide 25

Slide 25 text

What is Azure Functions? “Azure Functions is a serverless compute service that enables you to run code on-demand without having to explicitly provision or manage infrastructure.” https://docs.microsoft.com/en-us/azure/azure-functions/

Slide 26

Slide 26 text

What is Azure Functions?

Slide 27

Slide 27 text

Function Anatomy: Triggers & Bindings Input Output Trigger Code 1 0-n 0-n Function

Slide 28

Slide 28 text

Function Anatomy: Function App Input Output Trigger Code Function Function App Settings

Slide 29

Slide 29 text

The rise of the Functions WebJobs Functions

Slide 30

Slide 30 text

Differences with WebJobs • Seamless integration with Azure services • Azure Storage (Queues, Blobs) • Service Bus (Queues, Topics) • CosmosDB • Event Hubs • Webhooks • Timer • Consumption based pricing • Improved automatic scaling

Slide 31

Slide 31 text

Automatic scaling

Slide 32

Slide 32 text

Azure Functions Limitations • Max execution duration: 10 min (default 5 min) • Available memory: 1.5 GB

Slide 33

Slide 33 text

Developing Azure Functions

Slide 34

Slide 34 text

• Function scripts - Directly in the portal - Visual Studio Code • Compiled Functions - Visual Studio 2017 with Azure Function Tools Developing Functions

Slide 35

Slide 35 text

Demo: Developing Function Scripts

Slide 36

Slide 36 text

Benefits of Compiled Functions: • Enjoy the VS IDE features • Local debugging • Easier package management • Configure CI/CD pipelines • Reduce cold start time Developing in Visual Studio

Slide 37

Slide 37 text

Demo: Developing Compiled Functions

Slide 38

Slide 38 text

User uploads image Image requires validation Image needs to be analyzed Analysis result need to be stored Use case

Slide 39

Slide 39 text

Solution using Azure Functions & Queues images input images to analyze images too large analysis results to store validate analyze store blob DB

Slide 40

Slide 40 text

Solution using Azure Functions & Queues Upload images images input images to analyze images too large analysis results to store validate analyze store blob DB

Slide 41

Slide 41 text

Solution using Azure Functions & Queues Validate images images input images to analyze images too large analysis results to store validate analyze store blob DB

Slide 42

Slide 42 text

Solution using Azure Functions & Queues Analyze images images input images to analyze images too large analysis results to store validate analyze store blob DB

Slide 43

Slide 43 text

Solution using Azure Functions & Queues Store analysis data images input images to analyze images too large analysis results to store validate analyze store blob DB

Slide 44

Slide 44 text

Solution using Azure Functions & Queues Scope of the demo images input images to analyze images too large analysis results to store validate analyze store blob DB

Slide 45

Slide 45 text

Demo: Multiple Functions in one App

Slide 46

Slide 46 text

Demo data

Slide 47

Slide 47 text

Solution using Azure Functions & Queues Start situation images input images to analyze images too large analysis results to store validate analyze store blob DB 3 3

Slide 48

Slide 48 text

Solution using Azure Functions & Queues End situation images input images to analyze images too large analysis results to store validate analyze store blob DB 3 1 2

Slide 49

Slide 49 text

Demo: Doing the magic

Slide 50

Slide 50 text

✓ Develop function using the Azure portal ✓ Develop function using Visual Studio ✓ Multiple functions in one Function App ✓ Microsoft Azure Storage Explorer ✓ Function App Logs Developing Functions Demos

Slide 51

Slide 51 text

Deploying Azure Functions

Slide 52

Slide 52 text

Edit & save scripts in Portal Publish from Visual Studio Deploy straight from source control Deploy from VSTS Deploying Functions

Slide 53

Slide 53 text

Demo: Deploying Functions

Slide 54

Slide 54 text

✓ Configure deployment using Azure Portal ✓ Configure deployment using VSTS Deploying Functions Demos

Slide 55

Slide 55 text

Other scenarios

Slide 56

Slide 56 text

Currently you need to provide a message queue to chain functions. Function Chaining & Durable Functions

Slide 57

Slide 57 text

Function Chaining & Durable Functions https://azure.github.io/azure-functions-durable-extension/ Durable Functions will use Orchestrator and Action functions making it easier for developers to chain functions.

Slide 58

Slide 58 text

Use Functions as Actions Functions & Logic Apps

Slide 59

Slide 59 text

Use an API gateway to manage your Functions API Gateway Client PlaceOrder Search Validate Calculate Temp Storage Perm Storage Products Gateway

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Marc Duiker Lead Consultant Xpirit Netherlands @marcduiker – [email protected] Go and discover endless possibilities with Azure Functions! https://github.com/marcduiker/ demos-serverless-architectures-functions/