November 7, 2022

Wat maakt een applicatie stateless of stateful?

Een applicatie kan stateless of stateful zijn. Het begrip ‘state’ verwijst in dit verband naar een voorwaarde die aan verandering onderhevig kan zijn. Denk hierbij aan de volgende zaken: interacties met andere toepassingen of services, voorkeuren voor gebruikersinstellingen, bestanden die geopend zijn en de vraag of er wel of geen data worden geschreven naar het geheugen of de tijdelijke opslag. In dit blogartikel nemen we onder de loep wat een applicatie stateless of juist stateful maakt.

Stateless

Een stateless-applicatie is een applicatie die geen informatie over de status leest of opslaat vanaf het moment dat ze de volgende keer wordt uitgevoerd. Neem bijvoorbeeld de calculator-app op je telefoon: als die begint met nul op het scherm en geen geschiedenis van eerdere berekeningen onthoudt, is ze stateless. Bij stateless laat bijvoorbeeld Docker Run je applicatie werken vanuit de Docker Hub. Op die manier is het eenvoudig om applicaties te verhuizen en te updaten. De applicatie is niet meer afhankelijk van individuele opslag, servers of de ingeregelde uitwijk. Apps en applicaties worden bij disfunctioneren simpelweg vervangen door een nieuwe, zonder dat een eindgebruiker of eindklant daar ooit iets van merkt.

Stateful

Een stateful-applicatie kan zich, telkens als ze wordt uitgevoerd, minimaal enkele dingen herinneren over de status. De actuele statusgegevens die worden opgeslagen kunnen afhankelijk zijn van de toepassing en van de omstandigheden waaronder de applicatie wordt gebruikt. De meeste applicaties die we dagelijks tegenkomen zijn op zijn minst enigszins stateful. Ze slaan onze voorkeuren op, houden de grootte en locatie van het venster bij en onthouden welke bestanden ze onlangs hebben geopend.

Om stateful-apps of -applicaties te laten werken, is het noodzakelijk om een vorm van opslag tot je beschikking te hebben. Applicaties op lokale systemen kunnen gemakkelijk gebruikmaken van opslag in de vorm van een lokaal temp-bestand of een database. Deze afhankelijkheid vereist een specifieke aanpak, waarbij redundante storage een harde eis is om te voorkomen dat de uitval van hardware leidt tot stilstand van de applicatie.

Stateless en Stateful

Moet alles dan stateless?

Naarmate containers in bredere zin worden gebruikt, zijn de grenzen aan lege stateless-containers maar al te duidelijk geworden. Veel van de toepassingen die nu in containers worden gebruikt, zijn niet geschreven met containertechnologie in het achterhoofd. Het zijn bestaande ‘legacy’-applicaties die zijn omgebouwd voor het gebruik in of met containers. Deze applicaties zijn meestal stateful en zijn waarschijnlijk sterk afhankelijk van bepaalde data (states). Het volledig stateless maken van deze applicaties is heel veel werk en in de praktijk bijna ondoenlijk.

Door vooraf goed te plannen en te bepalen wat de applicatie in jouw specifieke geval nodig heeft, kun je de performance, schaalbaarheid en de beheersbaarheid van jouw IT-omgeving optimaliseren. Of je daarbij het beste kunt opteren voor stateless of stateful, hangt af van jouw persoonlijke behoeften en wensen. Een belangrijk voordeel van stateless is dat je nog steeds kunt werken op de cliënt als de server tijdelijk niet beschikbaar is. De status van een transactie gaat niet verloren. De server wordt opnieuw opgestart, en de transactie wordt hervat (Rest). Maar voor veel toepassingen en taken voldoen ook deels stateful-applicaties die zijn geoptimaliseerd voor het gebruik met containers.


Deel deze post
Ronald Kers
Ronald behoort tot de harde kern die meer dan 10 jaar in dienst is bij ACC ICT. Als contentmarketeer schrijft Ronald graag over technologische ontwikkelingen binnen de IT-branche. Met een achtergrond als system administrator weet hij als geen ander complexe materie in begrijpelijke taal uit te leggen.