Aplicación con estado

Una aplicación con estado es un programa que guarda los datos del cliente de las actividades de una sesión para usarlos en la siguiente. Los datos que se guardan se denominan estado de la aplicación.

Las aplicaciones pueden tener estado o sin estado. Cuando una aplicación tiene estado, los datos del cliente se almacenan localmente o en un host remoto hasta que el usuario cierra la sesión o la sesión expira después de un límite de tiempo predeterminado. Los datos de la sesión que se guardan en el almacenamiento en disco persistente son accesibles para el servidor, el cliente y otras aplicaciones.

HTTP, por otro lado, es inherentemente sin estado. Un servidor web no retiene información de varias sesiones, por lo que cuando se necesita un estado para una aplicación web, debe estar integrado. Si lo desea, las funciones con estado pueden integrarse con páginas dinámicas. Estas páginas pueden retener sesiones mediante variables de dirección web y datos almacenados del lado del servidor y del cliente. Las cookies son una forma común de almacenar dichos datos.

La mayoría de las aplicaciones de escritorio y los sistemas operativos tienen estado. Sin embargo, en los primeros días de la computación en la nube, se alentó a los desarrolladores a crear aplicaciones sin estado, porque las aplicaciones con estado no se escalaban bien en la arquitectura virtualizada y distribuida de la nube. Limitar los almacenes de datos a ubicaciones específicas era difícil en un entorno en el que las propias máquinas virtuales no tenían estado; el resultado fue que las aplicaciones con estado que se movían directamente a la nube a menudo se volvían inestables.

La contenerización puede estar cambiando eso. Este método de virtualización a nivel de sistema operativo para implementar y ejecutar aplicaciones distribuidas, sin iniciar una máquina virtual completa para cada aplicación, permite que los archivos se introduzcan en el contenedor durante el inicio y que persistan en otro lugar cuando los contenedores se detienen y se inician. Kubernetes 1.3 de Google, por ejemplo, agrega soporte para aplicaciones con estado en un producto llamado Pet Sets, que permite que los hosts sean nombrados y persistan más allá de los reinicios del contenedor. FlexVolume y Mesos también proporcionan volúmenes persistentes para los datos de estado de los contenedores.