vendredi 18 septembre 2009

Oracle coherence

Hier soir, j'ai assisté à la présentation d'Oracle Coherence lors de la réunion de mon JUG préféré ;)
Oracle Coherence est un cache distribué en mémoire. On peut y placer des données issues de sources diverses (fichiers, webservices, base) et permettre ainsi un accès à ces données dans des temps réduits.

Via une API propriétaire, l'accès à la base n'est plus direct. Le chargement des données se fait par l'intermédiaire d'une grille de noeuds qui contient un ensemble de données issu de la base. C'est cette grille qui se charge de la synchronisation avec la base.
La création et la suppression de noeuds peut être dynamique et paramétrable.
C'est un peu comme un système de cache très évolué.

Après la présentation, j'ai eu quelques questions, du type :
Est ce que mon application devient dépendante de ce framework ?
Peut-on se détacher de Coherence à tout moment ?
Comment intégrer Coherence à mon existant ?

Et bien après les questions qui ont suivi je suis un peu dans le flou, ne prenez donc pas ce que j'écris comme une source sure.
Toutefois, ce que j'ai cru comprendre me permet de dire que :
- via l'AOP la dépendance à Cohérence peut être limitée,
- mais l'accès aux données doit forcément passé par cette API. Meme dans le cas ou la grille de noeuds n'est pas accessible, et que mon application accède directement à la base, elle passera forcément par le framework,
- Coherence pourra utiliser votre existant (via l'AOP) pour l'accès (en lecture et en écriture) à votre source de données.

La communication entre les noeuds est optimisée mais reste dépendante de la vitesse du réseau. La performance d'une technologie de ce type dépend la vitesse du réseau et la taille des objects que l'on pose dans le cache distribué. La grille Coherence est donc constituée d'un ensemble de noeuds (un noeud = une JVM) qui se voient sur un réseau de type LAN (>= 100 Mbs) et communiquent grâce à un protocole propriétaire appelé Tangosol Cluster Management Protocol (TCMP). Dans le cas ou un client de la grille (ex : un serveur JEE) ne peut communiquer avec celle-ci que sur un réseau de type WAN alors la communication entre le client et la grille ne se fera pas en TCMP mais sous TCP/IP, ceci avec une légère baisse de performance.


Après une bonne nuit de sommeil, j'aurais encore des questions.
La sécurité à rapidement été évoquée, et j'aimerais tout de même trouver la réponse à :
- il semblerait que la manière de communiquer entre les noeuds ne soient pas cryptée,
- est ce que la communication entre les noeuds et ma source de données est cryptable (pour les webservices ou une base) ?
- si le cryptage se fait avant l'envoi, à la grille, est ce qu'à un moment donné mes données sont décryptées par cohérence ?

Ainsi, l'intégration de Coherence ne se justifie pas tout le temps et doit être longuement étudiée. Il est possible que ca ne soit utile que sur certaines parties d'une application.
On remarquera donc que cette solution semble beaucoup plus évoluée que les solutions actuelles mais ne pourrait convenir qu'à de grosses applications dont le temps d'accès est une problématique.

Voici un lien vers la page officielle pour découvrir d'avantage cette offre d'Oracle.

Aucun commentaire: