L’ENT Libre                               Retour d’expérience Grails                               Franck Silvestre       ...
Qui suis-je ? Où vais je ? ...                               Création Fylab             ENT Eliot         Création Ticetim...
Qui suis-je ? Où vais je ? ...                               Création Fylab             ENT Eliot         Création Ticetim...
Sommaire                • Contexte du projet ENT Libre                      - Contexte général                      - Élio...
Sommaire                • Contexte du projet ENT Libre                      - Contexte général                      - Élio...
Contexte généralFranck Silvestre - 2012, tous droits réservés   w w w.ticetime.com
Contexte général                                                • Environnement Numérique de Travail                      ...
Contexte général                                                                    • Environnement Numérique de Travail  ...
Éliot                • La composante Fylab : l’ENT Eliot                • Services métiers                      -  cahier ...
Sommaire                • Contexte du projet ENT Libre                      - Contexte général                      - Élio...
Pourquoi Grails ?Franck Silvestre - 2012, tous droits réservés   w w w.ticetime.com
Pourquoi Grails ?                   Année 2000 +                   Java +                   Web +                   produc...
Pourquoi Grails ?                   Année 2000 +                   Java +                   Web +                   produc...
Pourquoi Grails ?                   Année 2000 +                   Java +                   Web +                   produc...
Pourquoi Grails ?                   Année 2000 +                   Java +                   Web +                   produc...
Pourquoi Grails ?                   Année 2000 +                   Java +                   Web +                   produc...
Pourquoi Grails ?                   Année 2000 +                   Java +                   Web +                   produc...
Pourquoi Grails ?                   Année 2000 +                   Java +                   Web +                   produc...
Architecture du projet                                                                               Éliot-               ...
Sommaire                • Contexte du projet ENT Libre                      - Contexte général                      - Élio...
The mvn «hell»Franck Silvestre - 2012, tous droits réservés   w w w.ticetime.com
The mvn «hell»                                                !   Objet : ! question sur le patch de grails-maven-plugin  ...
The mvn «hell»                                                !   Objet : ! question sur le patch de grails-maven-plugin  ...
The mvn «goodbye»                • Migration build Ivy + Gradle + Grails en cours                      - Repository et art...
Grails et Jackrabbit - le build                                                  Plugin Grails : Spring DSL               ...
Jackrabbit - le run           • Stratégie initiale d’exploitation                - «repository server» : accès WebDav     ...
Sommaire                • Contexte du projet ENT Libre                      - Contexte général                      - Élio...
eliot-tdbase                • Service pédagogique                • Développement Ticetime                • Évolutions     ...
Git, Github et Jenkins As A Service                                                 Github : Repository Git «principal» + ...
Git, Github et Jenkins As A Service                                                 Github : Repository Git «principal» + ...
Git, Github et Jenkins As A Service                                                 Github : Repository Git «principal» + ...
Découpages plugins                                        Éliot-tdbase                   Éliot-...                        ...
Intégration Spring Security                                                • Plugin supporté par Spring Source            ...
Spring Security - Concepts clés                •      UserDetail                •      GrantedAuthority                •  ...
Spring Security - Concepts clés                                                                 utilisateur accédant à l’a...
Le plugin Spring Security Core                • Installation                • Lancement du script «s2-quickstart»         ...
L’intégration dans Eliot           • eliot-tice-plugin dépend du plugin spring-security-core           • Pas d’utilisation...
L’intégration dans Eliot           • Méthodes ajoutées dans les contrôleurs par le plugin eliot                      - get...
L’intégration dans Eliot           • Méthodes ajoutées dans les contrôleurs par le plugin eliot                      - get...
Mise en oeuvre           • Règles de sécurité dans                  Config.groovyFranck Silvestre - 2012, tous droits réser...
Mise en oeuvre           • Règles de sécurité dans                  Config.groovy         • Exemple d’utilisation méthode  ...
Grails & Liquibase                        • Plugin non retenu au final pour Eliot car                              - trop c...
Grails et Liquibase - Approche retenue     • Un projet Gradle dédié à la            gestion de DB migrationFranck Silvestr...
Grails et Liquibase - Approche retenue     • Un projet Gradle dédié à la            gestion de DB migration               ...
Grails et Liquibase - Approche retenue     • Exemple dans eliot-tdbase                                                Dans...
Grails et Liquibase - Approche retenue     • Exemple dans eliot-tdbase                                                Dans...
Grails et la gestion des ressources statiques          • Le plugin «Resources»          • Simple et terriblement efficace  ...
Grails et la gestion des ressources statiques          • Le plugin «Resources»          • Simple et terriblement efficace  ...
Sommaire                • Contexte du projet ENT Libre                      - Contexte général                      - Élio...
Sur la productivité          • Contexte opérationnel ENT Libre extrêmement contraint                 -     L’opérationnel ...
Sur les performances                • Les performances vis à vis de Grails ont été un «non sujet»                • Les opt...
Idées en vrac                • Statique vs Dynamique                      - critère négligeable concernant la question de ...
Idées en vrac                • Statique vs Dynamique                      - critère négligeable concernant la question de ...
Sommaire                • Contexte du projet ENT Libre                      - Contexte général                      - Élio...
Prochain SlideShare
Chargement dans…5
×

ENT libre - retour expérience Grails

2 056 vues

Publié le

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

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 056
Sur SlideShare
0
Issues des intégrations
0
Intégrations
759
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • \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

    ×