Jump to section

Stateful e stateless

Copia URL

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. 

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. 

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. 

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. 

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.

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 (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.

Keep reading

ARTICOLO

Stateful e stateless

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.

ARTICOLO

Cos'è Quarkus?

Quarkus è uno stack Java Kubernetes native realizzato per le macchine virtuali Java (JVM) e per la compilazione nativa, che ottimizza Java specificamente per i container.

ARTICOLO

Cos'è il serverless computing?

Il serverless computing è un modello di sviluppo cloud native che consente agli sviluppatori di creare ed eseguire applicazioni senza gestire i server.

Scopri di più sulle applicazioni cloud native

Prodotti

Una piattaforma applicativa aziendale che offre servizi verificati per consentire la distribuzione delle app sulle infrastrutture preferite.

Risorse

White paper

Panoramica di Red Hat sullo sviluppo cloud native

Ebook

Il percorso verso le applicazioni cloud native

EBOOK

Cloud native e cloud ibrido: come definire la tua strategia.

Formazione

Formazione gratuita

Developing Cloud-Native Applications with Microservices Architectures