El patrón de
arquitectura space-based (también llamado a veces patrón de la
arquitectura de la nube) minimiza los factores que limitan el
escalamiento de la aplicación. Este patrón obtiene su nombre del
concepto de espacio de tupla, la idea de memoria compartida
distribuida. La alta escalabilidad se logra eliminando la restricción
de la base de datos central y utilizando replicas en un grid de datos
de memoria. Los datos de la aplicación se guardan en la memoria y se
replican entre todas las unidades de proceso activas. Las unidades de
procesamiento pueden arrancarse y apagarse dinámicamente a medida
que aumenta y disminuye la carga del usuario, con lo que se aborda la
escalabilidad variable. Debido a que no existe una base de datos
central, el cuello de botella de la base de datos se elimina,
proporcionando escalabilidad casi infinita dentro de la aplicación.
La mayoría de las
aplicaciones que se ajustan a este patrón son sitios web estándar
que reciben una solicitud de un navegador y realizan algún tipo de
acción. Un sitio de subastas de licitación es un buen ejemplo de
esto. El sitio recibe continuamente ofertas de los usuarios de
Internet a través de una solicitud de navegador. La aplicación
recibirá una puja por un elemento en particular, registrará esa
puja con una marca de tiempo y actualizará la última información
de puja para el elemento y enviará la información al navegador.
El componente de la
unidad de procesamiento contiene los componentes de la aplicación (o
partes de los componentes de la aplicación). Esto incluye
componentes basados en web, así como lógica de negocio de back-end.
El contenido de la unidad de procesamiento varía en función del
tipo de aplicación: las aplicaciones basadas en web más pequeñas
probablemente se desplegarán en una sola unidad de procesamiento,
mientras que las aplicaciones más grandes pueden dividir la
funcionalidad de la aplicación en múltiples unidades de
procesamiento basadas en las áreas funcionales de la aplicación. La
unidad de procesamiento contiene típicamente los módulos de
aplicación, junto con un grid de datos en memoria y un almacén
persistente asíncrono opcional para salvar errores. También
contiene un motor de replicación que es utilizado por el middleware
virtualizado para replicar los cambios de datos realizados por una
unidad de procesamiento a otras unidades de procesamiento activas.
El middleware
virtualizado es esencialmente el controlador de la arquitectura y
administra solicitudes, sesiones, replicación de datos,
procesamiento de solicitud distribuida y despliegue de unidades de
proceso. Hay cuatro componentes de arquitectura principales en el
middleware virtualizado: grid de mensajería, grid de datos, grid de
procesamiento y el gestor de despliegue.
Grid de mensajería,
administra la solicitud de entrada y la información de la sesión.
Cuando una solicitud llega al componente middleware virtualizado, el
grid de mensajería determina qué componentes activos de
procesamiento están disponibles para recibir la solicitud y reenvía
la solicitud a una de esas unidades de procesamiento. La complejidad
de grid de mensajería puede ir desde un simple algoritmo round-robin
hasta un algoritmo más complejos.
Grid de datos es
quizás el componente más importante y crucial en este patrón. Grid
de datos interactúa con el motor de replicación de datos en cada
unidad de procesamiento para gestionar la replicación de datos entre
unidades de procesamiento cuando se producen actualizaciones de
datos. Puesto que Grid de mensajería puede enviar una solicitud a
cualquiera de las unidades de procesamiento disponibles, es esencial
que cada unidad de procesamiento contenga exactamente los mismos
datos en su grid de datos en memoria. La replicación de datos
síncrona entre unidades de procesamiento, se hace en paralelo
asincrónicamente y muy rápidamente, a veces completando la
sincronización de datos en cuestión de microsegundos (una
millonésima de segundo).
Grid de
procesamiento es un componente opcional dentro del middleware
virtualizado que gestiona el procesamiento de solicitud distribuida
cuando hay varias unidades de procesamiento, cada una de las cuales
maneja una parte de la aplicación. Si entra una petición que
requiere coordinación entre los tipos de unidades de procesamiento
(por ejemplo, una unidad de procesamiento de pedidos y una unidad de
procesamiento de clientes), es grid de procesamiento la que media y
ordena la solicitud entre esas dos unidades de procesamiento.
El componente de
gestor de despliegue gestiona el arranque dinámico y el apagado de
las unidades de procesamiento en función de las condiciones de
carga. Este componente monitorea continuamente los tiempos de
respuesta y las cargas del usuario, e inicia nuevas unidades de
procesamiento cuando aumenta la carga, y cierra las unidades de
procesamiento cuando la carga disminuye. Es un componente crítico
para lograr las necesidades de escalabilidad variable dentro de una
aplicación.
El modelo de
arquitectura space-based es un patrón complejo y costoso de
implementar. Es una buena opción de arquitectura para aplicaciones
web más pequeñas con carga variable (por ejemplo, sitios de medios
sociales, sitios de pujas y subastas). Sin embargo, no es adecuado
para aplicaciones de bases de datos relacionales de gran escala
tradicionales con grandes cantidades de datos operativos.