- Comprendre ce que sont les instances virtuelles dans Liferay
- Identifier les limites et les risques des instances virtuelles mutiples
- Critères pour décider du recours aux instances virtuelles
- Présentation jouée pendant le meetup du 24 janvier 2018 (https://www.meetup.com/fr-FR/Liferay-France-User-Group/events/245254079/)
2. Le programme
• Qui suis-je ?
• Instances virtuelles : quésaco ?
• Séquence déminage !
• Que retenir?
3. Sébastien Le Marchand
• 10 ans d’expérience sur la technologie Liferay
o depuis Liferay version 4.3 (2007)
• Dont 6 ans au sein d’un intégrateur “Gold Service Partner”
Consultant Technique indépendant
@slemarchand linkedin.com/in/slemarchand
4. Instances virtuelles : quésaco ?
Petits rappels sur la notion d’instance virtuelle dans Liferay
5. Instance virtuelle Liferay a.k.a…
versions antérieures à Liferay 7
modèle de données Liferay
hors du monde Liferay (notion de « multi-tenancy »)
= Portal Instance
= Company
= Tenant
9. Use case « clones »
• La plupart des modules custom déployés sont utilisés
par chacune des instances virtuelles
• Pilotage projet unique
10. Use case « fourre-tout »
• La plupart des modules custom déployés ne sont utilisés
que par 1 seule des instances virtuelles
• Une équipe projet par instance virtuelle
11. Motivations : coût et délais !
• Réduction du délais de mise en place d’une nouvelle
company
• Réduction du coût d’infrastructure
o Mise en place
o Exploitation pendant le RUN
• Réduction du coût de licences
13. Accès depuis un seul domaine
• Utile temporairement dans des cas très particuliers
• Dispositif à mettre en place sur le poste client
o Soit modifier son fichier local /etc/hosts
o Soit utiliser un proxy local comme Charles Proxy ou Fiddler
15. Isolation des customisations via le
code
if(company.getWebId().equals("DeliciousTapas")) {
// Code de la customisation
...
}
16. Upgrade et maintenance
• Un upgrade de Liferay impactera toutes les instances
o Nécessité de synchroniser la mise à niveau des développements spécifiques
de l’ensemble des projets
• Un redémarrage sur du serveur d’application impactera toutes les
instances…
• Etc.
17. Portal properties
• Les propriétés sont surchargées dans le portal-ext.properties et
partagées entre toutes les instances…
• ... Sauf quelques propriétés dans d’ éventuels fichiers de la forme
portal-<companyId>.properties
• Présent pour des raisons de comptabilité legacy mais déconseillé par
Liferay
• Limités à très peu de propriétés
20. Identification des entrées de log
• Pour des composants custom spécifiques à une instance virtuelle, le
logger name fournit l’information
• Plus compliqué pour des composants partagés custom ou natifs
• Utilisation d’un filtre de servlet et du MDC* de Log4j pour injecter le virtual host
dans les informations de log
* : Mapped Diagnostic Context
21. Rollback des données
• En cas de nécessité de rollback data sur une instance…
• … le rollback impactera l’ensemble des instances
virtuelles !
22. Isolation des problèmes de perf
• Sur-consommation CPU ou fuite mémoire
o Même lorsque lorsque le composant fautif est dédié à une instance virtuelle
particulière, la dégradation de service touche toutes les instances
• Diagnostiquer l’instance virtuelle à l’origine du problème peut être
difficile
• L’emploi d’un APM bien paramétré facilitera les diagnostics
o New Relic, Dynatrace, AppDynamics etc
24. Eviter les instances virtuelles Liferay ?
Multiples facteurs à prendre en compte :
• Combien d’instances mutualisées sur la même plateforme ?
• Combien d’équipes d’équipe projet différentes ?
• Similitude des applications déployées ?
• Criticité des applications déployées ?
• Capacité à la mise en place des alternatives ?
• …
25. Nécessite une
licence pour
chaque container
Alternative « isolation totale »
www.super-site.paris
web.hello-liferay.fr
delicious-tapas.es
Tomcat
JVM
Liferay
Tomcat
JVM
Liferay
Tomcat
JVM
Liferay
26. Infrastructure
matérielle partagée
Processus séparés
Schémas de
données séparés
Nécessite une
licence pour
chaque Tomcat
Alternative « isolation intermédiaire »
www.super-site.paris
web.hello-liferay.fr
delicious-tapas.es
Tomcat
JVM process
Liferay
Tomcat
JVM process
Liferay
Tomcat
JVM process
Liferay
27. Mes recommandations *
En amont du projet
Tenter systématiquement de pousser une alternative aux instances
virtuelles
Au démarrage du projet
Informer tous les intervenants des limites induites par le multi-instances
Pendant le projet
Traiter au plus tôt les limites du multi-instances
* : subjectif
Je vais commencer me présenter très brièvement
On va faire un rappel sur la notion même d’instances virtuelles dans Liferay
Puis, dans la partie « séquence déminage » on enchaînera sur la revue de différentes pièges liés aux instances virtuelles et on verra aussi bien sur comment les éviter ou au moins les atténuer !
- 10 ans de Liferay au compteur
- Freelance
Petit point terminologie
Exemple
Rajouter derrière un slide avec un diagramme représentant le use-case « fourre-tout »