Stateful app

Uma aplicação stateful app é um programa que salva os dados do cliente das atividades de uma sessão para uso na próxima sessão. Os dados que são salvos são chamados de state.

Apps podem ser stateful ou stateless. Quando um aplicativo é estadual, os dados do cliente são armazenados localmente ou em um host remoto até que o usuário faça o logout ou a sessão expire após um limite de tempo pré-determinado. Os dados da sessão que são salvos no armazenamento persistente em disco são acessíveis ao servidor, ao cliente e a outros aplicativos.

HTTP, por outro lado, são inerentemente sem estado. Um servidor web não retém informações de várias sessões, portanto, quando um estado é necessário para uma aplicação web, ele deve ser incorporado. Se desejar, recursos de estado podem ser incorporados com páginas dinâmicas. Essas páginas podem reter sessões por meio de variáveis de endereço web e dados armazenados do lado do servidor e do lado do cliente. Cookies são uma forma comum de armazenamento desses dados.

A maior parte dos aplicativos desktop e sistemas operacionais são de estado. No entanto, nos primeiros tempos da computação em nuvem, os desenvolvedores eram incentivados a criar aplicativos sem estado, porque os aplicativos sem estado não eram bem dimensionados na arquitetura distribuída e virtualizada da nuvem. Limitar o armazenamento de dados a locais específicos era difícil em um ambiente onde as próprias máquinas virtuais eram stateless; o resultado era que aplicativos stateful movidos diretamente para a nuvem geralmente se tornavam instáveis.

Containerização pode estar mudando isso. Esse método de virtualização em nível de SO para implantação e execução de aplicativos distribuídos, sem lançar uma VM inteira para cada aplicativo, permite que os arquivos sejam puxados para dentro do contêiner na inicialização, e persista em outro lugar quando os contêineres param e iniciam. O Kubernetes 1.3 do Google, por exemplo, adiciona suporte para aplicações de estado em um produto chamado Pet Sets, que permite que os hosts sejam nomeados e persistam além do reinício dos containers. O FlexVolume e Mesos também fornecem volumes persistentes para os dados de estado dos recipientes.