SlideShare une entreprise Scribd logo
1  sur  54
L’ENT Libre
                               Retour d’expérience Grails

                               Franck Silvestre
                               Toulouse JUG
                               19/01/2012



Franck Silvestre - 2012, tous droits réservés
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 - 2012, tous droits réservés                                                             w w w.ticetime.com
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.com

Franck Silvestre - 2012, tous droits réservés                                                             w w w.ticetime.com
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&R

Franck Silvestre - 2012, tous droits réservés                                            w w w.ticetime.com
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&R

Franck Silvestre - 2012, tous droits réservés                                            w w w.ticetime.com
Contexte général




Franck Silvestre - 2012, tous droits réservés   w w w.ticetime.com
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
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
É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
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&R

Franck Silvestre - 2012, tous droits réservés                                            w w w.ticetime.com
Pourquoi Grails ?




Franck Silvestre - 2012, tous droits réservés   w w w.ticetime.com
Pourquoi Grails ?
                   Année 2000 +
                   Java +
                   Web +
                   productivité +
                                                =
                   fun




Franck Silvestre - 2012, tous droits réservés       w w w.ticetime.com
Pourquoi Grails ?
                   Année 2000 +
                   Java +
                   Web +
                   productivité +
                                                =
                   fun




Franck Silvestre - 2012, tous droits réservés       w w w.ticetime.com
Pourquoi Grails ?
                   Année 2000 +
                   Java +
                   Web +
                   productivité +
                                                =
                   fun


                   Année 2005 +
                   Open Source +
                   Web +
                   productivité +
                                                =
                   fun




Franck Silvestre - 2012, tous droits réservés       w w w.ticetime.com
Pourquoi Grails ?
                   Année 2000 +
                   Java +
                   Web +
                   productivité +
                                                =
                   fun


                   Année 2005 +
                   Open Source +
                   Web +
                   productivité +
                                                =
                   fun




Franck Silvestre - 2012, tous droits réservés       w w w.ticetime.com
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
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
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
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.html



Franck Silvestre - 2012, tous droits réservés                                                                                                    w w w.ticetime.com
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&R

Franck Silvestre - 2012, tous droits réservés                                            w w w.ticetime.com
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
                                                !   Date : ! 13 janvier 2012 12:05:43 HNEC
                                                !      À : !Franck Silvestre




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
                                                !   Date : ! 13 janvier 2012 12:05:43 HNEC
                                                !      À : !Franck Silvestre


                                                    salut franck,
                                                    ca va ?

                                                    tiens, j'ai une question sur le patch de grails-maven-plugin que t'as fait.

                                                    on s'est rendu compte que quand on lance mvn test sur eliot-app-plugin, les testes d'integration 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 qu'une 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 qu'il s'applique quand on lance mvn grails:test-app aussi ?
                                                    j'ai cherche comment mvn test est lie avec grails-maven-plugin/grails:test-app et je ne l'ai pas trouve.




Franck Silvestre - 2012, tous droits réservés                                                                                                      w w w.ticetime.com
The mvn «goodbye»
                • Migration build Ivy + Gradle + Grails en cours
                      - Repository et artefacts compatibles Maven conservés
                      - Plugin Jenkins, Sonar OK




Franck Silvestre - 2012, tous droits réservés                                 w w w.ticetime.com
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
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 RDV




Franck Silvestre - 2012, tous droits réservés                   w w w.ticetime.com
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&R

Franck Silvestre - 2012, tous droits réservés                                            w w w.ticetime.com
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 : Liquibase




Franck Silvestre - 2012, tous droits réservés                                       w w w.ticetime.com
Git, Github et Jenkins As A Service
                                                 Github : Repository Git «principal» +
                                                           gestion des issues
                                                https://github.com/ticetime/eliot-tdbase




Franck Silvestre - 2012, tous droits réservés                                        w w w.ticetime.com
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




Franck Silvestre - 2012, tous droits réservés                                        w w w.ticetime.com
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/nexus




