Web Apps schalen op Microsoft Azure: wat werkt het beste?

13.10

Web apps worden door steeds meer bedrijven en personen gebruikt, maar die extra load betekent dat apps ook steeds meer schaalbaar moeten zijn. Dat is makkelijker gezegd dan gedaan, maar gelukkig biedt het Azure ecosysteem van Microsoft volop mogelijkheden om apps te schalen. Afhankelijk van de workload bestaat er een heel resem aan oplossingen, elk met hun eigen specifieke features. In dit artikel zullen we vier van die oplossingen vergelijken: Azure App Service, Azure Functions, Azure Kubernetes Service, en Azure Container Apps. Elke oplossing heeft een eigen niche, dus lees hieronder zeker verder om te weten welke voor jou het beste past! 

Azure App Service 

Azure App Service is de populairste van de oplossingen die we zullen bespreken. Als een Platform as a Service (PaaS) product laat het je toe om web applicaties te bouwen, deployen en schalen in een programmeertaal naar voorkeur, zonder dat je daarbij zorgen hoeft te maken over het beheren van infrastructuur. Hoewel App Service auto-scaling en high availability aanbiedt, is het daarom niet automatisch de beste keuze. Kijk bijvoorbeeld eens naar hoe het de applicaties schaalt. 

Je kan per-app scaling in App Service aanzetten, wat je toelaat om horizontaal te schalen en het aantal instances of workers per App Service te bepalen. Elke instance van App Service vereist een VM instance. Als je App Service plan meerdere App Services bevat, maar er slechts een daarvan moet schalen, zal je twee van die VM instances nodig hebben. Mocht er een tweede App Service alsnog moeten schalen, dan zal die van dezelfde VM instance gebruik kunnen maken. 

App Service schaalt dus goed met always-on, high-available web apps, maar andere soorten workloads zullen waarschijnlijk meer voordeel halen uit andere oplossingen. 

Azure Functions (FaaS) 

Azure Functions is een serverless product dat Function as a Service (FaaS) aanbiedt. Ook hier kunnen developers focussen op de code zonder zich zorgen te moeten maken over de infrastructuur. Het wordt dan ook vaak gebruikt voor lichte API’s en andere kleine taken die op basis van een schema, bericht, event of data stream draaien.  

Omdat Microsoft de infrastructuur beheert, gebeurt het schalen ook automatisch. Je kan het schaalgedrag echter maar beperkt instellen. Azure Functions is dan ook minder geschikt voor langdurige en andere intensieve taken, zoals we in een vorige blog rond background jobs al aanhaalden. 

Azure Kubernetes Service (CaaS) 

Azure Kubernetes Service is het managed service product voor Kubernetes containers van Azure, en wordt dus met Containers as a Service (CaaS) aangeduid. Kubernetes laat je toe om applicaties in containers automatisch te draaien, schalen en beheren. Azure Kubernetes Service zorgt ervoor dat het horizontaal schalen, load-balancing en self-healing vlot verloopt. Om te beginnen met AKS zal je team wel voldoende ervaring nodig hebben met containers en Kubernetes. 

Azure Container Apps (CPaaS) 

Azure Container Apps is een Container Platform as a Service (CPaaS). Het beheert de volledige serverless hosting service voor applicaties in containers, en herleidt de bovenlaag van infrastructuurbeheer en orkestratie tot een abstracte laag. Het biedt dus het beste van Kubernetes zonder de complexiteit van een infrastructuur die via een serverless consumption pricing model beheerd wordt.  

Azure Container Apps is dan ook een uitstekende keuze voor microservices, API’s, event processing, en background jobs die gedurende lange tijd geschaald moeten worden. Je kan bepaalde triggers op voorhand instellen, waardoor je applicaties kan laten schalen zonder ook maar een enkele lijn code te moeten schrijven. Bovendien biedt het KEDA (Kubernetes Event-Driven Autoscaling) scale triggers aan voor meer geavanceerde noden. 

Conclusie 

Wanneer je voor een bepaalde Azure oplossing kiest, hou dan altijd de scaling noden in je achterhoofd. Het zal namelijk heel wat invloed hebben op hoe goed je workload zal schalen, maar vooral op het kostenplaatje.  

  • Voor always-on webapplicaties is Azure App Service de meest populaire oplossing. 
  • Wil je een serverless oplossing voor een lichte API of wat event processing, dan is Azure Functions de juiste keuze. 
  • Als je applicaties of microservices in containers wil draaien, maar ook volledig controle wil uitoefenen over je infrastructuur, dan kies je best voor Azure Kubernetes Service. 
  • Azure Container Apps biedt tenslotte een serverless container oplossing aan die volledig gemanaged is, en is dus de ideale keuze voor schaalbare applicaties die gedurende een lange periode in de achtergrond moeten draaien. 

De computing oplossing is natuurlijk maar een klein deel van het totale plaatje. Om een applicatie volledig tot z’n recht te laten komen in een container, zal de applicatie van je architectuur eerst en vooral modulair genoeg moeten zijn. Anders kan je immers geen voordeel halen uit het flexibel schalen van containers. Kan je nog wat advies gebruiken om high-available webapplicaties of microservices te ontwerpen en te hosten? Neem dan zeker contact met ons op. 

Hopelijk heeft dit artikel je wat meer inzicht kunnen bieden in de verschillende manieren om webapplicaties te schalen op het Azure platform. Bij CloudFuel is het onze missie om organisaties het meeste uit hun cloud te laten halen, dus contacteer ons gerust bij verdere vragen! We helpen je graag verder. 

Smokescreen