Resumen
El estado de una aplicación (o de cualquier otra cosa) hace referencia a su condición o cualidad de existir en un momento específico. Es su capacidad de estar. El que un sistema tenga estado depende del tiempo durante el cual se registra interacción con él y de la forma en que se debe almacenar esa información. Una aplicación con estado conserva el estado o el contexto de sus interacciones con los usuarios, los sistemas o los elementos. Este se mantiene en una solución de almacenamiento duradero para que la aplicación continúe funcionando después de un reinicio. La diferencia principal entre las aplicaciones con estado y sin estado es que las primeras guardan información antigua y actual, mientras que las segundas no lo hacen.
¿Qué son las aplicaciones con estado?
Las aplicaciones y los procesos con estado lo mantienen al almacenar, registrar y volver a utilizar la información y los procesos que ya están establecidos en Internet. En estas aplicaciones, el servidor hace un seguimiento del estado de cada sesión o interacción y mantiene esa información según las solicitudes previas del usuario. Se puede acceder a esas sesiones una y otra vez, como en la banca en línea o el correo electrónico. Funcionan con el contexto de las operaciones anteriores, y la operación actual puede verse afectada por lo que ocurrió previamente. Por estos motivos, las aplicaciones con estado utilizan los mismos servidores cada vez que procesan la solicitud de un usuario.
En caso de interrumpirse una operación de este tipo, se puede retomar desde donde se dejó gracias al almacenamiento del contexto y el historial. Las aplicaciones con estado rastrean, por ejemplo, la ubicación de las ventanas, las preferencias de configuración y la actividad reciente. Piensa en ellas como en una conversación periódica y constante con la misma persona.
Casos prácticos de las aplicaciones con estado
- Aplicaciones centradas en el usuario: son las redes sociales o los sitios de e-commerce que hacen un seguimiento de las sesiones iniciadas del usuario, lo que incluye las preferencias o los elementos del carrito de compras.
- Sistemas del IoT: un sistema del Internet de las cosas (IoT) envía, recibe y analiza los datos de forma permanente en un ciclo de retroalimentación. Un dispositivo, como el termostato de tu casa, cambiará el estado con el tiempo, según los datos históricos o los que reciba en tiempo real.
- Entrenamiento de modelos de inteligencia artificial/machine learning: los modelos de entrenamiento de inteligencia artificial/machine learning (aprendizaje automático) aprenden de los datos y los recuerdan. Esto se mantiene y permite que los modelos funcionen con su máxima capacidad.
Recursos de Red Hat
¿Qué son las aplicaciones sin estado?
Las aplicaciones o los procesos sin estado no retienen la información de las interacciones anteriores del usuario. No se almacena información sobre las operaciones anteriores ni se hace referencia a ellas. Cada operación se lleva a cabo desde cero, como si fuera la primera vez. Estas aplicaciones proporcionan un servicio o una función y usan servidores de impresión, de red de distribución de contenido (CDN) o web para procesar estas solicitudes a corto plazo.
Un ejemplo de una operación sin estado puede ser la búsqueda en línea de la respuesta a una pregunta que se le haya ocurrido. Tu escribes la pregunta en un motor de búsqueda y presionas la tecla Entrar. Si la operación se interrumpe o se cierra por accidente, simplemente inicias una nueva. Piensa en las operaciones sin estado como en máquinas expendedoras: a una solicitud, una respuesta.
Casos prácticos de las aplicaciones sin estado
- API de REST: las interfaces de programación de aplicaciones (API) de REST transfieren una representación del estado de un recurso a quien lo solicite o al extremo. Cada solicitud a la API es independiente y el servidor no almacena la información de las solicitudes anteriores.
- Microservicios: los microservicios permiten que todas las funciones principales dentro de la aplicación existan independientemente. Es por esto que esta arquitectura es adecuada tanto para las aplicaciones con estado como para las que no tienen estado.
- Arquitecturas sin servidor: las arquitecturas sin servidor están diseñadas para responder a eventos aislados y no retienen el contexto de las acciones anteriores, por lo que no necesitan mantener el estado. Son ideales para las aplicaciones asincrónicas y sin estado que pueden iniciarse de forma instantánea.
Comparación entre los sistemas con estado y sin estado
La diferencia principal entre los sistemas con estado y sin estado es la capacidad de retener la información del estado actual de las interacciones de un usuario o tratar cada solicitud como una operación independiente y aislada. Sin embargo, también hay diferencias específicas, entre las que se incluyen:
La retención del estado
Las aplicaciones con estado almacenan la información de las interacciones principalmente en una base de datos o en una memoria distribuida. En cambio, las que no tienen estado no almacenan la información de las interacciones, por lo que las operaciones deben iniciarse otra vez.
Dependencia de las sesiones
En las aplicaciones con estado, cada solicitud depende de los datos o el contexto de las interacciones y las transacciones anteriores. Los sistemas sin estado tienen sesiones más independientes, ya que cada solicitud se trata como una nueva; sin embargo, esto significa que la aplicación debe tener toda la información necesaria para procesarla.
Dependencia del almacenamiento
Las aplicaciones con estado requieren un almacenamiento permanente (por ejemplo, bases de datos y sistemas de archivos distribuidos). Dependen de una solución de almacenamiento fundamental y necesitan un esquema para sincronizar los datos entre las instancias.
Uso de los recursos
Las aplicaciones sin estado suelen utilizar menos recursos porque no necesitan almacenar ni gestionar los datos de las sesiones. En cambio, debido a que los sistemas con estado dependen más del almacenamiento, es posible que requieran más memoria y potencia de procesamiento para administrar y mantener la información.
Capacidad de ajuste
Generalmente, las aplicaciones sin estado tienen más capacidad de ajuste, ya que cada solicitud es independiente y se puede gestionar con cualquier servidor disponible mediante el equilibrio de carga. Los sistemas con estado tienen instancias con conexión directa que dificultan el ajuste. Además, es posible que requieran más instancias o pods específicos de Kubernetes para gestionar el estado, equilibrar la carga y administrar las sesiones.
Tolerancia a los errores
Las aplicaciones sin estado toleran más los errores, ya que la pérdida de un servidor no afecta las sesiones de los usuarios. En los sistemas con estado, esta situación provoca la pérdida de los datos de la sesión, a menos que se implementen medidas adicionales, como la replicación o los clústeres.
Complejidad del desarrollo
Las aplicaciones sin estado son más sencillas de desarrollar y mantener, ya que no es necesario gestionar el estado de varias solicitudes. Por otro lado, los sistemas sin estado requieren un manejo cuidadoso de los datos de la sesión y de la gestión de los datos.
Contenedores y estado
La mayoría de las aplicaciones que usamos diariamente tienen estado; pero conforme la tecnología avanza, los microservicios y los contenedores facilitan el diseño y la implementación de aplicaciones en la nube.
El cloud computing y los microservicios se vuelven cada vez más populares y lo mismo sucede con la organización de aplicaciones en contenedores, ya sea con estado o sin él. Los contenedores son unidades de código para una aplicación que se empaquetan junto con sus bibliotecas y dependencias. Esto les permite trasladarse con facilidad y funcionar en cualquier entorno, tanto en la infraestructura de TI tradicional de una computadora de escritorio como en la nube.
En un principio, los contenedores se diseñaron para no tener estado, ya que esto se ajustaba a su naturaleza portátil y flexible. Sin embargo, a medida que se extendió su uso, la gente comenzó a organizar en contenedores las aplicaciones con estado actuales (es decir, a diseñarlas y empaquetarlas nuevamente para poder utilizarlas desde ellos). Esto les otorgó la flexibilidad y la rapidez que ofrecen los contenedores, pero con el almacenamiento y el contexto que proporciona el tener estado.
Por eso las aplicaciones con estado pueden ser muy parecidas a las que no tienen, y viceversa. Por ejemplo, puedes tener una aplicación sin estado que no requiera almacenamiento a largo plazo, pero que permita al servidor hacer un seguimiento de las solicitudes que se originan en el mismo cliente mediante el uso de cookies.
A partir del aumento de la popularidad de los contenedores, las empresas comenzaron a ofrecer formas para gestionarlos, independientemente de si tienen estado, utilizando el almacenamiento de datos, Kubernetes y StatefulSets. Ahora, el estado se convirtió en una parte importante del almacenamiento en contenedores y la pregunta ya no es si conviene utilizar este tipo de contenedores, sino cuándo.
Motivos para elegir Red Hat
Cuando se trata de sistemas con estado o sin él, Red Hat tiene todo lo que necesitas. Ya sea que estés organizando contenedores con estado en nuestra plataforma de aplicaciones de nube híbrida o en Red Hat® OpenShift® o que estés diseñando un entorno unificado para el desarrollo de aplicaciones con Red Hat Application Foundations, contarás con el respaldo de nuestro soporte galardonado y de nuestro ecosistema de partners.
Red Hat OpenShift ofrece una plataforma de aplicaciones de nube híbrida unificada y centrada en la seguridad que permite que las empresas agilicen la innovación al modernizar el desarrollo y la implementación de las aplicaciones y los procesos operativos. Además, brinda funciones que respaldan a las aplicaciones con estado, como StatefulSets en Kubernetes. Con Red Hat OpenShift Data Foundation, puedes gestionar los datos con estado con una solución que ofrezca almacenamiento definido por software y que permita la implementación de volúmenes permanentes. Red Hat OpenShift también integra aplicaciones con estado en los flujos de trabajo de DevOps.Red Hat OpenShift Pipelines está diseñada para ejecutar cada paso del canal de CI/CD, que respalda las pruebas y la implementación de las cargas de trabajo con estado y sin estado.
Red Hat Application Foundations permite crear servicios y organizarlos, conectar las aplicaciones, transformar los datos, transmitir mensajes de forma inmediata, recopilar datos modificados y gestionar las API. Gracias a que combina todas estas funciones con una cadena de herramientas y una plataforma creadas en la nube, respalda el proceso completo de desarrollo de las aplicaciones modernas.
Si Red Hat OpenShift y Red Hat Application Foundations se utilizan en conjunto, se proporcionará una plataforma ideal para desarrollar y distribuir aplicaciones originales de la nube. Nuestros productos te permiten diseñar soluciones, mejorar la productividad de los desarrolladores y promover la innovación para todas tus necesidades, al estilo open source.
Blogs de Red Hat
Aquí encuentras la información más reciente sobre nuestros clientes, partners y comunidades open source.