DEV Community

Francisco Zanfranceschi
Francisco Zanfranceschi

Posted on

6 2

[Conceito] - STATELESS e STATEFUL

Conteúdo original em https://twitter.com/zanfranceschi/status/1572802485055815681


Ei dev,

As eleições estão aí e precisamos falar sobre Estado! Zoeira! 🤭

Bom, talvez você já tenha ouvido os termos STATELESS e STATEFUL. Se tem dúvida sobre esses termos, cola mais pra ficar bem na fita e fazer bonito nos churrascos. 😎

cc @sseraphini

Image


Quando falamos STATELESS ou STATEFUL, geralmente estamos falando sobre a capacidade de correlacionar (ou não) transações dentro de um processo de uma aplicação – um servidor executando uma API, um consumidor que roda em background, etc.


Esses termos estão relacionados sobre como um processo lida com seu estado – STATE.

FULL é cheio, completo. LESS significa "sem".

Ainda não tá suave, né? Guenta aí! Confia! Não desiste de mim ainda.


STATELESS

Um processo stateless é um processo que NÃO correlaciona transações ou instâncias de processamento.

Um exemplo seria abrir um terminal e executar queries em um banco de dados. O resultado da sua query atual não depende do resultado de queries anteriores.


É como se cada query estivesse sendo executada pela 1ª vez.

Muitas aplicações web modernas possuem processos stateless. Elas são mais fáceis de escalar porque a carga pode ser distribuída facilmente entre todos os processos justamente por não haver correlação entre requisições.


De forma resumida e simplificada, um processo stateless é um processo que não mantém informações de processamentos anteriores na memória.

Extrapolando bastante o termo, é como se cada transação fosse uma unidade discreta de processamento – o oposto de contínuo.


STATEFUL

Como você já deve imaginar, um processo stateful é o "oposto" de stateless, pois as transações correlacionam informações de transações anteriores em memória. Ou seja, para chegar ao 3ª passo pela 2ª vez, você provavelmente terá que fazer os passos 1 e 2 novamente.


Por exemplo, para fazer um chatbot (sem banco de dados), você precisaria armazenar as respostas anteriores para responder e oferecer as próximas opções de forma adequada.


Existem aplicações web que são stateful em relação a usuários logados. Ou seja, num arranjo com mais de um servidor, se o usuário loga em um servidor e a próxima requisição cai em outro, esta provavelmente será negada – os outros nós não possuem a informação do login realizado.


Geralmente, aplicações com processos stateful são mais difíceis/chatas de escalar/operar pois precisam manter um mapeamento* entre clientes e servidores específicos.

* Procure por Load Balancer Session Affinity.


MAIS ESTADO!

É importante ressaltar que tudo anteriormente mencionado referente a estado nessa thread, é referente a estado de PROCESSOS e não a estado de aplicações como um todo (servidores web, banco de dados, etc.).


É normal nos referirmos também ao "estado da aplicação" duma forma mais abrangente. É o estado persistido em discos, em bancos, etc.

Afinal, aplicações muito frequentemente possuem estado (usuários, contas, imagens, etc.).


Ou seja, o ESTADO DE APLICAÇÃO geralmente pode ser entendido como o estado somado de todos seus componentes (servidores web, bancos de dados, arquivos, etc.).

E o ESTADO DO PROCESSO (ou a falta dele) é o estado de apenas um componente visto de forma isolada.


Ufa, acabou!

Esse tipo de conceito é mais fácil de entender na prática do que na teoria.

Fiz o meu melhor pra tentar te explicar um pouco sobre o conceito, mas se não ficou muito claro, não tem problema: pergunta aqui. Seu dia-a-dia também vai deixar esse assunto mais claro.


Obrigado demais se você leu até aqui. São pessoas como você que me fazem continuar a produzir esse tipo de conteúdo.

Se puder comentar, dar RT, like, etc. te agradeço demais! Show me some love, please. 💕

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (1)

Collapse
 
eikemiranda343 profile image
Eike Miranda

Parabéns pelo post, muito esclarecedor!

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay