VapVup👤
← Voltar
🔀

Stateless vs Stateful

Entenda a diferença entre serviços que lembram de você e serviços que tratam cada requisição como se fosse a primeira vez.

🛒Analogia

O caixa de supermercado

Um serviço stateless é como um caixa de supermercado que não lembra de nenhum cliente — cada atendimento começa do zero. Um serviço stateful é como o dono da padaria do bairro que te conhece pelo nome e lembra do seu pedido habitual.

📦Conceito

Stateless: sem memória

O servidor não guarda nenhuma informação entre requisições. Toda informação necessária vem junto com a requisição (ex: token JWT). Isso facilita escalar horizontalmente — qualquer servidor pode atender qualquer cliente.

🧠Conceito

Stateful: com memória

O servidor mantém estado da sessão do usuário na memória. O cliente precisa sempre voltar ao mesmo servidor. É mais simples de programar, mas difícil de escalar e frágil a falhas.

🔧Exemplo

JWT (stateless) vs Session (stateful)

Compare as duas abordagens de autenticação:

// Stateless com JWT
// O token carrega todas as informações necessárias
const token = jwt.sign(
  { userId: 42, role: 'admin' },
  SECRET,
  { expiresIn: '1h' }
);
// Qualquer servidor valida o token sem consultar banco

// Stateful com Session
// O servidor guarda a sessão na memória
app.post('/login', (req, res) => {
  req.session.userId = 42; // salvo no servidor
  req.session.role = 'admin';
});
📈Conceito

Escalabilidade

Stateless escala facilmente: basta adicionar mais servidores atrás de um load balancer. Stateful exige sticky sessions ou compartilhamento de estado (Redis), o que adiciona complexidade.

🎯Analogia

Quando usar cada um?

APIs REST e microsserviços geralmente são stateless — como guichês de atendimento intercambiáveis. Conexões WebSocket e jogos online geralmente são stateful — como uma ligação telefônica onde o contexto da conversa importa.