Resolver Problemas Consiga ayuda para problemas específicos con sus proyectos, procesos y tecnologías.
Este artículo es parte de nuestra guía: Guía Esencial: Aumenta el uso de servicios y aplicaciones en la nube

Cuatro opciones para manejar aplicaciones con estado en la nube

Las aplicaciones con estado en la nube representan un desafío constante para los equipos de desarrollo y operaciones. Revise cuatro formas de abordar esos problemas y mantener sus aplicaciones funcionando sin problemas.

Cuando una aplicación admite un proceso comercial que requiere múltiples pasos para completarse, cada paso debe producirse con conocimiento del proceso general. Este concepto se conoce como contexto o estado. Y, para garantizar que las aplicaciones con estado puedan realizar un seguimiento de cada paso de un proceso, los equipos de desarrollo deben habilitar el control del estado, una tarea complicada que se hace aún más compleja en la nube.

El control del estado enfrenta tres desafíos para la computación en la nube. En primer lugar, las ubicaciones de alojamiento para los componentes de la aplicación pueden variar, lo que significa que el rendimiento de las conexiones que pasan mensajes entre esos componentes también variará.

Segundo, los equipos de desarrollo pueden crear copias de los componentes de la aplicación para procesar el trabajo en paralelo, pero cada uno de estos componentes tiene que mantener el contexto por separado. Y tercero, un componente de la aplicación podría fallar y, si no puede ser sustituido libremente por otro componente, la resiliencia sufrirá.

Si bien es difícil proporcionar recomendaciones rápidas sobre cómo administrar aplicaciones con estado en la nube, existe una regla universal: Nunca guarde datos dentro de un componente de aplicación como una variable del programa. Si el componente falla, esa información se pierde. Y, si ese componente escala, los datos aún podrían estar allí, pero el próximo evento de procesamiento podría enviarse al entorno de alojamiento incorrecto, donde los datos no están disponibles. Por esta razón, las plataformas sin servidor, como AWS Lambda, prohíben el almacenamiento interno de datos.

Además de esa regla, existen cuatro formas amplias de superar los desafíos de control de estado en la computación en la nube, todos los cuales tienen sus altibajos.

Equilibrio de carga con estado

La primera opción es usar el equilibrio de carga con estado para distribuir el trabajo de la aplicación. En este modelo, un equilibrador de carga mantiene el estado de un mensaje dentro de una secuencia de mensajes.

Probablemente haya un centenar o más de productos de equilibrio de carga con estado. Sin embargo, dado que este enfoque supone que los componentes de su aplicación mantienen el estado, no use esta técnica para nuevas aplicaciones. En su lugar, solo reequipe las aplicaciones antiguas para admitir una escalabilidad y resiliencia limitadas.

Control de estado de front-end

La segunda opción es el control de estado del front-end. Con este enfoque, la fuente de un mensaje o un evento dentro de una transacción –como una interfaz gráfica de usuario (GUI) o dispositivo móvil– mantiene el conocimiento de la transacción en general, así como el lugar de cada mensaje en la secuencia de esa transacción. La fuente del mensaje también almacena los resultados intermedios entre las etapas de procesamiento. De esta forma, cada mensaje contiene todo lo que necesita procesarse, por lo que los componentes de la aplicación no necesitan conocimiento del estado.

La desventaja de este enfoque es que complica la interfaz gráfica de usuario de front-end o la aplicación móvil que genera los mensajes en primer lugar, ya que ahora necesita mantener el estado.

Control de estado de back-end

El tercer método es el control de estado de back-end. En este enfoque, cada componente de aplicación que necesita saber dónde está en una secuencia de pasos recupera esa información, y cualquier información intermedia, de una base de datos. Esto todavía significa que el origen del mensaje de la interfaz debe identificar una serie de mensajes con una identificación de transacción o algún código único, pero eso es una simple adición.

El problema con el control de estado de back-end es que puede presentar retrasos de procesamiento significativos mientras un componente recupera su estado. La duración del retraso varía según el lugar donde se encuentre el componente en la nube, en relación con la base de datos.

Orquestación

La cuarta opción para administrar aplicaciones con estado en la nube es a través de la orquestación. Las herramientas de orquestación, como las Funciones de paso de AWS, utilizan un modelo de procesamiento para secuenciar pasos y proporcionar capacidades de programación para garantizar la finalización de cada paso. Estas herramientas también almacenan datos de un paso para usar en otro.

Hay muchos enfoques de orquestación como medio para controlar el estado, incluidos los sistemas distribuidos como Amazon, Google y Microsoft, y las herramientas que ofrecen, así como tecnologías como buses y colas de mensajes. Es posible que estos últimos no sean tan amigables con la nube como los primeros, pero sí tienen la ventaja de ser aplicables tanto a la nube como al centro de datos.

Elija un enfoque de gestión para aplicaciones con estado

Cómo superar los desafíos de control del estado en la computación en la nube debería depender de su aplicación. La gran pregunta que debe responder es cómo llegan las cargas de trabajo a los componentes de su aplicación, desde qué fuentes y en qué contexto. Generalmente, los desarrolladores diseñan aplicaciones web y móviles con procesos frontales basados en servidores web y transferencia de estado representativo. Si los equipos pueden sintonizar estos entornos para proporcionar ID de transacción o números de secuencia para unir mensajes individuales, entonces el mecanismo de control de estado del front-end es el mejor.

Si el enfoque del front-end no funciona porque ya ha escrito una aplicación y no puede cambiarla fácilmente, considere la opción de equilibrio de carga con estado. Este método es particularmente valioso si las aplicaciones son monolíticas, en lugar de en componentes, porque puede aplicarlas sin realizar cambios en la aplicación.

Para microservicios dinámicos y aplicaciones de procesamiento de eventos, la mejor estrategia depende de las fuentes que alimentan los componentes de su aplicación. Los microservicios que se comparten entre muchas aplicaciones deben confiar en esas aplicaciones para proporcionar identidades de contexto o de transacción, que luego los desarrolladores pueden usar para aplicar el control de estado de back-end. Solo tenga cuidado de que la base de datos de su estado sea fácilmente accesible desde cualquier entorno de alojamiento que use.

Para aplicaciones de procesamiento de eventos donde los elementos frontales, como un sensor, no pueden proporcionar contexto, la orquestación es la única opción.

El diseño de la aplicación es una consideración general importante. Defina sus requisitos de control de estado en la fase de desarrollo, o arriesgue no tener una estrategia cuando implemente.

Este artículo se actualizó por última vez en julio 2018

Inicie la conversación

Envíenme notificaciones cuando otros miembros comenten sobre este artículo.

Por favor cree un Nombre de usuario para poder comentar.

- ANUNCIOS POR GOOGLE

Close