Der Zustand einer Anwendung (oder eigentlich von allem anderen) ist ihr Zustand oder ihre Qualität zu einem bestimmten Zeitpunkt – ihr Seinszustand. Ob etwas zustandsabhängig oder zustandslos ist, hängt davon ab, wie lange der Zustand der Interaktion mit ihm aufgezeichnet wird und wie diese Information gespeichert werden muss.
Zustandslos
Ein zustandsloser Prozess oder eine zustandslose Anwendung kann isoliert verstanden werden. Es gibt kein gespeichertes Wissen über oder Bezug auf vergangene Transaktionen. Jede Transaktion wird so durchgeführt, als ob sie zum ersten Mal von vorne beginnen würde. Zustandslose Anwendungen stellen einen Dienst oder eine Funktion bereit und verwenden Content Delivery Network (CDN), Web- oder Druckserver, um diese kurzfristigen Anfragen zu verarbeiten.
Ein Beispiel für eine zustandslose Transaktion wäre eine Online-Suche, um eine Frage zu beantworten, die Ihnen in den Sinn gekommen ist. Sie geben Ihre Frage in eine Suchmaschine ein und drücken die Eingabetaste. Wenn Ihre Transaktion unterbrochen oder versehentlich geschlossen wird, beginnen Sie einfach eine neue. Stellen Sie sich zustandslose Transaktionen wie einen Verkaufsautomaten vor: eine einzige Anfrage und eine Antwort.
Zustandsbehaftete
Zustandsbehaftete Anwendungen und Prozesse sind dagegen solche, zu denen man immer wieder zurückkehren kann, wie Online-Banking oder E-Mail. Sie werden mit dem Kontext früherer Transaktionen ausgeführt, und die aktuelle Transaktion kann von dem beeinflusst werden, was bei früheren Transaktionen passiert ist. Aus diesen Gründen verwenden zustandsabhängige Anwendungen jedes Mal dieselben Server, wenn sie eine Anfrage eines Benutzers verarbeiten.
Wenn eine stateful Transaktion unterbrochen wird, wurden der Kontext und die Historie gespeichert, so dass man mehr oder weniger dort weitermachen kann, wo man aufgehört hat. Stateful-Apps verfolgen Dinge wie die Position des Fensters, Einstellungspräferenzen und die letzten Aktivitäten. Sie können sich zustandsabhängige Transaktionen als eine fortlaufende, periodische Konversation mit derselben Person vorstellen.
Die meisten Anwendungen, die wir tagtäglich nutzen, sind zustandsabhängig, aber mit dem technologischen Fortschritt machen Microservices und Container es einfacher, Anwendungen in der Cloud zu erstellen und bereitzustellen.
Container und Zustand
Mit der zunehmenden Beliebtheit von Cloud Computing und Microservices wächst auch die Containerisierung von Anwendungen, egal ob zustandsabhängig oder zustandslos. Container sind Code-Einheiten für eine Anwendung, die zusammen mit ihren Bibliotheken und Abhängigkeiten verpackt werden, so dass sie leicht verschoben werden können und in jeder Umgebung laufen können, egal ob auf einem Desktop, einer traditionellen IT-Infrastruktur oder in einer Cloud.
Ursprünglich wurden Container zustandslos gebaut, da dies ihrer portablen, flexiblen Natur entsprach. Aber mit der zunehmenden Verbreitung von Containern begannen die Leute, bestehende zustandsabhängige Anwendungen zu containerisieren (umzugestalten und neu zu verpacken, damit sie in Containern laufen können). Dadurch erhielten sie die Flexibilität und Geschwindigkeit von Containern, aber mit der Speicherung und dem Kontext der Zustandsabhängigkeit.
Aus diesem Grund können zustandsabhängige Anwendungen sehr ähnlich aussehen wie zustandslose und andersherum. Sie könnten zum Beispiel eine App haben, die zustandslos ist und keinen Langzeitspeicher benötigt, die es dem Server aber erlaubt, Anfragen, die vom selben Client stammen, mit Hilfe von Cookies zu verfolgen.
Zustandsloses und zustandsbehaftetes Container-Management
Mit der wachsenden Popularität von Containern begannen Unternehmen, Möglichkeiten zur Verwaltung von zustandslosen und zustandsbehafteten Containern mit Hilfe von Datenspeichern, Kubernetes und StatefulSets anzubieten. Statefulness ist nun ein wichtiger Bestandteil der Container-Speicherung und die Frage ist nicht mehr ob, sondern wann man Stateful-Container verwendet.
Ob man zustandsbehaftete oder zustandslose Container verwendet, hängt davon ab, welche Art von App man baut und was man damit erreichen will. Zustandslos ist der richtige Weg, wenn Sie Informationen nur flüchtig, schnell und vorübergehend benötigen. Wenn Ihre App jedoch mehr Speicherplatz benötigt, was von einer Session zur nächsten passiert, könnte stateful der richtige Weg sein.
Stateful, stateless und Red Hat
Wenn es um stateful oder stateless geht, hat Red Hat alles für Sie. Ganz gleich, ob Sie Stateful-Container auf unserer unternehmensfähigen Kubernetes-Plattform Red Hat OpenShift orchestrieren oder mit Red Hat Integration eine einheitliche Umgebung für die App-Entwicklung schaffen, Sie werden von unserem preisgekrönten Support und dem branchenweit größten Ökosystem an Partnern unterstützt.