App con stato

Un'app con stato è un programma che salva i dati del cliente dalle attività di una sessione per utilizzarli nella sessione successiva. I dati salvati sono chiamati stato dell'applicazione.

Le app possono essere con stato o senza stato. Quando un'app è stateful, i dati del client vengono archiviati localmente o su un host remoto fino a quando l'utente non si disconnette o la sessione scade dopo un limite di tempo predeterminato. I dati della sessione salvati nella memoria su disco persistente sono accessibili al server, al client e ad altre applicazioni.

HTTP, d'altra parte, è intrinsecamente senza stato. Un server Web non conserva le informazioni di più sessioni, quindi quando è necessario uno stato per un'app Web, è necessario incorporarlo. Se lo si desidera, le funzionalità stateful possono essere integrate con le pagine dinamiche. Queste pagine possono conservare le sessioni tramite variabili di indirizzo web e dati memorizzati sul lato server e client. I cookie sono un modo comune in cui tali dati vengono archiviati.

La maggior parte delle applicazioni desktop e dei sistemi operativi sono stateful. Agli albori del cloud computing, tuttavia, gli sviluppatori erano incoraggiati a creare app senza stato, perché le app con stato non si adattavano bene all'architettura distribuita e virtualizzata del cloud. Limitare gli archivi dati a posizioni specifiche era difficile in un ambiente in cui le macchine virtuali stesse erano senza stato; il risultato è stato che le app con stato spostate direttamente nel cloud spesso sono diventate instabili.

La containerizzazione potrebbe cambiare la situazione. Questo metodo di virtualizzazione a livello di sistema operativo per la distribuzione e l'esecuzione di applicazioni distribuite, senza avviare un'intera VM per ciascuna applicazione, consente di estrarre i file nel contenitore all'avvio e di persistere altrove quando i contenitori si arrestano e si avviano. Kubernetes 1.3 di Google, ad esempio, aggiunge il supporto per le applicazioni stateful in un prodotto chiamato Pet Sets, che consente agli host di essere denominati e persistere oltre i riavvii del contenitore. FlexVolume e Mesos forniscono anche volumi persistenti per i dati di stato dei container.