Accedi / Registrati Account

Applicazioni cloud native

Stateful e stateless

Possiamo considerare lo stato di un'applicazione (o di ogni altro elemento) come la condizione o qualità di esistenza in un determinato momento. La condizione di stateful o stateless di un elemento dipende dalla durata della registrazione dell'interazione con l'elemento stesso e dalle modalità di memorizzazione di questa informazione. 


Stateless

Immaginiamo un'applicazione o un processo stateless in una condizione di isolamento, della quale non esistono dati memorizzati o riferimenti a transazioni passate. È come se ogni volta la transazione fosse creata da zero. Le applicazioni stateless erogano un servizio o una funzione e utilizzano una rete CDN (Content Delivery Network), il web o i server di stampa per elaborare le richieste a breve termine. 

È un esempio di transazione stateless la ricerca online volta a individuare la risposta a un quesito. Si digita la domanda in un motore di ricerca e si preme Invio. Se la transazione viene interrotta o chiusa accidentalmente, se ne avvia una nuova. Possiamo paragonare una transazione stateless a un distributore automatico: una singola richiesta a cui viene data una specifica risposta. 


Stateful

Le applicazioni e i processi stateful possono essere riutilizzati più volte, come nel caso dei servizi di online banking o email. Vengono eseguiti in riferimento alle transazioni precedenti e possono essere influenzati dagli eventi accaduti in precedenza. Per questo motivo ogni volta che elaborano una richiesta da parte di un utente le app stateful impiegano gli stessi server.  

Anche se interrotta, una transazione stateful può riprendere più o meno dal punto di interruzione, poiché il contesto e la cronologia vengono memorizzati. Le app stateful tengono traccia della posizione delle finestre, delle preferenze di impostazione e delle attività recenti. Le transazioni stateful possono equivalere a una sorta di conversazione costante e periodica con la stessa persona.

La maggior parte delle applicazioni utilizzate sono stateful, ma grazie al progresso tecnologico, ai microservizi e ai container, è più semplice creare e distribuire le app nel cloud. 


Container e stato

Cloud computing, microservizi e applicazioni containerizzate, che siano stateful o stateless, registrano una diffusione sempre maggiore. I container sono unità di codice di un'applicazione raggruppate insieme alle rispettive librerie e dipendenze, così da poter essere spostate ed eseguite con facilità in qualsiasi ambiente (desktop, infrastruttura IT tradizionale o cloud). 

Inizialmente i container erano progettati per essere stateless, uno stato adatto alle loro caratteristiche intrinseche di portabilità e flessibilità. Alla crescente diffusione del loro impiego è corrisposta una maggiore containerizzazione delle app stateful esistenti, con la riprogettazione e la creazione di nuovi pacchetti per agevolare l'esecuzione da container. Ciò ha consentito di ottenere maggiori flessibilità e velocità nell'utilizzo dei container, mantenendo tuttavia lo stato stateful per lo storage e il contesto.

Le applicazioni stateful possono quindi apparire molto simili a quelle stateless e viceversa. Può esistere ad esempio un'app stateless che non richiede storage a lungo termine, ma che consente al server di tenere traccia delle richieste provenienti dalla stesso client mediante i cookie. 


Come gestire container stateless e stateful

Con la grande diffusione dei container, le aziende hanno iniziato a fornire modalità di gestione adatte a container sia stateless che stateful, usando lo storage dei dati, Kubernetes e StatefulSets. La condizione stateful caratterizza ormai la maggior parte dello storage per container, e ormai il dubbio non è se utilizzare o meno i container stateful, ma quando. 

Per saperlo, occorre definire il tipo di applicazione che si sta costruendo e l'uso che si intende farne. La condizione stateless è idonea se le informazioni sono necessarie solo in modo transitorio, rapido e temporaneo. Se l'app deve conservare in memoria ciò che accade tra una sessione e la successiva, la condizione stateful è più appropriata.


Stateful, stateless e Red Hat

Red Hat ti offre tutti gli elementi necessari, che si tratti di stateful o stateless. Red Hat mette a tua disposizione il suo supporto pluripremiato e il più vasto ecosistema di partner del settore, per aiutarti sia a orchestrare container stateful in Red Hat OpenShift Container Platform (la piattaforma enterprise Kubernetes) sia a creare un ambiente unificato per lo sviluppo delle app con Red Hat Integration

Scopri come creare soluzioni, ottenere cicli di sviluppo più efficienti e promuovere l'innovazione con l'approccio open source dei prodotti Red Hat.

Scopri di più su Red Hat OpenShift Container Platform