Franck Silvestre - 2012, tous droits réservés                                                w w w.ticetime.com
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
                                                                               messages




Franck Silvestre - 2012, tous droits réservés                                                                               w w w.ticetime.com
Intégration Spring Security




                                                • Plugin supporté par Spring Source
                                                • Le besoin
                                                  - approche RBAC
                                                  - gestion d’une authentification par défaut
                                                    pouvant évoluer




Franck Silvestre - 2012, tous droits réservés                                                  w w w.ticetime.com
Spring Security - Concepts clés
                •      UserDetail
                •      GrantedAuthority
                •      UserDetailsService
                •      SecurityContext




Franck Silvestre - 2012, tous droits réservés   w w w.ticetime.com
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
                                               cours




Franck Silvestre - 2012, tous droits réservés                                                           w w w.ticetime.com
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
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 l'interface UserDetail définie dans Spring Security


                      org.lilie.services.eliot.tice.securite.rbac.EliotTiceUserDetailsService

                                                implémente l'interface UserDetailService définie dans Spring Security




Franck Silvestre - 2012, tous droits réservés                                                                w w w.ticetime.com
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
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
Mise en oeuvre
           • Règles de sécurité dans
                  Config.groovy




Franck Silvestre - 2012, tous droits réservés   w w w.ticetime.com
Mise en oeuvre
           • Règles de sécurité dans
                  Config.groovy

         • Exemple d’utilisation méthode
                contrôleur




Franck Silvestre - 2012, tous droits réservés   w w w.ticetime.com
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ées




Franck Silvestre - 2012, tous droits réservés                                               w w w.ticetime.com
Grails et Liquibase - Approche retenue
     • Un projet Gradle dédié à la
            gestion de DB migration




Franck Silvestre - 2012, tous droits réservés        w w w.ticetime.com
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
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
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
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
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
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&R

Franck Silvestre - 2012, tous droits réservés                                            w w w.ticetime.com
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
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 directement




Franck Silvestre - 2012, tous droits réservés                            w w w.ticetime.com
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




Franck Silvestre - 2012, tous droits réservés                                        w w w.ticetime.com
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 »
               Wittgenstein




Franck Silvestre - 2012, tous droits réservés                                        w w w.ticetime.com
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&R

Franck Silvestre - 2012, tous droits réservés                                            w w w.ticetime.com

Contenu connexe

En vedette

Multi-homed applications
Multi-homed applicationsMulti-homed applications
Multi-homed applicationsAndreas Ehn
 
Memahami Bacaan Shalat
Memahami Bacaan ShalatMemahami Bacaan Shalat
Memahami Bacaan ShalatAzizi Ahmad
 
Borang pendaftaran pasukan mssm s takraw 2012
Borang pendaftaran pasukan mssm s takraw 2012Borang pendaftaran pasukan mssm s takraw 2012
Borang pendaftaran pasukan mssm s takraw 2012fizal2012
 
Photo essay by kimberly demusz
Photo essay by kimberly demuszPhoto essay by kimberly demusz
Photo essay by kimberly demuszKimberly Demusz
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled PresentationAna Beatriz
 
Кафедра французской филологии
Кафедра французской филологииКафедра французской филологии
Кафедра французской филологииILMK
 

En vedette (11)

Multi-homed applications
Multi-homed applicationsMulti-homed applications
Multi-homed applications
 
Test
TestTest
Test
 
Memahami Bacaan Shalat
Memahami Bacaan ShalatMemahami Bacaan Shalat
Memahami Bacaan Shalat
 
Borang pendaftaran pasukan mssm s takraw 2012
Borang pendaftaran pasukan mssm s takraw 2012Borang pendaftaran pasukan mssm s takraw 2012
Borang pendaftaran pasukan mssm s takraw 2012
 
Photo essay by kimberly demusz
Photo essay by kimberly demuszPhoto essay by kimberly demusz
Photo essay by kimberly demusz
 
ValeryBassenkoResume
ValeryBassenkoResumeValeryBassenkoResume
ValeryBassenkoResume
 
