Azure Container Apps: volwaardig alternatief voor Kubernetes?
Kubernetes was lange tijd de nummer één onder de containerbeheerplatforms. De laatste tijd zien we echter dat een groeiend aantal bedrijven kiest voor Azure Container Apps (ACA). De twee platformen lijken veel op elkaar, waarbij Azure de (gouden) belofte doet dat haar oplossing minder complex is dan Kubernetes en bijna self-managed te gebruiken valt.
Dit zou bijvoorbeeld betekenen dat je eigenlijk geen specialist in containerbeheer meer nodig hebt, maar alleen een DevOps’er. Is Container Apps werkelijk zoveel eenvoudiger te gebruiken? Of heeft Kubernetes toch belangrijke functionaliteiten en voordelen die in Azure Container Apps (grotendeels) ontbreken? En wat is de beste keuze voor welke organisatie of applicatie? We onderzoeken het in dit artikel.
Wat is Azure Container Apps?
Azure Container Apps is een serverloos platform (het draait in een voor jouw gegeneerd Azure Virtual Network) waarmee je apps kunt implementeren vanuit code of containers zonder complexe infrastructuur te hoeven delen. Container Apps biedt de up-to-date serverresources die nodig zijn om jouw toepassingen stabiel en veilig te houden. Toepassingen die gebouwd zijn in Azure Container Apps kun je bovendien (automatisch) schalen op basis van kenmerken als HTTP-verkeer, CPU- of geheugenbelasting, events of diverse typen KEDA-ondersteunde scalers. Azure Container Apps maakt gebruik van een pay-per-usemodel. Je betaalt dus alleen voor middelen die je daadwerkelijk afneemt.
Het platform biedt omvangrijke ondersteuning voor opensource-technologie en uitgebreide end-to-endproductiviteit voor ontwikkelaars en logboekregistratie. Ook geavanceerd identiteits- en toegangsbeheer (beheerde identiteiten, configuratiewaarden veilig opslaan) via Azure Active Directory maakt deel uit van het dienstenaanbod binnen Container Apps. Azure Container Apps is prima te gebruiken voor toepassingen als:
- het implementeren van API-endpoints;
- het hosten van achtergrondverwerkingstaken;
- het uitvoeren van microservices.
Azure Container Apps versus Kubernetes
Zoals je ziet heeft Azure Container Apps best het een en ander te bieden qua functionaliteit en gebruiksgemak. Tijd om het platform te vergelijken met Kubernetes. Wat zijn de belangrijkste verschillen tussen de twee? En is Azure Container Apps echt een volwaardig alternatief voor Kubernetes en AKS (Azure Kubernetes Service)?
De voordelen van Azure Container Apps
Het voordeel voor Azure Container Apps is dat het platform ‘app-centric’ is en een meer serverloze gebruikerservaring biedt dan Kubernetes of AKS. ACA wordt wel aangedreven door Kubernetes en andere opensource-technologieën als Dapr en KEDA. In tegenstelling tot Kubernetes en AKS bezit ACA ook een ingebouwde (native) functionaliteit om HTTP-verkeer tot nul te schalen. Voor ander verkeer wordene KEDA-scalers gebruikt om je applicatie te schalen op basis van het aantal inkomende events en berichten dat in behandeling is. ACA maakt capaciteit op- of afschalen op basis van binnenkomende verzoeken of berichten makkelijk.
Is Azure het enige platform dat je voor applicaties gebruikt? Azure Container Apps is naadloos te integreren met andere Azure-diensten. Je creëert soepele workflows in combinatie met Azure Logic Apps, Azure Functions, Azure Spring Apps en Azure Event Grid. Je verbindt ACA daarnaast ook met Azure-databronnen als databases en opslagomgevingen.
De toegevoegde waarde van Kubernetes
Naast de bovengenoemde voordelen heeft Azure Container Apps ook een aantal beperkingen die in Kubernetes niet of veel minder spelen. In tegenstelling tot Kubernetes kan ACA bijvoorbeeld geen privileged containers uitvoeren. Als je in het platform een proces wil uitvoeren dat vraagt om root access, loopt je gecontaineriseerde applicatie tegen een runtime error aan.
Als er iets aan de hand is in Azure Container Apps kan je nauwelijks tot niet analyseren waar het probleem zit en waarom iets niet werkt. Je bent afhankelijk van de hulp van Azure tot zij jouw te woord staan. Een andere beperking van ACA zijn de resource limieten. Wanneer je applicaties groeien of niet meer goed zijn, moet je het weer ombouwen om het geschikt te maken.
Wat betreft mogelijkheden voor geavanceerde orchestratie, biedt Azure Container Apps minder uitgebreide mogelijkheden dan Kubernetes. Mogelijkheden voor maatwerk-deployment, manuele scaling controls, uitgebreide netwerkfunctionaliteiten en fijnmazige controle over het plaatsen van pods ontbreken in ACA bijvoorbeeld grotendeels. Je bent in ACA bovendien sterk afhankelijk van het ecosysteem aan Azure-diensten. Als je op zoek bent naar een cloud-agnostische dienst voor het beheren van containers, is Azure Container Apps niet de beste optie.
Kubernetes en AKS zijn meer clustergericht en bieden meer controle en flexibiliteit dan ACA. AKS ondersteunt bijvoorbeeld directe toegang tot de Kubernetes API en voert elke Kubernetes-workload uit. De clusterconfiguraties en -bewerkingen vallen geheel onder jouw controle en verantwoordelijkheid. Dit brengt wat meer complexiteit, maar tevens veel meer mogelijkheden voor maatwerk met zich mee. Kubernetes biedt in tegenstelling tot ACA ook maximale ondersteuning voor geavanceerde scenario’s zoals hybride cloudomgevingen en multicloud-implementaties.
ACA en Kubernetes: wanneer welk platform kiezen?
Azure Container Apps en Kubernetes geven je allebei de mogelijkheid om containers en applicaties te beheren. Ze doen dit alleen elk op een net wat andere manier. Welke oplossing voor jou de juiste is, hangt af van een aantal verschillende factoren.
- De complexiteit van je applicatie. Door het uitgebreidere palet aan functionaliteiten, resources en configuratiemogelijkheden is Kubernetes de beste optie voor complexe en zware applicaties. ACA is prima voor eenvoudigere en stateless applicaties die je snel en on demand wilt op- en afschalen.
- Gebruiksgemak en ontzorging. Als je niet te veel tijd en moeite kwijt wilt zijn aan het beheren en configureren van de infrastructuur en genoegen neemt met iets minder maatwerkmogelijkheden, is Azure Container Apps waarschijnlijk de beste optie.
- De mate van maatwerk die je nodig hebt. Kubernetes biedt meer maatwerkopties dan ACA.
- Je behoeften en wensen op het vlak van schaalbaarheid.
- Je budget en eventuele financiële beperkingen. Kubernetes integreren in je Azure-omgeving vergt een extra investering.
- Het kennisniveau en de vaardigheden van je IT-team en developers. Kubernetes is uitgebreider en vergt meer specialistische kennis dan ACA. Managed-opties en de hulp inschakelen van een gespecialiseerde partner bieden de mogelijkheid om te profiteren van Kubernetes, maar tegelijkertijd de complexiteit binnen de perken te houden.
- De mate van controle en flexibiliteit die je nastreeft. Kubernetes zorgt voor extra complexiteit, maar geeft je wel veel additionele knoppen om aan te draaien en containerbeheer zorgvuldig af te stemmen op je behoeften en organisatie.
Conclusie: kies wat past bij jouw behoeften en organisatie
Kies Kubernetes als je behoefte hebt aan een robuuste, flexibele en schaalbare oplossing voor complexe en zwaar belaste applicaties. ACA is een goede keuze voor eenvoudigere applicaties waar gebruiksgemak en snelle implementatie belangrijker zijn.
Wil je meer weten over Azure Container Apps en Kubernetes? En ontdek je graag wat er allemaal mogelijk is met Managed Azure en Managed Kubernetes van ACC ICT?