App senza stato

Un'app senza stato è un programma applicativo che non salva i dati del client generati in una sessione per utilizzarli nella sessione successiva con quel client. Ogni sessione viene eseguita come se fosse la prima volta e le risposte non dipendono dai dati di una sessione precedente. Al contrario, un'applicazione stateful salva i dati su ciascuna sessione client e li utilizza la volta successiva che il client effettua una richiesta.

Quando un'applicazione è senza stato, il server non memorizza alcuno stato sulla sessione client. I dati della sessione vengono invece archiviati sul client e passati al server secondo necessità. Questa è una considerazione importante quando si sviluppano app con offline prima in mente. In questo approccio allo sviluppo del software, i dati della sessione vengono archiviati localmente sul dispositivo dell'utente finale quando la connettività Internet non è disponibile e caricati e replicati nel cloud quando una connessione diventa disponibile.

L'architettura distribuita che rende possibile la scalabilità orizzontale nel cloud computing ha suscitato un rinnovato interesse per le app stateless e per i componenti delle app stateless. Uno dei motivi è perché quando i componenti di un'app sono senza stato, possono essere facilmente ridistribuiti in caso di errore e ridimensionati per adattarsi alle modifiche del carico. Un altro motivo è che quando le app sono senza stato, possono essere facilmente connesse ad altre app tramite le interfacce dei programmi applicativi (API).

Anche la programmazione funzionale, che viene spesso utilizzata per i microservizi e la containerizzazione, ha suscitato l'interesse per le app stateless. La programmazione funzionale è un approccio allo sviluppo del software che utilizza segmenti molto piccoli di codice immutabile. Ogni funzione esegue il suo compito come se fosse la prima volta ed è a conoscenza, ma non dipende da, altre funzioni nel programma. Poiché tutte le parti del programma sono senza stato, i programmatori possono assemblare le funzioni in più modi senza doversi preoccupare delle dipendenze che interrompono il programma.