Career
CareerCareer
Career
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
My book of poems - Batu Klont
My book of poems - Batu KlontMy book of poems - Batu Klont
My book of poems - Batu Klont
 
Кафедра французской филологии
Кафедра французской филологииКафедра французской филологии
Кафедра французской филологии
 
Caching By Nyros Developer
Caching By Nyros DeveloperCaching By Nyros Developer
Caching By Nyros Developer
 

Similaire à ENT libre - retour expérience Grails

Keynote – Communauté mahara francophone 2016
Keynote –  Communauté mahara francophone 2016Keynote –  Communauté mahara francophone 2016
Keynote – Communauté mahara francophone 2016Dominique-Alain JAN
 
12 04 03 Présentation réunion espace de travail partagé Charly
12 04 03 Présentation réunion espace de travail partagé Charly12 04 03 Présentation réunion espace de travail partagé Charly
12 04 03 Présentation réunion espace de travail partagé CharlyJean Pouly
 
Community Management : Retour d’expérience chez Alcatel-Lucent sur Engage
Community Management : Retour d’expérience chez Alcatel-Lucent sur EngageCommunity Management : Retour d’expérience chez Alcatel-Lucent sur Engage
Community Management : Retour d’expérience chez Alcatel-Lucent sur EngageJerome Colombe
 
Journée PluriTAL 2012 - présentation d'Estelle Delpech
Journée PluriTAL 2012 - présentation d'Estelle DelpechJournée PluriTAL 2012 - présentation d'Estelle Delpech
Journée PluriTAL 2012 - présentation d'Estelle DelpechAFTAL
 
Compilation atelier meito tic et audio 14 fev 2013 - cci brest
Compilation atelier meito tic et audio 14 fev 2013 - cci brestCompilation atelier meito tic et audio 14 fev 2013 - cci brest
Compilation atelier meito tic et audio 14 fev 2013 - cci brestYann Dieulangard
 
Chamilo, c'est pas le Pérou - Jeudis du libre
Chamilo, c'est pas le Pérou - Jeudis du libreChamilo, c'est pas le Pérou - Jeudis du libre
Chamilo, c'est pas le Pérou - Jeudis du libreYannick Warnier
 
At strasbourg 2012 - Les déconnectés de la matrice
At strasbourg 2012 - Les déconnectés de la matriceAt strasbourg 2012 - Les déconnectés de la matrice
At strasbourg 2012 - Les déconnectés de la matriceMichel Lejeune
 
[Parole de DSI] Témoignage des Cheminées Poujoulat - 11 octobre 2011
[Parole de DSI] Témoignage des Cheminées Poujoulat - 11 octobre 2011[Parole de DSI] Témoignage des Cheminées Poujoulat - 11 octobre 2011
[Parole de DSI] Témoignage des Cheminées Poujoulat - 11 octobre 2011Groupe D.FI
 
Agile Tour Nantes 2011 - Frédéric molle, xavier torpe, benjamin lecardeux r...
Agile Tour Nantes 2011 - Frédéric molle, xavier torpe, benjamin lecardeux   r...Agile Tour Nantes 2011 - Frédéric molle, xavier torpe, benjamin lecardeux   r...
Agile Tour Nantes 2011 - Frédéric molle, xavier torpe, benjamin lecardeux r...Association Agile Nantes
 
101026 présentation-ecr1
101026 présentation-ecr1101026 présentation-ecr1
101026 présentation-ecr1ECR Community
 

Similaire à ENT libre - retour expérience Grails (12)

Keynote – Communauté mahara francophone 2016
Keynote –  Communauté mahara francophone 2016Keynote –  Communauté mahara francophone 2016
Keynote – Communauté mahara francophone 2016
 
12 04 03 Présentation réunion espace de travail partagé Charly
12 04 03 Présentation réunion espace de travail partagé Charly12 04 03 Présentation réunion espace de travail partagé Charly
12 04 03 Présentation réunion espace de travail partagé Charly
 
