41
1

Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

  • Upload
    dodang

  • View
    240

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

1

Page 2: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

2

Programming

Functions

Introducing

Azure Functions

Serverless

architectures

Debugging and testing

Going to

production

Wrapup

Page 3: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

3

Server-less architectures and Azure Functions

Page 4: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

4

There are no servers…

When you do not need them

Page 5: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

5

Servers and compute

Available when you need it

Page 6: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

6

Event-drivenResponds to external triggers

Instant scalingAbstraction of server infrastructure

Scales when needed

Pay by consumptionCharged by sub-second units of compute

Page 7: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

7

Page 8: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

8

Page 9: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

9

Stores in Blob storage Produces scaled images

Page 10: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

10

Function apps• Hosted as Azure App Service

• JSON based configuration

• Running (multiple) functions

Bindings for input and outputZero or more possible

Triggers and bindings can vary per function

Page 11: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

11

http://github.com/Azure/Azure-Functions

Page 12: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

12

Page 13: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

13

ScriptsAzure Portal or Visual Studio Code

.NET with C#Visual Studio 2017

Instant feedback and testing

Less controlAzure tooling generates metadata files

Integrates with source control

1 2

Achieve higher code qualityCompilation and code analysis

Unit testing

Combine in CI/CD pipelines

Page 14: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

14

DemoCreating and using Azure Functions

Page 15: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

16

Developing Azure Functionswith .NET and Visual Studio

Page 16: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

17

Page 17: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

18

Page 18: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

19

Page 19: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

20

[FunctionName("HelloWorldFunction")]public static HttpResponseMessage Run(

[HttpTrigger] HttpRequestMessage req,TraceWriter log)

{log.Info("C# HTTP trigger function processed a request.");

return req.CreateResponse(HttpStatusCode.OK, "Hello, World!");}

Defines what this function

is triggered by

Page 20: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

21

[FunctionName("ImageAnalyzer")][return: Queue("AnalysisResults", Connection="…")]public static string Run([QueueTrigger("ImagesToAnalyze", Connection="…")] string imageName,[Blob("images/{queueTrigger}",FileAccess.Read, Connection = "…")] Stream blob, TraceWriter log) {return ...;

}

Connection property refers

to value from settings

Attribute values can refer to

trigger metadata with { }

Page 21: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

22

Page 22: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

23

DemoProgramming Azure Functionswith Visual Studio 2017

Page 23: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

24

[FunctionName("ValidateBlobSize")]public static void Run(

[QueueTrigger("ImagesInput", Connection = "…")] string blobNameInQueue,

[Blob("images/{queueTrigger}",FileAccess.Read, Connection = "…")] Stream blob,

TraceWriter log) { // Your function code …}

Page 24: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

25

[FunctionName("FunctionQueueTrigger")]public static void Run(

[QueueTrigger("imagesinput", Connection = "…")]string blobNameInQueue,[Blob("images/{queueTrigger}", FileAccess.Read, Connection = "…")]Stream blob,

[Queue("imagestoolarge", Connection = "…")]ICollector<string> imagesTooLarge,TraceWriter log)

Page 25: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

26

Debugging and testingAzure Functions

Page 26: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

27

Page 27: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

28

Tools to trigger

Page 28: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

29

Page 29: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

30

Blob and queue

• Simply supply message

content

• Depends on input type

(string, byte[] or

POCO class)

HttpRequestMessage

• Able to be constructed

as dummy object

• Set properties for Body

and Headers

• Similar for

HttpResponse(Message)

TraceWriter

• Inherit and override

Write method for mock

• Alternatively use ILogger

provided through DI

Page 30: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

31

DemoDebugging and unit testing Azure Functions

Page 31: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

32

Page 32: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

33

Page 33: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

34

{

"IsEncrypted": false,"Values": {

"AzureWebJobsStorage": "",

"key1": "value1"},

"ConnectionStrings": {"db": {

"ConnectionString": “...",

"ProviderName": "System.Data.SqlClient"}

}} local.settings.json file

Page 34: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

35

DemoDeploying Azure Functions

Page 35: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

36

Consumption-basedScaling as needed

Might require time to provide compute instances

App Service planAvailable scale

Not so much server-less

Easy to combine with PaaS

Azure Functions RuntimeLocal installation of hosts

Connected via SQL Server database

Infrastructure operationsNot so much server-less

Azure On-premises

Page 36: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

37

{"aggregator": {

"batchSize": 1000,"flushTimeout": "00:00:30"

},"logger": {

"categoryFilter": {"defaultLevel": "Information","categoryLevels": {

"Host": "Error","Function": "Error","Host.Aggregator": "Information"

}}

}}

Page 37: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

38

Page 38: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

39

Single responsibility principleDo one thing focussed

Finish as quickly as possibleAvoid long running functions

Stateless, idempotent and defensive

Cross function communicationMessaging: Storage Queues (small <64 KB) or Service Bus (<256 KB)

Service Bus topics for message filtering

Event Hub for high volume messaging

Page 39: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

40

Page 40: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

41

Resources

https://aka.ms/tryfunctions

https://functions.azure.com

https://docs.microsoft.com/en-us/azure/azure-functions/

https://github.com/Azure/Azure-Functions

Channel9

Page 41: Server-less architectures and Azure Functions · PDF fileAzure Portal or Visual Studio Code.NET with C# ... Programming Azure Functions with Visual Studio 2017. 24 ... Connected via

42