Está en la página 1de 18

Space-Based

Architecture.
Angela Acosta
Juan Pablo Caro
Es un patrón de arquitectura de software para lograr la  escalabilidad lineal de
aplicaciones de alto rendimiento con estado utilizando el paradigma del espacio
de tuplas. Con esta arquitectura las aplicaciones se construyen a partir de un
conjunto de unidades autosuficientes, conocidas como unidades de
procesamiento (PU). Estas unidades son independientes entre sí, por lo que la
aplicación puede escalar agregando más unidades.
El patrón de arquitectura basada en el
espacio esta diseñado específicamente para
abordar y resolver problemas de
escalabilidad y concurrencia.
También es un patrón de arquitectura de uso
completo para aplicaciones que tienen
volúmenes de usuarios concurrentes,
variables e impredecibles.
La alta escalabilidad se logra
eliminando la restricción de la base
de datos central y utilizando en su
lugar cuadrículas de datos
replicados en memoria.
La arquitectura basada en el espacio
está diseñada para evitar el colapso
funcional bajo una gran carga al dividir
tanto el procesamiento como el
almacenamiento entre múltiples
servidores.
La arquitectura basada en el espacio está diseñada con el objetivo de
capacitar a los sistemas de software para que funcionen incluso
bajo la gran cantidad de usuarios. Esto se logra dividiendo tanto el
procesamiento como el almacenamiento entre varios
servidores. Los datos se distribuyen en muchos nodos.
 
Los datos de la aplicación se guardan en la memoria y se replican entre
todas las unidades de procesamiento activas. Las unidades de
procesamiento pueden iniciarse y apagarse dinámicamente a medida
que aumenta y disminuye la carga de usuarios, abordando así la
escalabilidad variable. Debido a que no hay una base de datos central, se
elimina el cuello de botella de la base de datos, lo que proporciona una
escalabilidad casi infinita dentro de la aplicación. 
Ventajas

• • Aunque las arquitecturas • La elevada escalabilidad


Se logra un alto
rendimiento gracias al basadas en el espacio no se debe a que se
acceso a los datos en suelen estar desacopladas depende poco o nada de
memoria y a los y distribuidas, son una base de datos
mecanismos de dinámicas, y las centralizada, con lo que
almacenamiento en sofisticadas herramientas se elimina esencialmente
caché incorporados en basadas en la nube este cuello de botella
esta pauta. permiten “empujar” limitante de la ecuación
fácilmente las aplicaciones de la escalabilidad.
a los servidores,  
simplificando su
despliegue.
Componentes
Unidad de procesamiento:

La unidad de escalabilidad y conmutación por error. Normalmente, una unidad de procesamiento se


construye a partir de un contenedor POJO (Plain Old Java Object), como el proporcionado por Spring
Framework .

Modelo de servicios impulsado por POJO:

Un modelo de servicios livianos que puede tomar cualquier implementación estándar de Java y convertirla
en un servicio distribuido débilmente acoplado. El modelo es ideal para la interacción con servicios que se
ejecutan dentro de la misma unidad de procesamiento.

Contenedor impulsado por SLA:

El contenedor controlado por SLA permite la implementación de la aplicación en un grupo dinámico de


máquinas basado en acuerdos de nivel de servicio. Las definiciones de SLA incluyen la cantidad de
instancias que deben ejecutarse para cumplir con las políticas de conmutación por error y escalado de
aplicaciones, así como con otras políticas.
• Es una práctica común crear particiones separadas que aíslen los datos
transaccionales volátiles y ampliamente utilizados de los datos no activos, para
reducir la huella de memoria de la cuadrícula de datos en memoria dentro de
cada unidad de procesamiento.

• Desde la perspectiva de la implementación del producto, puede implementar


muchos de los componentes de la arquitectura en este patrón a través de
productos de terceros como GemFire, JavaSpaces, GigaSpaces, IBM Object Grid,
nCache y Oracle Coherence.

• Debido a que la implementación de este patrón varía mucho en términos de costo


y capacidades (particularmente tiempos de replicación de datos), como arquitecto,
primero debe establecer cuáles son sus objetivos y necesidades específicos
antes de realizar cualquier selección de producto.
Middleware virtual
Un modelo de clúster y tiempo de ejecución común, que se utiliza en toda la pila
de middleware . Los componentes centrales de middleware en una arquitectura
típica de SBA son:

Componentes Descripción
Cuadricula de mensajería Maneja el flujo de transacciones entrantes, así
como la comunicación entre servicios
Cuadricula de datos Administra los datos en la memoria distribuida
con opciones para sincronizar esos datos con
una base de datos subyacente
Rejilla de procesamiento Componente de procesamiento paralelo basado
en el patrón maestro / trabajador (también
conocido como patrón de pizarra ) que permite el
procesamiento paralelo de eventos entre
diferentes servicios
Consideraciones
• El patrón de arquitectura basada en el espacio es costosa de implementar.

• Es una buena opción de arquitectura para pequeños aplicaciones basadas en web


con carga variable (por ejemplo, sitios de redes sociales, sitios de pujas y
subastas). Sin embargo, no es adecuado para aplicaciones de bases de datos
relacionales a gran escala con grandes cantidades de datos operativos.

• Aunque el patrón de arquitectura basada en el espacio no requiere almacén de


datos centralizado, normalmente se incluye uno para realizar la carga inicial de la
cuadrícula de datos en memoria y las actualizaciones de datos persistentes de
forma asíncrona realizadas por las unidades de procesamiento.
Atributos de calidad
Agilidad general
Calificación: alta

Análisis: la agilidad general es la capacidad de responder rápidamente a


un entorno en constante cambio. Debido a que las unidades de
procesamiento (instancias implementadas de la aplicación) se pueden
activar y desactivar rápidamente, las aplicaciones responden bien a los
cambios relacionados con un aumento o disminución en la carga de
usuarios (cambios de entorno).
Las arquitecturas creadas con este patrón generalmente responden bien
a los cambios de codificación debido al tamaño pequeño de la aplicación
y la naturaleza dinámica del patrón.
Facilidad de implementación
Calificación: alta
Análisis: aunque las arquitecturas basadas en el espacio generalmente
no están desacopladas ni distribuidas, son dinámicas y las sofisticadas
herramientas basadas en la nube permiten que las aplicaciones se
"envíen" fácilmente a los servidores, lo que simplifica la implementación.

Testeabilidad
Calificación: baja
Análisis: Lograr cargas de usuarios muy altas en un entorno de prueba
es costoso y requiere mucho tiempo, lo que dificulta probar los aspectos
de escalabilidad de la aplicación.
Rendimiento
Calificación: Alta

Análisis: El alto rendimiento se logra mediante el acceso a datos en


memoria y los mecanismos de almacenamiento en caché integrados en
este patrón.

Escalabilidad
Calificación: alta

Análisis: la alta escalabilidad proviene del hecho de que hay poca o


ninguna dependencia de una base de datos centralizada, por lo que
esencialmente se elimina este cuello de botella limitante de la ecuación
de escalabilidad.
Facilidad de desarrollo
Calificación: baja

Análisis: Los sofisticados productos de cuadrícula de datos en memoria


y almacenamiento en caché hacen que este patrón sea relativamente
complejo de desarrollar, principalmente debido a la falta de familiaridad
con las herramientas y los productos utilizados para crear este tipo de
arquitectura. Además, se debe tener especial cuidado al desarrollar este
tipo de arquitecturas para asegurarse de que nada en el código fuente
afecte el rendimiento y la escalabilidad.

También podría gustarte