Community Management : Retour d’expérience chez Alcatel-Lucent sur Engage
Community Management : Retour d’expérience chez Alcatel-Lucent sur EngageCommunity Management : Retour d’expérience chez Alcatel-Lucent sur Engage
Community Management : Retour d’expérience chez Alcatel-Lucent sur Engage
 
Journée PluriTAL 2012 - présentation d'Estelle Delpech
Journée PluriTAL 2012 - présentation d'Estelle DelpechJournée PluriTAL 2012 - présentation d'Estelle Delpech
Journée PluriTAL 2012 - présentation d'Estelle Delpech
 
Compilation atelier meito tic et audio 14 fev 2013 - cci brest
Compilation atelier meito tic et audio 14 fev 2013 - cci brestCompilation atelier meito tic et audio 14 fev 2013 - cci brest
Compilation atelier meito tic et audio 14 fev 2013 - cci brest
 
Chamilo, c'est pas le Pérou - Jeudis du libre
Chamilo, c'est pas le Pérou - Jeudis du libreChamilo, c'est pas le Pérou - Jeudis du libre
Chamilo, c'est pas le Pérou - Jeudis du libre
 
Jean Luc B - ENMI12
Jean Luc B - ENMI12Jean Luc B - ENMI12
Jean Luc B - ENMI12
 
At strasbourg 2012 - Les déconnectés de la matrice
At strasbourg 2012 - Les déconnectés de la matriceAt strasbourg 2012 - Les déconnectés de la matrice
At strasbourg 2012 - Les déconnectés de la matrice
 
[Parole de DSI] Témoignage des Cheminées Poujoulat - 11 octobre 2011
[Parole de DSI] Témoignage des Cheminées Poujoulat - 11 octobre 2011[Parole de DSI] Témoignage des Cheminées Poujoulat - 11 octobre 2011
[Parole de DSI] Témoignage des Cheminées Poujoulat - 11 octobre 2011
 
Agile Tour Nantes 2011 - Frédéric molle, xavier torpe, benjamin lecardeux r...
Agile Tour Nantes 2011 - Frédéric molle, xavier torpe, benjamin lecardeux   r...Agile Tour Nantes 2011 - Frédéric molle, xavier torpe, benjamin lecardeux   r...
Agile Tour Nantes 2011 - Frédéric molle, xavier torpe, benjamin lecardeux r...
 
101026 ecr1
101026 ecr1101026 ecr1
101026 ecr1
 
101026 présentation-ecr1
101026 présentation-ecr1101026 présentation-ecr1
101026 présentation-ecr1
 

Plus de Franck Silvestre

Système d’instruction par les pairs étendu pour un usage à distance illu...
Système d’instruction par les pairs étendu pour un usage à distance   illu...Système d’instruction par les pairs étendu pour un usage à distance   illu...
Système d’instruction par les pairs étendu pour un usage à distance illu...Franck Silvestre
 
Reflexive learning, socio-cognitive conflict and peer- assessment to improve ...
Reflexive learning, socio-cognitive conflict and peer- assessment to improve ...Reflexive learning, socio-cognitive conflict and peer- assessment to improve ...
Reflexive learning, socio-cognitive conflict and peer- assessment to improve ...Franck Silvestre
 
Génération semi-automatique de tests de révisions @Tice2014
Génération semi-automatique de tests de révisions @Tice2014Génération semi-automatique de tests de révisions @Tice2014
Génération semi-automatique de tests de révisions @Tice2014Franck Silvestre
 
Tsaap-Notes – An Open Micro-Blogging Tool for Collaborative Notetaking during...
Tsaap-Notes – An Open Micro-Blogging Tool for Collaborative Notetaking during...Tsaap-Notes – An Open Micro-Blogging Tool for Collaborative Notetaking during...
Tsaap-Notes – An Open Micro-Blogging Tool for Collaborative Notetaking during...Franck Silvestre
 

Plus de Franck Silvestre (6)

