Pragmatic Serverless Microservices with Azure Functions & Co. - more than FaaS

Pragmatic Serverless Microservices with Azure Functions & Co. - more than FaaS

FaaS is hip, Serverless is cool, Microservices are all the hype. What about building Microservices with Serverless? Based on some well-accepted principles we can use Serverless architectures and technologies to build highly focused Microservices (which we might call Nanoservices, for now). Christian Weyer will show you a pragmatic approach on how to build Nanoservices with Azure Functions, Azure Service Bus & friends. Join him to see Serverless Azure in action, with .NET Core, JavaScript and Java.

7e0087a19318ded4ba2203187694740f?s=128

Christian Weyer

April 04, 2019
Tweet

Transcript

  1. 1.
  2. 2.

    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 christian.weyer@thinktecture.com @christianweyer https://www.thinktecture.com Christian Weyer More than FaaS Pragmatic Serverless Microservices with Azure Functions & Co.
  3. 3.

    3 § Microservices, Nanoservices § Serverless in Azure § Serverless

    Compute: Azure Functions § Serverless Messaging: Azure Service Bus § Summary Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS Our Journey Today
  4. 4.
  5. 5.

    Single Responsibility § Focused around business domain § ‘Small’ Isolation

    § Well-defined technology-agnostic APIs § Mobility § Choice of technology Autonomy § Exclusive state (data storage) Decoupling § Asynchronous communication § Really, always? Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS (Some) Principles of Microservices 5
  6. 6.

    Pragmatic Serverless Microservices with Azure Functions & Co. More than

    FaaS Sample Architecture – Shopping Order Monitoring 6 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…
  7. 8.

    8 § We can choose from a continuum § VM

    ➔ § Containers ➔ § Orchestrators ➔ § PaaS ➔ § Serverless Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS Evolution to Cloud Compute Continuum PaaS IaaS On-Premises Serverless
  8. 9.

    9 Serverless Sweet Spot Programming Model (FaaS) § Event-driven §

    Stateless § Service-full Operational Model § Fully managed § Automatically scaling § Usage priced More than FaaS Pragmatic Serverless Microservices with Azure Functions & Co.
  9. 10.

    10 § Serverless Compute → Azure Functions § Serverless Database

    → Azure Cosmos DB § Serverless Storage → Azure Storage § Serverless Realtime → Azure SignalR Service § Serverless Events → Azure Event Grid § Serverless Messaging → Azure Service Bus § Serverless Workflows → Azure Logic Apps Azure Durable Functions § Serverless IoT → Azure IoT Hub § Serverless Analytics → Azure Application Insights § Serverless Containers → Azure Container Instances Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS Serverless in Azure (personal view)
  10. 11.

    Pragmatic Serverless Microservices with Azure Functions & Co. More than

    FaaS Sample Architecture – Shopping Order Monitoring: Serverless 11 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
  11. 13.

    13 § Azure Functions: code being triggered by an event

    § Use Façade pattern for your business logic § Basic principles enable powerful use cases § Events ➔ Triggers & Bindings § Two ways of operation § Cost-optimized, automatic scale (Consumption plan) § Always-on (App Service plan) § V2 Runtime built on .NET Core § Available for self-hosting § Local tooling & runtime § Multiple language bindings supported Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS Azure Functions: Functions-as-a-Service
  12. 14.

    14 § Incoming event triggers function § Input bindings enable

    easy access to data from various data sources § Output bindings offer easy access to outbound data sinks Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS 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
  13. 15.
  14. 16.

    16 § Queues & Topics § Reliable asynchronous communication §

    Rich features for temporal control § Routing and filtering § Transactions § Convoys & Sessions (related messages with state) § Bindings for Azure Functions available Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS Service Bus: Messaging-as-a-Service
  15. 17.

    17 Sender § Sender sends message to queue § Queue

    ACKs receipt § Receiver connects to queue & retrieves message § Receiver ACKs complete (or other action) Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS Service Bus Queues Receiver
  16. 18.

    18 § Sender only knows about Topic § Receivers only

    know about Subscriptions § Filters and Actions exist on Subscriptions Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS Service Bus Topics & Subscriptions Type == ‘order‘ Sender type=quote type=order Topic Type == ‘quote‘ Filter Filter Subscrip- tion 1 Subscrip- tion 2
  17. 20.

    Single Responsibility § Focused around business domain § ‘Small’ unit

    ➡ Dedicated Azure Functions App Isolation § Choice of technology ➡ .NET, Java, node.js, Python supported § Well-defined technology-agnostic APIs ➡ HTTPS, AMQP, MQTT, custom § Mobility ➡ Portable runtime ➡ Can use Docker, k8s with Functions ➡ Easily deploy & run in Cloud Autonomy § Exclusive state (data storage) ➡ Use separate Azure Storage, Azure SQL, Azure CosmosDB instances Decoupling § Asynchronous communication ➡ Azure Service Bus with queues or topics & subscriptions Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS (Some) Principles of Microservices – with Serverless Azure 20
  18. 21.

    21 § Serverless as FaaS is just one option in

    the Cloud Continuum § Always think about the use cases and requirements § Serverless operational model will be pre-dominant on the ‘server’ § E.g. automatic scaling under load § Serverless Azure offers various solutions in the Serverless space § Functions § Service Bus § SignalR Service & more (also more to come) § Call-to-Action: Azure Functions is more than a Web API framework – preferred for async decoupled processing as distinct (micro?) services. Go figure ! Pragmatic Serverless Microservices with Azure Functions & Co. More than FaaS Summary