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 geschreven wordt 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 uw 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 deze 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 uw 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.

stateful-vs-stateless

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 ze zullen waarschijnlijk sterk afhankelijk zijn 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 uw specifieke geval nodig heeft, kunt u de performance, schaalbaarheid en de beheersbaarheid van uw IT-omgeving optimaliseren. Of u daarbij het beste kunt opteren voor stateless of stateful, hangt af van uw persoonlijke behoeften en wensen. Een belangrijk voordeel van stateless is dat er nog steeds gewerkt kan worden 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.

Meer weten?

Wilt u meer weten over stateless en stateful? Of wilt u meer informatie over hoe u uw (Docker)container-omgeving optimaal inricht en de continuïteit van uw applicaties waarborgt? Neem dan gerust contact met ons op of download onze whitepaper over de OTAP-ontwikkelstraat.