4.30.2013

Utilizando un cache distribuido en nuestro middleware – Parte 1

Cuando creamos un middleware para exponer servicios y procesos de negocios estamos aprovechándonos de las capacidades que nos brindan los componentes centralizados de estas arquitecturas – servidores de aplicaciones, bus de servicios, etc. Por ejemplo, del servidor de aplicaciones podemos aprovecharnos de las capacidades adicionales de hosting y trazabilidad, y del bus de servicios ruteo, escalabilidad, desempeño, etc. Sin embargo, existe una característica muy común que normalmente aplicaciones solo a a nivel de aplicación web: el caching.

El caching a nivel web es muy utilizado a través del objeto cache. Sin embargo, este cache esta limitado al uso por parte de la aplicación que lo contiene; es decir, normalmente cuando ponemos variables o recursos en el cache, lo hacemos para que estos puedan ser accedidos por usuarios de un sistema en particular. Por ejemplo, si tenemos varias aplicaciones en un servidor Web, y dos aplicaciones requieren la lista de países, normalmente cada aplicación pone en cache esta lista, por lo tanto la vamos a tener “duplicada”. La siguiente figura nos muestra este escenario.

image

Cache Distribuido

La opción para tener cache en arquitectura distribuida es utilizar un cache que me permita hacer “caching” a nivel de servicio y no a nivel de aplicación. En este esquema, como las diversas capas de presentación solamente consumen servicios entonces vamos a aprovechar la posibilidad que se abre a la hora de que muchos UI ( pantallas ) puedan consumir datos del mismo cache, por lo tanto la aplicación móvil de POS puede acceder el cache de países de la misma forma que el sistema web de compras y facturación lo van a utilizar. Esto garantiza que el uso del cache sea lo más optimizado posible. En el siguiente diagrama se ven las diferencias a la hora de utilizar el caching a nivel de servicios y lógica de negocios.

image

Opciones Disponibles

A nivel de componentes de cache distribuido existen varias opciones como Oracle Coherencia y el Windows AppFabric. Ambas soluciones nos permiten crear un cache de acceso rápido distribuido; es decir, permiten crear un cache compuesto de una hasta cierta cantidad de maquinas – varia por producto – siendo la memoria de estos el espacio total que se tiene para utilizar el cache. En post posteriores vamos a profundizar en el tema de cache de AppFabric y el Oracle Coherencia para .NET.