Projet

Général

Profil

Actions

Feature #12866

fermé

Passer de Apache Jackrabbit à Apache Oak

Ajouté par Miguel Moquillon il y a presque 3 ans. Mis à jour il y a plus d'un an.

Statut:
Closed
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
08/02/2022
Echéance:
% réalisé:

100%

Temps estimé:
Livraison en TEST:
Livraison en PROD:

Description

Malgré le passage de la gestion de la JCR avec Jackrabbit de Silverpeas vers un RAR (Resource Adapter aRchive), des problèmes de montée en charge sont encore rencontrés. Afin de palier à ceux-ci, un mécanisme de répartition de charge peut être mis en place et ceci d'autant plus que Jackrabbit est déployé sous forme de RAR. Toutefois cette solution rencontre deux obstacles majeurs :
  1. Silverpeas ne peut supporter une telle architecture qu'en mode par-session : chaque requête est prise en charge par une passerelle et redirigée vers la bonne instance de Silverpeas en fonction de la session utilisateur ouverte. En effet, actuellement, la gestion des sessions dans Silverpeas ne permet pas de partager celle-ci entre plusieurs instances de Silverpeas.
  2. Apache Jackrabbit n'a pas été pensé à l'origine pour gérer des accès concurrents et, bien que déployé sous forme de RAR, le goulet d'étranglement reste l'accès physique aux données de la JCR.
Trois solutions s'offrent à nous :
  1. Passer Apache Jackrabbit du RAR à une application dédiée avec laquelle s'interfacerait Silverpeas.
  2. Migrer d'Apache Jackrabbit à Apache Oak qui s'avère être une réimplémentation de la JCR ayant mis l'accent sur la montée en charge et des hautes performances.
  3. Migrer d'Apache Jackrabbit à JBoss ModeShape qui met l'accent sur la montée en charge et la haute-disponibilité.
Afin de réduire les coûts de migrations et parce que ModeShare ne semble plus présenter d'évolution depuis 2017, je propose de passer d'Apache Jackrabbit à Apache Oak. Pour ce faire, toutefois, la migration devra satisfaire les points suivants :
  • Une migration des données sans régressions de la JCR d'Apache Jackrabbit à Apache Oak.
  • Vérifier si une réincorporation du code de gestion de la JCR dans Silverpeas est nécessaire.
  • Que le WebDAV puisse continuer à se faire sans trop d'impact dans le code existant.
  • Que notre code qui utilise la JCR ait le minimum d'impact.
  • Que notre implémentation de JAAS avec Jackrabbit pour les accès à la JCR puisse être transposée à Apache Oak.
  • Que les performances globales soient supérieures à celles délivrées par Apache Jackrabbit.

Demandes liées 1 (0 ouverte1 fermée)

Lié à Silverpeas Setup - Feature #12002: Amélioration des performances de la JCRClosedDavid Lesimple20/01/2021

Actions

Mis à jour par Miguel Moquillon il y a environ 2 ans

  • Statut changé de New à In progress...
  • Assigné à mis à Miguel Moquillon

Mis à jour par Miguel Moquillon il y a presque 2 ans

Des PR ont été créés en vue de permettre à l'intégrateur de commencer à faire une revue de code.

Toutefois, si le code est terminé, tout n'est pas encore achevé. Il reste les points suivants :
  • Finir de vérifier que les différentes fonctionnalités autour de la JCR sont ok et corriger les problèmes éventuels
  • Mettre à jour l'installateur pour tenir compte de la nouvelle structuration du support de la JCR dans Silverpeas
  • Tester la migration de Jackrabbit à Oak avec des backups de JCR de clients
  • Tester les performances en terme de montée en charge

Mis à jour par Miguel Moquillon il y a plus d'un an

  • Statut changé de In progress... à Resolved

Le code qui embarque Apache Jackrabbit Oak comme implémentation de la JCR se trouve dans le projet :
https://github.com/SilverTeamWork/Silverpeas-JCR

Son intégration consistera à le pousser vers sa contre-partie officielle à créer dans l'organisation Silverpeas : https://github.com/Silverpeas/Silverpeas-JCR.
Attention, celui-ci dépend de la version 6.4-feature12866 de core-api dans Silvepreas-Core. core-library et core-web dépendent de ce projet. Il sera donc nécessaire de compiler et déployer d'abord core-api de Silverpeas-Core avant de compiler le projet puis tout Silverpeas-Core.
Toutefois, le projet a été déployé sur notre Nexus pour assurer les builds des PR qui en dépendent.

Note : j'ai hésité et j'hésite encore à créer le projet comme sous-projet core-jcr de Silverpeas-Core ; je ne l'ai pas fais car ce projet ne devrait pas nécessiter de modifications importantes dans le temps. Ceci mérite peut être d'en discuter.

De gros changements ont eu lieu dans Silverpeas Core:
  • nettoyage de code sur la JCR avec Jackrabbit 2
  • déplacement de code de core-lib vers core-api et création d'interfaces dans core-api afin de permettre à des projets extérieurs (en l'occurrence ici Silverpeas-JCR) d'utiliser le mécanisme d'authentification de Silverpeas.
  • des renommages de code (cf. JdbcSqlQuery)
  • prises en comptes de retours des analyses de SonarCloud via SonarLint.
Les PR à intégrer :

Mis à jour par Miguel Moquillon il y a plus d'un an

Après réflexion, j'ai fais le choix d'intégrer le projet Silverpeas JCR dans celui Silverpeas Core comme sous projet

Il n'est donc plus nécessaire d'intégrer le projet Silverpeas JCR.

Mis à jour par Yohann Chastagnier il y a plus d'un an

  • Statut changé de Resolved à Integration in progress...

Mis à jour par Yohann Chastagnier il y a plus d'un an

  • Statut changé de Integration in progress... à Closed
  • % réalisé changé de 0 à 100

Validé et intégré dans la branche master.
Le premier build : 6.4-build230604

Mis à jour par David Lesimple il y a plus d'un an

  • Lié à Feature #12002: Amélioration des performances de la JCR ajouté
Actions

Formats disponibles : Atom PDF