Configuración del caché de Coherence en OSB 12.2.1

Es muy común que nos encontremos con un dilema recurrente, los servicios de utilidad, altamente reutilizados que únicamente obtienen datos de alguna fuente, como por ejemplo los servicios de catálogos, y que la información que proveen no cambia con demasiada frecuencia, ¿Deberían siempre ejecutarse para llegar hasta la fuente de datos? O ¿Deberíamos implementar un mecanismo de replicación/retención de datos para evitar esta situación?

En mi experiencia, la respuesta por muy obvia que parezca, siempre ha causado polémica, y no solo porque involucra varios retos técnicos a resolver, sino que además, en arquitecturas multicapas, que regularmente son administrados por equipos de trabajos diferentes, surge la pregunta ¿Dónde es el mejor lugar para implementar este mecanismo? Y sobre todo ¿De quién es responsabilidad mantener la información sincronizada?

Personalmente creo que depende mucho de la arquitectura global que se tiene y de las herramientas tecnológicas de las que se dispone, considero que el lugar óptimo donde debería estar situado es lo más cercano a la interface que lo expondrá, es decir, si se trata de una aplicación web, implementada por ejemplo con Angular o React, bien pudiera usarse una instancia ligera de almacenamiento de datos, tal como Elasticsearch, o bien, si la aplicación es estilo MVC, podrías hacer uso del caché del servidor web. De igual forma, si tus opciones son limitadas, Weblogic y OSB proveen la capacidad de almacenar en Caché los resultados de invocaciones previas a los servicios. En este artículo encontrarás un poco del funcionamiento interno de este mecanismo, así como también, cómo habilitarlo para tus servicios.

Existe una forma de implementar el almacenamiento en caché off-heap. Internamente, la función de caché de resultados utiliza Oracle Coherence como estrategia de implementación. Oracle Coherence es un producto sofisticado de In-Memory Data Grid incluido en la licencia de OSB. Proporciona diversas implementaciones de memoria de caché incorporadas que se pueden utilizar para almacenar los datos. Una de estas implementaciones se llama Elastic Data y se utiliza para almacenar datos de manera transparente a través de la memoria dinámica de acceso aleatorio (DRAM) y los dispositivos basados ​​en disco. Está especialmente afinado para tomar ventaja de los dispositivos basados ​​en disco de alta velocidad tales como discos de estado sólido (SSD), y permite velocidades cercanas a las de memoria, mientras realiza almacenamiento y lectura de datos de SSD, todo esto sin necesidad de incrementar el número de Managed Servers en el dominio SOA.


Fuente: http://www.ateam-oracle.com/result-caching-in-osb-12c-without-out-of-process-coherence-servers/

Pasos para la configuración
Creación de archivos de configuración personalizados
Lo primero es crear los siguientes archivos:





Nota: Es necesario crear una carpeta vacía en la ruta especificada en el archivo tangosol-coherence-override.xml, un ejemplo de la carpeta y el path son:

/opt/oracle/product/middleware/12.2.1/ssd-mount-point

Colocar ambos archivos en una carpeta del file system dentro del servidor SOA. Por ejemplo:

/opt/oracle/product/middleware/12.2.1/soa/CoherenceConfig

Configuración del Clúster de Coherence
En la consola de administración de Weblogic, ir a Environment, Coherence Cluster, defaultCoherenceCluster.


Clic en el botón Lock & Edit para crear una sesión. Seleccionar el checkbox Use a Custom Cluster Configuration File y copia la ruta del archivo tangosol-coherence-override.xml.

Para este caso es: /opt/oracle/product/middleware/12.2.1/soa/CoherenceConfig/tangosol-coherence-override.xml

Save.


Selecciona el tab Cache Configurations, y luego clic en el botón New.


Introducir los valores especificados en el archivo coherence-cache-config.xml:
  • /osb/service/ResultCache
  • servicebus/result-cache
  • /opt/oracle/product/middleware/12.2.1/soa/CoherenceConfig/coherence-cache-config.xml
Next.


Seleccionar el cluster OSB. Finish.


Activar los cambios.


Ir a Clusters, OSB_CLUSTER.


Seleccionar el tab Coherence y validar que esté seleccionado el valor defaultCoherenceCluster y la opción Local Storage Enabled esté habilitada.


Será necesario reiniciar todos los nodos de OSB, Luego reiniciar el Admin Server.

Habilitar el caché en los Servicios en OSB
Una vez que hemos configurado Coherence, es necesario habilitar la opción para usar el caché en los Business Services que deseas que usen esta característica. Para hacerlo, abre el detalle del servicio y en el tab Performance, selecciona la opción Result Caching Support, selecciona una expresión para definir la llave que hará única a la petición y con esto saber si se trata de una nueva consulta o una que ya está en caché. También selecciona la periodicidad con la que deseas que se realice una nueva consulta hasta la fuente de datos.





Guarda los cambios, despliega de ser necesario y verifica los resultados.

Con esto terminamos la configuración y tus servicios de OSB estarán usando Coherence como caché de memoria.

Sandra Flores es una profesionista independiente con experiencia en Programación y Arquitectura de Software. Con más de 12 años de experiencia en desarrollo de proyectos de TI, Sandra persigue una de sus grandes pasiones, generar productos de calidad, perfeccionados en detalles y enfocados a resolver problemas actuales de las empresas. Sandra es Oracle ACE Associate, y como tal, es conferencista regular en eventos de diversos tipos y en distintas locaciones del mundo, además de publicar constantemente artículos en Oracle Technology Network en Español e Inglés, entradas en su blog personal, webinars, entre otros. Sandra también es instructora certificada por Arcitura, empresa Canadiense ampliamente reconocida en certificaciones SOA, Cloud y Big Data.