Stateful vs Stateless en Arquitectura

statefull vs stateless

statefull vs stateless


En esta entrada, Stateful vs Stateless en Arquitectura, vamos a ver la importancia de elegir, entre dos formas de construir servicios y aplicaciones, sobre todo cuando creamos una nueva arquitectura.

En un mundo cada vez más orientado a crear arquitecturas de microservicios, es muy importante conocer y diferenciar entre Stateful y Stateless. Es decir, servicios con estado o sin estado, ya que en función de la aplicación o el servicio habrá que pensar en unas u otras características y/o recursos.

Vamos a comenzar con un poco de teoría y definiciones sobre Stateful y Stateless.

Stateful Vs Stateless

La principal y más clara diferencia entre Stateful y Stateless, es que esta última no depende de un sistema de almacenaje persistente, por el contrario, stateful sí requiere algún tipo de sitio en el que poder almacenar información de una manera persistente. Por ejemplo, MongoDB será de tipo Stateful, ya que necesita algún sitio donde almacenar información de manera persistente.

Por lo general, cuando se comienza a trabajar en un mundo de microservicios y contenedores, se suele empezar con aplicaciones stateless, es decir, sin estado. Esto ayuda a adaptarse más fácilmente a este tipo de arquitecturas, y poder romper y migrar más fácil un monolito, y además permitirá un escalado independiente.

Principales características de aplicaciones Stateless

  • Las aplicaciones o servicios Stateless, únicamente realizan una función.
  • En este tipo de arquitecturas o servicios, el servidor únicamente se basa en la petición que se realiza con cada solicitud, sin tener en cuenta información anterior o peticiones anteriores, es decir, el servidor no necesita información de estado de otras solicitudes.
  • Al no tener estado, diferentes peticiones pueden ser tratadas por diferentes servidores.
  • Cualquier instancia puede realizar cualquier tarea, es decir, con este tipo de servicios (Stateful) aumentamos y favorecemos la resilencia y elasticidad.
  • Por lo general este diseño de servicios o aplicaciones, suele ir ligado a arquitecturas de microservicios y contenedores.
  • Una arqitectura basada en Orquestación con aplicaciones stateless determina la mejor ubicación para ejecutar contenedores desde el punto de vista de recursos y alta disponibilidad. Permitiendo y adoptando medidas de failover.

Principales características de aplicaciones Stateful

  • Las típicas aplicaciones Stateful suelen ser bases de datos.
  • Suelen estar involucradas en transacciones y aplicaciones con estado, como aplicaciones bancarias.
  • El servidor procesa las peticiones en función de las peticiones realizadas anteriormente, es decir, el servidor puede procesar y mantener el estado con cada petición.
  • En una arquitectura con aplicaciones Stateful la información de estado debe compartirse con todos los servidores o servicios que la necesiten; o utilizar el mismo servidor para realizar el procesamiento de todas las peticiones sobre la misma información de estado.
  • En el mundo de arquitectura de microservicios, uno de los patrones para las aplicaciones Stateful es la Orquestación, que nos va a permitir gestionar alta disponibilidad de nuestros servicios. También en este patrón de arquitectura en microservicios las aplicaciones Stateful va a permitir determinar la mejor ubicación para poder ejecutar los contenedores, desde el punto de vista de almacenaje y red.

Principales diferencias entre Stateful Vs Stateless en Arquitectura

A continuación vamos a enumerar las principales características de aplicaciones stateless y Stateful:

  1.  Estados : Las aplicaciones Stateful van a reaccionar por el estado actual; en cambio las Stateless son independiente del estado y de las peticiones anteriores y posteriores.
  2. Almacenar información: En muchas ocasiones almancemos y usamos información para identificar el usuario que realiza la petición de manera que siempre lo mantenga conectado, serán aplicaciones Stateful. Por otro lado cuando el servidor no almacena datos, simplemente se conecta a una base de datos para verificar que lo que necesite será Stateless.
  3. Peticiones: Todas las peticiones que se realizen en servicios Stateless, tienen toda la información necesaria y tendrá dos fases petición y respuesta; en cambio en Stateful, las peticiones dependerán del estado del servidor.
  4. Estado generado: Siempre y cuando generemos y guardemos una sesión en el servidor serán aplicaciones o servicios Stateful.
  5. Estado en cliente: Siempre y cuando generemos peticiones para obtener una determinada información y realizar otras peticiones en función de esa información y además todo se guarda en el cliente, serán aplicaciones o servicio Stateless.
  6. Casos de uso: Básicamente podríamos decir, que las aplicaciones o servicios Stateless, son las más demandadas en una arquitectura de microservicios con contenedores. En cambio si tenemos una arquitectura con monolitos, el uso general son aplicaciones Stateful.

Beneficios de aplicaciones Stateless

A continuación vamos a enumerar algún beneficio de hacer uso de Stateless, por ejemplo en arquitectura de microservicios:

  • Se pueden crear y añadir fácilmente nuevas instancias.
  • Mantiene la consistencia a través de varios servicios o aplicaciones.
  • Permite un mayor mantenimiento y detencción de errores ya que son aplicaciones por lo general más pequeñas.
  • Elimina los problemas o esfuerzos de crear sesiones para los usuarios.
  • Permite con facilidad escalados de las aplicaciones.
  • El uso de recursos como la memoria del servidor suele ser menor.
  • Elimina los problemas que suele haber con la expiración de la sesión, al no tener sesión ni estado, evitamos problemas.
  • Aplicaciones o servicios con estado, da problemas al hacer peticiones desde diferentes navegadores. Por lo que facilita el navegar.

Conclusión

En un mundo cada vez más orientado a los microservicios y contenedores es muy importante desde un principio sentar las bases. Por eso en esta entrada Stateful vs Stateless en Arquitectura, intentamos explicar las diferencias entre ambos tipos de servicios o aplicaciones.

Si necesitas más información puedes escribirnos un comentario o un correo electrónico a refactorizando.web@gmail.com y te ayudaremos encantados!


No te olvides de seguirnos en nuestras redes sociales Facebook o Twitter para estar actualizado.


3 pensamientos sobre “Stateful vs Stateless en Arquitectura

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *