ENT libre - retour expérience Grails

2,010 views
1,927 views

Published on

Retour d'expérience Grails sur le projet ENT Libre initiée par la Région Île-de-France.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,010
On SlideShare
0
From Embeds
0
Number of Embeds
759
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • ENT libre - retour expérience Grails

    1. 1. L’ENT Libre Retour d’expérience Grails Franck Silvestre Toulouse JUG 19/01/2012Franck Silvestre - 2012, tous droits réservés
    2. 2. Qui suis-je ? Où vais je ? ... Création Fylab ENT Eliot Création Ticetime 1998 2009 2012 1994 2000 2006 2011 Disponibilité Directeur technique Prof. de maths OMT/Fylab Maître de Conférence Associé Université Paul Sabatier Laboratoire IRIT - équipe SIERA - EIAHFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    3. 3. Qui suis-je ? Où vais je ? ... Création Fylab ENT Eliot Création Ticetime 1998 2009 2012 1994 2000 2006 2011 Disponibilité Directeur technique Prof. de maths OMT/Fylab Maître de Conférence Associé Université Paul Sabatier Laboratoire IRIT - équipe SIERA - EIAH franck.silvestre@ticetime.comFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    4. 4. Sommaire • Contexte du projet ENT Libre - Contexte général - Éliot • Introduction technique - Pourquoi Grails ? - Architecture du projet • Focus 2.x - Grails & Maven, Jackrabbit • Focus 3.x - Grails & le Cloud : GitHub, Cloudbees - Grails & Spring Security, Liquibase, les ressources statiques, • Sur la productivité, les performances • Q&RFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    5. 5. Sommaire • Contexte du projet ENT Libre - Contexte général - Éliot • Introduction technique - Pourquoi Grails ? - Architecture du projet • Focus 2.x - Grails & Maven, Jackrabbit • Focus 3.x - Grails & le Cloud : GitHub, Cloudbees - Grails & Spring Security, Liquibase, les ressources statiques, • Sur la productivité, les performances • Q&RFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    6. 6. Contexte généralFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    7. 7. Contexte général • Environnement Numérique de Travail • Appel d’offre de la Région Île-de-France en 2009 - 12 à 24 M€ sur 6 ans - environ 475 lycées - 1 300 000 comptes ciblés - Projet Open Source • Consortium Fylab / Logica / Prosodie / Education & Territoire • Depuis 2009 - Région Rhône-Alpes - CG93, ...Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    8. 8. Contexte général • Environnement Numérique de Travail • Appel d’offre de la Région Île-de-France en 2009 - 12 à 24 M€ sur 6 ans - environ 475 lycées - 1 300 000 comptes ciblés - Projet Open Source • Consortium Fylab / Logica / Prosodie / Education & Territoire • Depuis 2009 - Région Rhône-Alpes - CG93, ... http://lilie.iledefrance.fr/fr/accueil http://www.lilie.org/Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    9. 9. Éliot • La composante Fylab : l’ENT Eliot • Services métiers - cahier de textes - notes et absences - espaces de travail - agenda partagés, emploi du temps • Quelques chiffres - environ 20 années hommes - environ 100 000 LOC Groovy (hors Js, GSP !)Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    10. 10. Sommaire • Contexte du projet ENT Libre - Contexte général - Éliot • Introduction technique - Pourquoi Grails ? - Architecture du projet • Focus 2.x - Grails & Maven, Jackrabbit • Focus 3.x - Grails & le Cloud : GitHub, Cloudbees - Grails & Spring Security, Liquibase, les ressources statiques, • Sur la productivité, les performances • Q&RFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    11. 11. Pourquoi Grails ?Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    12. 12. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = funFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    13. 13. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = funFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    14. 14. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = fun Année 2005 + Open Source + Web + productivité + = funFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    15. 15. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = fun Année 2005 + Open Source + Web + productivité + = funFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    16. 16. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = fun Année 2005 + Open Source + Web + productivité + = fun Année 2008 + = Java + Open Source + Web + productivité + funFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    17. 17. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = fun Année 2005 + Open Source + Web + productivité + = fun Année 2008 + = Java + Open Source + Web + productivité + funFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    18. 18. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = fun Année 2005 + Open Source + Web + productivité + = fun Année 2008 + = Java + Open Source + Web + productivité + fun +Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    19. 19. Architecture du projet Éliot- Modules Éliot Éliot-textes Éliot-docs Éliot-temps Éliot- ... messagerie Services commun Socle Éliot Accès au socle Lilie Accès aux référentiels Éliot Référentiel Référentiel Référentiel Socle Lilie Éliot Éliot Éliot métier messages documents http://ticetime-blog.blogspot.com/2011/02/presentation-generale-de-grails-et-de.htmlFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    20. 20. Sommaire • Contexte du projet ENT Libre - Contexte général - Éliot • Introduction technique - Pourquoi Grails ? - Architecture du projet • Focus 2.x - Grails & Maven, Jackrabbit • Focus 3.x - Grails & le Cloud : GitHub, Cloudbees - Grails & Spring Security, Liquibase, les ressources statiques, • Sur la productivité, les performances • Q&RFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    21. 21. The mvn «hell»Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    22. 22. The mvn «hell» ! Objet : ! question sur le patch de grails-maven-plugin ! Date : ! 13 janvier 2012 12:05:43 HNEC ! À : !Franck SilvestreFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    23. 23. The mvn «hell» ! Objet : ! question sur le patch de grails-maven-plugin ! Date : ! 13 janvier 2012 12:05:43 HNEC ! À : !Franck Silvestre salut franck, ca va ? tiens, jai une question sur le patch de grails-maven-plugin que tas fait. on sest rendu compte que quand on lance mvn test sur eliot-app-plugin, les testes dintegration se lancent deux fois (sous la condition que tous les tests passent). sur la console on voit: [INFO] [grails:maven-test {execution: default-maven-test}] ... [INFO] [grails:maven-test {execution: default}] bizarrement ce comportement se manifeste seulement avec le plugin, pas avec les applis eliot. on a creuse et on a trouve que si on lance mvn grails:test-app, les testes ne se lancent quune seule fois comme il faut. mais cette fois, les testes qui utilisent itext tombent, car il prennent la version ancienne 2.0.8. saurais-tu comment patcher le patch, pour quil sapplique quand on lance mvn grails:test-app aussi ? jai cherche comment mvn test est lie avec grails-maven-plugin/grails:test-app et je ne lai pas trouve.Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    24. 24. The mvn «goodbye» • Migration build Ivy + Gradle + Grails en cours - Repository et artefacts compatibles Maven conservés - Plugin Jenkins, Sonar OKFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    25. 25. Grails et Jackrabbit - le build Plugin Grails : Spring DSL pour injection conditionnelle des services Un projet Java/Groovy «standard»Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    26. 26. Jackrabbit - le run • Stratégie initiale d’exploitation - «repository server» : accès WebDav - Résultats catastrophiques : bugs, perfs,... • Stratégie en cours d’exploitation - embarqué clusterisé - Performances aux RDVFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    27. 27. Sommaire • Contexte du projet ENT Libre - Contexte général - Éliot • Introduction technique - Pourquoi Grails ? - Architecture du projet • Focus 2.x - Grails & Maven, Jackrabbit • Focus 3.x - Grails & le Cloud : GitHub, Cloudbees - Grails & Spring Security, Liquibase, les ressources statiques, • Sur la productivité, les performances • Q&RFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    28. 28. eliot-tdbase • Service pédagogique • Développement Ticetime • Évolutions - PIC : Git, Github, Jenkins as a Service, abandon de Maven - Architecture : découpage plugins plus fin - Plugins externes utilisés : Spring Security, Resources - Plugin technique maison : LiquibaseFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    29. 29. Git, Github et Jenkins As A Service Github : Repository Git «principal» + gestion des issues https://github.com/ticetime/eliot-tdbaseFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    30. 30. Git, Github et Jenkins As A Service Github : Repository Git «principal» + gestion des issues https://github.com/ticetime/eliot-tdbase Cloudbees : Jenkins As AService Build et déploieFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    31. 31. Git, Github et Jenkins As A Service Github : Repository Git «principal» + gestion des issues https://github.com/ticetime/eliot-tdbase Cloudbees : Jenkins As AService Build et déploie environnement de démonstration et repository Maven http://www.ticetime.com/eliot-tdbase http://www.ticetime.com/nexusFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    32. 32. Découpages plugins Éliot-tdbase Éliot-... Éliot-textes- Éliot-notes- Éliot-tdbase- Eliot-tice-plugin plugin plugin plugin Accès aux référentiels Éliot Référentiel Référentiel Éliot Référentiel Éliot métier Éliot documents messagesFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    33. 33. Intégration Spring Security • Plugin supporté par Spring Source • Le besoin - approche RBAC - gestion d’une authentification par défaut pouvant évoluerFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    34. 34. Spring Security - Concepts clés • UserDetail • GrantedAuthority • UserDetailsService • SecurityContextFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    35. 35. Spring Security - Concepts clés utilisateur accédant à l’application • UserDetail • GrantedAuthority • UserDetailsService Notion de rôle • SecurityContext En charge de la création d’un UserDetail après authentification Encapsule UserDetail et GrantedAuthority(s) au sein du thread de traitement de la requête en coursFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    36. 36. Le plugin Spring Security Core • Installation • Lancement du script «s2-quickstart» - créé les classes User, Role et UserRole - crée les vue et les contrôleurs pour la gestion de l’authentification • Utilisation - configuration des URLs via annotations, mapping statique, mapping dynamique - Helper classes SecurityTagLib, SpringSecurityService, SpringSecurityUtils - Méthodes ajoutées aux contrôleurs : isLoggedIn, getPrincipal(), getAutenticatedUser()Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    37. 37. L’intégration dans Eliot • eliot-tice-plugin dépend du plugin spring-security-core • Pas d’utilisation des classes User, Role et UserRole • Implémentation d’un UserDetailService ad-hoc org.lilie.services.eliot.tice.securite.rbac.EliotTiceUser implémente linterface UserDetail définie dans Spring Security org.lilie.services.eliot.tice.securite.rbac.EliotTiceUserDetailsService implémente linterface UserDetailService définie dans Spring SecurityFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    38. 38. L’intégration dans Eliot • Méthodes ajoutées dans les contrôleurs par le plugin eliot - getAuthenticatedPersonne() - getAuthenticatedCompteUtilisateur() - getAuthenticatedAutorite()Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    39. 39. L’intégration dans Eliot • Méthodes ajoutées dans les contrôleurs par le plugin eliot - getAuthenticatedPersonne() - getAuthenticatedCompteUtilisateur() - getAuthenticatedAutorite()Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    40. 40. Mise en oeuvre • Règles de sécurité dans Config.groovyFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    41. 41. Mise en oeuvre • Règles de sécurité dans Config.groovy • Exemple d’utilisation méthode contrôleurFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    42. 42. Grails & Liquibase • Plugin non retenu au final pour Eliot car - trop contraignant sur la localisation des fichiers de migration - trop «lié» à Grails (framework applicatif) pour de la gestion de structure de base de donnéesFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    43. 43. Grails et Liquibase - Approche retenue • Un projet Gradle dédié à la gestion de DB migrationFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    44. 44. Grails et Liquibase - Approche retenue • Un projet Gradle dédié à la gestion de DB migration liquibase SpringLiquibase dataSource changeLog • Un Service injecté dans les ... createLiquibase() ... applications Grails eliot-tice-plugin DbMigrationService LiquibaseWrapper liquibase * 1 updateDb() createLiquibase() runUpdate()Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    45. 45. Grails et Liquibase - Approche retenue • Exemple dans eliot-tdbase Dans le fichier «conf/spring/resources.groovy»Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    46. 46. Grails et Liquibase - Approche retenue • Exemple dans eliot-tdbase Dans le fichier «conf/spring/resources.groovy» Dans le fichier «conf/BootStrap.groovy»Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    47. 47. Grails et la gestion des ressources statiques • Le plugin «Resources» • Simple et terriblement efficace • Optimise la mise à disposition des ressources statiques - placement des javascript - «bundle» de javascript - ...Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    48. 48. Grails et la gestion des ressources statiques • Le plugin «Resources» • Simple et terriblement efficace • Optimise la mise à disposition des ressources statiques - placement des javascript - «bundle» de javascript - ...Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    49. 49. Sommaire • Contexte du projet ENT Libre - Contexte général - Éliot • Introduction technique - Pourquoi Grails ? - Architecture du projet • Focus 2.x - Grails & Maven, Jackrabbit • Focus 3.x - Grails & le Cloud : GitHub, Cloudbees - Grails & Spring Security, Liquibase, les ressources statiques, • Sur la productivité, les performances • Q&RFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    50. 50. Sur la productivité • Contexte opérationnel ENT Libre extrêmement contraint - L’opérationnel est «plus fort» que la technique • Grails augmente la productivité des seniors et des juniors • Mais - si pas de senior très présent dans l’équipe qui encadre : «Vietnam Hibernate» garanti ! • Un framework «full stack», quel qu’il soit, nécessite - la compréhension et éventuellement la maîtrise des six couches applicatives - investissement colossal pour tout développeur - Grails/Play/ WebObjects ne résoudront jamais le problème du N+1 Select...Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    51. 51. Sur les performances • Les performances vis à vis de Grails ont été un «non sujet» • Les optimisations nécessaires ont portées sur - les vues ExtJs - l’exploitation Jackrabbit - Le problème du N+1 Select • Grails n’a jamais été mis en cause directementFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    52. 52. Idées en vrac • Statique vs Dynamique - critère négligeable concernant la question de la qualité - Rappel: RoR, WebObjects, Application MacOs, IOs natives,... c’est du dynamique ! - Un langage de programmation est un moyen d’expressionFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    53. 53. Idées en vrac • Statique vs Dynamique - critère négligeable concernant la question de la qualité - Rappel: RoR, WebObjects, Application MacOs, IOs natives,... c’est du dynamique ! - Un langage de programmation est un moyen d’expression « Les limites de mon langage signifient les limites de mon propre monde » WittgensteinFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com
    54. 54. Sommaire • Contexte du projet ENT Libre - Contexte général - Éliot • Introduction technique - Pourquoi Grails ? - Architecture du projet • Focus 2.x - Grails & Maven, Jackrabbit • Focus 3.x - Grails & le Cloud : GitHub, Cloudbees - Grails & Spring Security, Liquibase, les ressources statiques, • Sur la productivité, les performances • Q&RFranck Silvestre - 2012, tous droits réservés w w w.ticetime.com

    ×