Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Montée de version d'une instance Liferay - Les ...

Montée de version d'une instance Liferay - Les clés du succès

Avatar for Sébastien Le Marchand

Sébastien Le Marchand

May 23, 2012

More Decks by Sébastien Le Marchand

Other Decks in Programming

Transcript

  1. Montée de version d’une instance Liferay Expert Technique – SQLI

    Group Les clés du succès Sébastien Le Marchand
  2. SQLI - Un modèle intégré avec 5 métiers SOLUTION |

    PROGICIELS | AGENCE DIGITALE | CONSEIL | INGÉNIERIE Aller de l’idée à l’accompagnement du changement UNE STRUCTURE INTERNATIONALE 1800 collaborateurs CA 165 M€ Partenaire de Liferay Conseil / intégration / accompagnement à la mise en place de portails collaboratifs
  3. Agenda Etat des lieux et enjeux Mise à jour des

    développements spécifiques  En amont : réaliser des développements facilitant la mise à jour  Méthode de mise à jour des portions de code issues de la version précédente Problématiques avancées liées aux données  Réaliser une procédure de mise à jour de données spécifique  Migration de données multi-sources Conclusion
  4. Les ingrédients d’une montée de version… Mise à jour d’une

    instance = Mise à jour de la configuration + Mise à jour logiciel standard + Mise à jour standard des données + Mise à jour logiciel spécifique + Mise à jour spécifique des données
  5. … et la recette 1) Préparation  Adapter la configuration

    à la nouvelle version  Adapter les développements spécifiques à la nouvelle version 2) Déploiement  Installer une instance vierge dans la nouvelle version  Installer les plugins spécifiques (développements & configuration)  Connecter l’instance aux données existantes (DB + FS)  Démarrer…  Liferay met à jour automatiquement les données
  6. Plus de détails  Suivant les versions source et destination,

    il peut y avoir des spécificités dans la procédure : toujours se référer à la procédure officielle communiquée par Liferay  Les montées de version vers les service packs peuvent être évitées par l’usage des “Hotfixes”  Les fichiers portal-legacy-*.properties facilitent l’adaptation de la configuration  L’adaptation des développements spécifiques représente en général l’essentiel de l’effort à fournir
  7. Quels développements spécifiques ?  Plugins “Portlet”  Plugins “Theme”

     Plugins “Layout Template”  Plugins “Web”  Plugins “Hook”  Plugins “Ext” Mise à jour = 1. Build  correction erreurs 2. Deploy  correction erreurs 3. Test  correction erreurs Mise à jour = 1. Inspection et adaptation du code source 2. Build  correction erreurs 3. Deploy  correction erreurs 4. Test  correction erreurs
  8. Hook & Ext : comment faciliter et sécuriser la mise

    à jour en amont ? Bonnes pratiques pour la réalisation de développements spécifiques :  Faire la chasse aux copier-collers qui devront être migrés  Isoler et délimiter les développements spécifiques
  9. Inclusion de la JSP originale  Pour des ajouts avant

    et/ou après le code original  Exemple : ajouter un bandeau en tête de la portlet de login Code original Code spécifique Code spécifique <%@ include file= "login.portal.jsp" %> /html/portlet/login/login.jsp
  10. Faire usage de l’héritage de classe  Concerne essentiellement les

    plugins “Ext”  Exemple : classe com.liferay.portal.util.PortalImpl PortalImpl +getHomeURL() CustomPortalImpl +getHomeURL() ext-spring.xml <bean id="com.liferay.portal.util.PortalUtil" class=" ..."> <property name="portal"> <bean class=“....CustomPortalImpl" /> </property> </bean>
  11.  Pour accéder depuis un plugin à une classe du

    portail  Procédé déjà utilisé nativement • com.liferay.portal.kernel.util.PrefsPropsUtil • com.liferay.portal.kernel.util.PropsUtil • … ROOT.war Faire usage de l’introspection portal-impl.jar AssetUtil monplugin-hook.war AssetUtil << introspection >> portal-service.jar PortalClassInvoker
  12. …encore un peu plus d’introspection  Pour accéder à une

    méthode privée L’abus d’introspection peut être dangereux pour votre application Class clazz = … ; java.reflect.method m = clazz.getDeclaredMethod(…); … m.setAccessible(true); m.invoke(…);
  13. Délimiter le code spécifique  Délimiter le code spécifique par

    des blocs de commentaires • Ajouts • Modifications • Suppressions  Déporter les blocs de taille importante dans des fichiers JSPF <!-- BEGIN CUSTOM CODE --> … … <!-- END CUSTOM CODE --> <!-- BEGIN CUSTOM CODE --> <%@ include file="mypage.jspf" %> <!-- END CUSTOM CODE -->
  14. Préserver le code issue de Liferay  Des copier-collers de

    code depuis Liferay resteront toujours inévitables dans certains cas • Dans certaines JSP • Dans certaines méthodes redéfinies  Ces portions de code  Ne doivent pas être reformatées  Ne doivent pas être refactorées  Doivent être délimitées par des commentaires (pour les classes Java)
  15. Méthode de mise à jour et outils  Mettre en

    regard • Le fichier natif de la version source • Le fichier modifié à partir de la version source • Le fichier natif de la version cible  Des outils adaptés • WinMerge • MeId • Kdiff3 • Araxis Merge • …  Adopter une méthode systématique • Plusieurs approches possibles
  16. Mise à jour spécifique des données  Des données spécifiques

    peuvent être dépendantes d’une version de Liferay  Exemple : préférence de portlet référençant une image dans Liferay 6.0  Possibilité d’implémenter des “upgrade process” au sein des plugins spécifiques
  17. Migration de données multi-sources  Plusieurs instances Liferay sources en

    version X  Une instance Liferay cible en version Y  Procédure 1. Montée de version sur chaque instance source 2. Export des données concernées au format LAR 3. Import des fichiers LAR  Problématiques périphériques • Dates de création et de modification • Identité des utilisateurs
  18. Pour bien aborder ses montées de version  Réduire au

    maximum certains développements spécifiques  Appliquer des bonnes pratiques lors de la réalisation des développements  Trouver le bon rythme • Evaluer les avantages de chaque montée de version potentielle • Considérer les Hotfixes • Ne pas attendre jusqu’à devoir faire un saut de géant (4.3  6.1)  Suivre les procédures communiquées par Liferay  Gérer chaque montée de version comme un vrai projet
  19. Des questions ? Sébastien Le Marchand SQLI Group [email protected] www.sqli.com

    @slemarchand www.entreprise-collaborative.fr Merci !