Pendant les phases de développement, les temps d’attente et les tâches répétitives ont trop souvent tendance à s’inviter de manière récurrente. Cette session sera l’occasion de découvrir ou redécouvrir des pratiques et des outils pour ne plus perdre de temps et renouer avec la productivité, dans le contexte d’un projet Liferay.
Liferay france symposium 2012 - montée de version d’une instance liferay
Développement : mettez le turbo ! - Liferay France Symposium 2017
1. Développement :
mettez le turbo !
Sébastien Le Marchand
@slemarchand
Liferay France Symposium, 26 avril 2017
2. #LRFRS2017
Le programme
1. A propos d’efficience
2. Coder sans les mains
3. Deployer plus vite que son ombre
4. Et demain ?
3. #LRFRS2017
Sébastien Le Marchand
• 9 ans d’expérience sur Liferay (depuis la version 4.3 en 2007)
• Dont 6 ans au sein d’un intégrateur “Gold Service Partner”
Consultant Technique indépendant
@slemarchand linkedin.com/in/slemarchand
5. #LRFRS2017
« L'efficience est l'optimisation des
outils mis en œuvre pour parvenir à un
résultat. Elle se mesure sous la forme
d'un rapport entre les résultats obtenus
et les ressources utilisées. »
[wikipedia.org]
9. #LRFRS2017
Générer le code trivial
• S’affranchir de l’écriture du code
• Réduire les erreurs
• Garantir l’homogénéité
10. #LRFRS2017
Blade & Co : générer la structure projet
• Blade templates (22)
• Maven archetypes (43)
• Liferay Studio Templates (17)
$ blade create –t mvc-portlet myproject-web
$ mvn archetype:generate -Dfilter=liferay
11. #LRFRS2017
Service Builder : générer les services
• Définition dans un descripteur service.xml
• Couche de persistance : génération complète
• Couche de service métier : génération du squelette
13. #LRFRS2017
A New Hope
(XML Portlet Factory)
1 unique descripteur de
modèle
Modules OSGi « ready-to-go »
myproject-api
myproject-service
myproject-web
14. #LRFRS2017
Il était une fois…
… un projet open-source de la communauté Liferay !
2009 2014 Avril 2017
Jack A. Rider
Création Support Liferay 6.2 Support Liferay 7.0
v4.0-beta1v3.0
Juan Gonzalez Sébastien Le Marchand
17. #LRFRS2017
Just do it!
• Générer les modules via XMLPF
• Ajouter les permission sur la commande gradlew
• Lancer le Service Builder
$ java –jar xmlpf.jar EventsManager.xml <lr-wrk>/modules
$ cd <lr-wrk>/modules/events-manager
$ chmod a+x gradlew
$ ./gradlew buildService
25. #LRFRS2017
Quels usages en pratique pour XMLPF ?
• « Generate & Forget »
• Liberté de ne pas garder
tout le code généré
Composants « Service »
Composants « Web »
Service Builder
29. #LRFRS2017
Développer, c’est souvent attendre !
• Démarrage du serveur local,
• Build du projet,
• Deploiement sur le serveur local
• Première requête (cache vide, compilation JSP, etc)
❸
30. #LRFRS2017
Poste local : Tomcat is King !
• Privilégier Tomcat pour les développements
• Limiter les adhérences au serveur des autres environnements
o Faire la chasse aux dépendances “inutiles”
o Quand la dépendance est nécessaire, prévoir des Mocks
❸
31. #LRFRS2017
Durée des déploiements
Application « Jukebox » :
• Build (blade) en 19,78 secs sans démon Gradle
• Build (blade) en 14,78 secs avec démon Gradle
• Installation du bundle en 3,2 secs
32. #LRFRS2017
JRebel à la rescousse !
JRebel associe le workspace de l’IDE à l’application déployée sur
le serveur local.
À chaque changement d’une classe ou d’une ressource dans
l’IDE, le changement est immédiatement propagé sur vers le
serveur, sans build ni redéploiement.
34. #LRFRS2017
Le « Map Local » de Charles Proxy
• Permet de définir des règles pour re-
router certaines requêtes du navigateur
vers des fichiers locaux
• En pratique, après une configuration
correcte de « Map Local », les ressources
statiques (CSS, JS) sont chargées dans le
browser directement depuis les fichiers
locaux
charlesproxy.com
35. #LRFRS2017
🎉 Possibilité de tester vos
ressources statiques locales en
interaction avec n’importe quel
environnement, y compris la
PRODUCTION ! 🍾
39. #LRFRS2017
Poursuivre la quête de l’efficience
• C’est un combat du quotidien
• Ne pas vivre les obstacles
comme une fatalité
• Recherche permanente de
nouveaux outils et de nouvelles
pratiques