Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Serverless + APIM

Serverless + APIM

This is the presentation I used at Microsoft Startup Bootcamp to cover a Serverless app development approach on Azure including various tools but primarily focusing on Azure Functions and Azure API Management.

Daron Yondem

February 12, 2022
Tweet

More Decks by Daron Yondem

Other Decks in Programming

Transcript

  1. Serverless != Microservices • You can have a fleet of

    EC2 instances, running containers, orchestrating and still worry about infrastructure. • You can have dozens of functions tightly coupled and delivered as a behemoth.
  2. Talking Serverless on Azure Serverless Functions – Azure Functions Serverless

    Containers – Azure Container Instances Serverless NoSQL – Cosmos DB Serverless SQL – Azure SQL Database Serverless Tier Serverless Eventing – Event Grid + Hub Serverless API Management – Consumption Tier APIM
  3. Azure Functions 101 • Javascript (Node.js 14) • C# /

    F# (.NET 6) • Java 11 & 7 • Powershell 7 • Pyhton 3.9, 3.8 • Go / Rust (Custom Handlers / Unofficial)
  4. What for? • Timer-based processing • SaaS Event Processing •

    Full Serverless Architecture • Real-Time Stream Processing • Real-Time Bot Messaging • Serverless API Backends
  5. Where? • Azure Public Cloud • Azure Arc everywhere (AWS,

    GCP, On-Prem) • Wherever you have Kubernetes through KEDA • Self scale with custom containers. • On my machine!
  6. Billing Model? • Consumption Plan • Execution Time GB-s •

    Execution Count • Premium Plan • VNet Access • vCPU / Second (Min 1) • Memory Allocated (Second) • Functions on Kubernetes – Kind of Free • Functions in App Service Plan – Kind of Free
  7. Authentication • Anoymous • Function Key • Host Key •

    Federated Identity through App Service • Azure AD, Facebook, Google, Twitter, OpenID • Managed Identity • Certificate Authentication
  8. Function Triggers and Bindings • A trigger defines how a

    function is invoked. • Triggers have associated data, which is usually the payload that triggered the function. • Input and output bindings provide a declarative way to connect to data from within your code.
  9. What you can do with timer triggers? • Run at

    explicitly specified intervals, like every day at 2:00 am using CRON expressions, like “0 */5 * * * *“ (every 5 minutes) • Can send information to other systems, but typically don’t “return” information, only write to logs • Great for redundant cleanup and data management • Great for checking state of services • Can be combined with other functions
  10. Stateful Functions and Workflows! • Stateful functions • Managed state,

    checkpoints, and restarts when needed. • Define stateful workflows in orchestrator functions. .
  11. Problem 1 : Function Chaining • No visualization to show

    relationship between functions and queues. • Middle queues are an implementation detail – conceptual overhead. • Error handling adds a lot more complexity.
  12. Problem 2 : Fan-out/Fan-in • Fanning-out is easy, but fanning-in

    is more complicated. • Functions offers no help with this scenario today • All the same problems of the previous pattern
  13. Eventing! Event Hub • Receiver polls • Retention up to

    7 days • Ability to playback • Big data guy. • Low latency • At least once delivery Event Grid • Sends HTTP to receiver • Distributes (dead-lettering optional, 1 day retry) • No delivery order guarantee • Deeply integrated into Azure. • At least once delivery • Low cost • Serverless
  14. Messaging • Service Bus on stage! • Reliable asynchronous message

    delivery • Requires polling • FIFO, transactions, routing, duplicate detection and so on.
  15. Why Azure API Management? • Rate limiting • Access Policies

    • Caching • Subscriptions • Licensing • Analytics • Developer Portal • and so on…
  16. Further learning… Create serverless applications • https://drn.fyi/3HKvZho Architect message brokering

    and serverless applications in Azure • https://drn.fyi/3HJz8OB Build serverless, full-stack applications in Azure • https://drn.fyi/3Bis1u6