Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Qual a diferença entre uma aplicação stateless e stateful?

1)Qual a diferença entre uma aplicação stateless e stateful?
2)Qual a diferença entre estado e sessão? Pode existir sessão sem estado? Pode existir estado sem sessão? E como se configuram como stateless ou stateful?
3)No caso do stateful o estado é guardado no lado do servidor, mas em qual parte do servidor exatamente? Onde entra a sessão aí?
4)Por exemplo se o estado for guardado no banco de dados, o banco de dados faz parte do servidor? O que é exatamente o servidor?

1 resposta
solução!

Oi, Luidi!

  1. Uma aplicação stateless não guarda nenhuma informação sobre o cliente entre uma requisição e outra. Cada requisição precisa conter tudo o que o servidor precisa para processá-la. Já uma aplicação stateful mantém informações sobre o cliente ao longo do tempo, ou seja, o servidor guarda o estado da interação e consegue “lembrar” quem é o cliente e em que ponto ele está.

  2. Estado é qualquer informação que representa a situação atual da aplicação ou do usuário, como estar logado ou ter itens em um carrinho. Sessão é um mecanismo usado para associar esse estado a um cliente específico, normalmente por meio de um identificador de sessão. Pode existir estado sem sessão, como em APIs stateless que usam JWT, onde o estado vai junto em cada requisição. Sessão sem estado não faz sentido, pois a sessão existe justamente para manter algum estado. Uma aplicação é considerada stateless quando não depende de sessão no servidor, e stateful quando depende.

  3. No modelo stateful, o estado pode ser guardado em diferentes partes do servidor, como na memória da aplicação, em um cache (exemplo: Redis) ou em um banco de dados. A sessão entra como a forma de ligar o cliente a esse estado, geralmente através de um ID de sessão enviado em um cookie ou header.

  4. Quando o estado é guardado no banco de dados, ele faz parte do lado do servidor sim, mesmo que esteja em outra máquina ou serviço separado. O termo “servidor” não se refere apenas à aplicação em si, mas a toda a infraestrutura do backend, incluindo aplicação, banco de dados, cache e outros serviços que dão suporte à aplicação.