Système d’instruction par les pairs étendu pour un usage à distance illu...
Système d’instruction par les pairs étendu pour un usage à distance   illu...Système d’instruction par les pairs étendu pour un usage à distance   illu...
Système d’instruction par les pairs étendu pour un usage à distance illu...
 
Reflexive learning, socio-cognitive conflict and peer- assessment to improve ...
Reflexive learning, socio-cognitive conflict and peer- assessment to improve ...Reflexive learning, socio-cognitive conflict and peer- assessment to improve ...
Reflexive learning, socio-cognitive conflict and peer- assessment to improve ...
 
PédagoTICE 2015
PédagoTICE 2015PédagoTICE 2015
PédagoTICE 2015
 
Génération semi-automatique de tests de révisions @Tice2014
Génération semi-automatique de tests de révisions @Tice2014Génération semi-automatique de tests de révisions @Tice2014
Génération semi-automatique de tests de révisions @Tice2014
 
Tsaap-Notes – An Open Micro-Blogging Tool for Collaborative Notetaking during...
Tsaap-Notes – An Open Micro-Blogging Tool for Collaborative Notetaking during...Tsaap-Notes – An Open Micro-Blogging Tool for Collaborative Notetaking during...
Tsaap-Notes – An Open Micro-Blogging Tool for Collaborative Notetaking during...
 
Tests quizz
Tests quizzTests quizz
Tests quizz
 

ENT libre - retour expérience Grails

  • 1. L’ENT Libre Retour d’expérience Grails Franck Silvestre Toulouse JUG 19/01/2012 Franck Silvestre - 2012, tous droits réservés
  • 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 - EIAH Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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.com Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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&R Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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&R Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 6. Contexte général Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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. 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. É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. 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&R Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 11. Pourquoi Grails ? Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 12. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = fun Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 13. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = fun Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 14. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = fun Année 2005 + Open Source + Web + productivité + = fun Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 15. Pourquoi Grails ? Année 2000 + Java + Web + productivité + = fun Année 2005 + Open Source + Web + productivité + = fun Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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é + fun Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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é + fun Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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. 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.html Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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&R Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 21. The mvn «hell» Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 22. The mvn «hell» ! Objet : ! question sur le patch de grails-maven-plugin ! Date : ! 13 janvier 2012 12:05:43 HNEC ! À : !Franck Silvestre Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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, j'ai une question sur le patch de grails-maven-plugin que t'as fait. on s'est rendu compte que quand on lance mvn test sur eliot-app-plugin, les testes d'integration 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 qu'une 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 qu'il s'applique quand on lance mvn grails:test-app aussi ? j'ai cherche comment mvn test est lie avec grails-maven-plugin/grails:test-app et je ne l'ai pas trouve. Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 24. The mvn «goodbye» • Migration build Ivy + Gradle + Grails en cours - Repository et artefacts compatibles Maven conservés - Plugin Jenkins, Sonar OK Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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. 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 RDV Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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&R Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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 : Liquibase Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 29. Git, Github et Jenkins As A Service Github : Repository Git «principal» + gestion des issues https://github.com/ticetime/eliot-tdbase Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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éploie Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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/nexus Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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 messages Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 33. Intégration Spring Security • Plugin supporté par Spring Source • Le besoin - approche RBAC - gestion d’une authentification par défaut pouvant évoluer Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 34. Spring Security - Concepts clés • UserDetail • GrantedAuthority • UserDetailsService • SecurityContext Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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 cours Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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. 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 l'interface UserDetail définie dans Spring Security org.lilie.services.eliot.tice.securite.rbac.EliotTiceUserDetailsService implémente l'interface UserDetailService définie dans Spring Security Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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. 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. Mise en oeuvre • Règles de sécurité dans Config.groovy Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 41. Mise en oeuvre • Règles de sécurité dans Config.groovy • Exemple d’utilisation méthode contrôleur Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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ées Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 43. Grails et Liquibase - Approche retenue • Un projet Gradle dédié à la gestion de DB migration Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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. 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. 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. 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. 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. 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&R Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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. 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 directement Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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’expression Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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 » Wittgenstein Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com
  • 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&R Franck Silvestre - 2012, tous droits réservés w w w.ticetime.com

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n