Slide 1

Slide 1 text

Mehr als nur HTTP-APIs: Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Christian Weyer @christianweyer CTO

Slide 2

Slide 2 text

2 § Founder & CTO at Thinktecture AG § Personal focus on § Mobile & web-based application architectures § Interoperability, cross-device § Pragmatic end-to-end solutions § Cloud-native & serverless architectures § Independent Microsoft Regional Director § Microsoft MVP for ASP.NET (Architecture) ASPInsider, AzureInsider § Google GDE for Web Technologies [email protected] @christianweyer https://www.thinktecture.com Christian Weyer Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions

Slide 3

Slide 3 text

3 § Architectures for SPAs § HTTPS APIs § Microservices § Serverless § Recurring Jobs § Decoupled Services Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs Our Journey Today

Slide 4

Slide 4 text

End-to-end solutions Architectures for SPAs Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions 4

Slide 5

Slide 5 text

5 Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs Services Backend (kind of) - Monoliths

Slide 6

Slide 6 text

Classic synchronous system boundaries HTTPS APIs Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions 6

Slide 7

Slide 7 text

7 Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs HTTPS APIs – RPC, REST, OData, GraphQL [maybe WebSockets] R P C R E S T G Q L HTTPS HTTPS HTTPS WebSocket

Slide 8

Slide 8 text

Focusing on the ‘right’ thing Microservices Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions 8

Slide 9

Slide 9 text

9 Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs Microservices – dedicated & decoupled R P C R E S T G Q L HTTPS HTTPS HTTPS WebSocket

Slide 10

Slide 10 text

A different approach Serverless Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions 10

Slide 11

Slide 11 text

11 Serverless Programming Model Functions-as-a-Service (FaaS) § Event-driven § Stateless § Service-ful Operational Model § Fully managed § Automatically scaling § Usage priced Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions → Feature-ful → Productivity-ful

Slide 12

Slide 12 text

12 § Code being triggered by an event § Cost-optimized, automatic scaling runtime environment § Available for self-hosting § Local tooling & runtime § Multiple language bindings supported § C# ▪ Powershell (experimental) § JS, TS ▪ Python (experimental) § F# § Java Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs Serverless Functions-as-a-Service – with Azure Functions

Slide 13

Slide 13 text

13 § Incoming event triggers function § Input bindings § easy access to data from various data sources § Output bindings § easy access to outbound data sinks § Out-of-box bindings § https://docs.microsoft.com/en-us/ azure/azure-functions/functions- triggers-bindings #supported-bindings Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs Azure Functions Triggers & Bindings Your code logic Runtime Azure Function HTTP Trigger Storage Input Binding Push Notification Output Binding Database Output Binding Email Output Binding Example

Slide 14

Slide 14 text

More than HTTP APIs - I Recurring Jobs Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions 14

Slide 15

Slide 15 text

15 § Execute code based on a schedule § Timer Triggers use CRON expressions Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs Background Services - with Azure Functions Timer Triggers Your code logic Runtime Azure Function Timer Trigger Storage Input Binding Database Output Binding Expression Description 0 * * * * * every minute 0 */5 * * * * every 5 minutes 0 0 * * * * every hour (hourly) 0 0 */6 * * * every 6 hours 0 0 8-18 * * * every hour between 8-18 0 0 10 * * * every day at 10:00:00 0 0 * * * 1-5 every hour on workdays 0 0 0 * * 0 every Sunday (weekly) 0 0 9 * * MON every Monday at 09:00:00 0 0 0 1 * * every 1st of month (monthly) 0 0 0 1 1 * every 1st of january (yearly) 0 0 0 * * SAT,SUN every Saturday and Sunday

Slide 16

Slide 16 text

More than HTTP APIs - II Async Business Processes Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions 16

Slide 17

Slide 17 text

17 Sender § Offers Queues and Topics & Subscriptions § Standards-based with AMQP 1.0 § Queues § Sender sends message to queue § Queue ACKs receipt § Receiver connects to queue & retrieves message § Receiver ACKs complete (or other action) Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs Decoupling Services - with Azure Service Bus Queues Receiver

Slide 18

Slide 18 text

Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs Sample Architecture – Shopping Order Monitoring Orders Service Products Service Shipping Service AuthN Service Order Monitoring SPA Shopping Web Site (simulated by Postman ) 1 - authenticate 2 - register for push 3 - send new order 5 - new order created push 6 - get updated orders 4 - processing order… 18

Slide 19

Slide 19 text

Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions Mehr als nur HTTP-APIs Sample Architecture – Shopping Order Monitoring: Serverless Orders Service Products Service Shipping Service AuthN Service Order Monitoring SPA Shopping Web Site (simulated by Postman) Azure Function App – C# Azure Function App - C# Azure Function App - JS Azure Function App - Java Azure Service Bus Azure Blob Storage Azure SignalR Service Azure Table Storage Azure Cosmos DB Identity Server 19

Slide 20

Slide 20 text

Summary Serverless is the future … but beware of the pitfalls of Microservices❗ Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions 20

Slide 21

Slide 21 text

21 Remember: there are NO servers! https://twitter.com/jeffhollan/status/1030244102082682880 Mehr als nur HTTP-APIs Pragmatische Serverless Backends mit JavaScript / TypeScript und Azure Functions

Slide 22

Slide 22 text

Chris&an Weyer, Thinktecture AG @chris&anweyer chris&[email protected] https://github.com/thinktecture/serverless-microservices