SlideShare ist ein Scribd-Unternehmen logo
1 von 61
Downloaden Sie, um offline zu lesen
Spring User Group France




  Spring Batch
     Mardi 27 Avril 2010

     Julien Jakubowski
       Olivier Bazoud

                           1
Intervenants
➢   Olivier Bazoud, FullSIX, 12 ans d'expérience
     ●   Architecte technique de sites web à fort traffic
     ●   Spécialisé Java EE/Spring
     ●   Spring Batch, Groovy, Grails
     ●   Spring User Group Paris
➢   Julien Jakubowski, OCTO Technology
     ●   Architecte, 9 ans d'expérience
     ●   Spécialisé Java EE / Spring
     ●   Productivité et qualité des développements
     ●   Ch'ti JUG

                                                            2
De quoi va-t-on parler ce soir ?
➢   On va parler de batchs en Java ...

                                                Spring Batch
➢   … et aussi de bière




        http://www.flickr.com/photos/fromeyetopixel/2559391584/
                                                                  3
Teaser
➢   Quand j'écris une application Web, il y a pléthore de
    frameworks Web




    JSF




                                                            4
Teaser
➢   Quand j'accède à une base de données, il y a moult
    solutions de persistance




                                                         5
Teaser
  ➢      Quand je fais du batch, je suis ... à poil !
  ➢      Les batchs seraient-ils les parents pauvres de Java ?




http://www.flickr.com/photos/crystaljingsr/3914729343/sizes/o/in/set-72157622354789320/


                                                                                          6
Teaser
➢   Spring Batch offre pourtant une solution pour vous
    guider lors de l'écriture de vos batchs



                          Spring Batch




                                                         7
Nos objectifs
➢   En sortant de la salle, vous :
     ●   Savez que Spring Batch existe
     ●   Savez identifier certains problèmes récurrents avec les
         batchs écrits en Java
     ●   Savez si Spring Batch est utile pour vous (ou pas)
     ●   Avez intégré les notions principales
     ●   Pouvez faire un batch « Spring Batch » demain




                                                                   8
Batch : de quoi parle-t-on ?
➢    Batch processing = Traitement par lots




    http://www.flickr.com/photos/burnblue/308441464/




                                                       9
Batch : de quoi parle-t-on ?
            ➢       Opérations métiers sur de grands volumes




http://www.flickr.com/photos/claudiasofia99/2878579560/

                                                               10
Batch : de quoi parle-t-on ?
➢   Pas d'interface graphique




                                     11
Batch : de quoi parle-t-on ?
➢   Exemples :
     ●   Import Flat/XML dans une base de données
     ●   Mise à jour de données de référentiels
     ●   Intégration de flux bancaire, financier dans un SI




                                                              12
Batch : de quoi parle-t-on ?
➢   Un batch n'est pas un scheduler
     ●   Cron, Quartz, $U...
     ●   Mais un scheduler peut le lancer




                                            13
Ce qui vous attend
➢       Spring Batch en 1 slide
➢       Un batch « à poil »
➢       Le même en Spring Batch
    •     Introduction des notions de Spring Batch, progres-
          sivement
➢       Retours d'expérience
➢       Forces et faiblesses
➢       Notions avancées




                                                               14
Spring Batch propose
✔ Un cadre
✔ Un vocabulaire (domain language)
✔ Traitement par lots (grands volumes de données)
✔ Gestion des transactions, commit régulier
✔ Spring dans ses batchs



Trace        Parallélisme     Une infrastructure pour les batchs
        Partitionnement     Reprise sur erreurs

                                                                   15
Beer batch
➢   Un batch “old school”
➢   Caractéristiques :
     ●   Lire le fichier XML de recettes, au format BeerXML
     ●   Filtrer certaines recettes et créer un fichier de rejets
     ●   Ecrire en base de données




                                                                    16
Démo




       17
Problèmes récurrents
➢   Fiabilité




                                   18
Problèmes récurrents
➢   Maintenabilité




                                  19
Problèmes récurrents
➢   Réinvention de la roue




                                  20
Le nouveau batch
➢   Ecrire la date de début du batch
➢   Lire le fichier XML de recettes de bières
➢   Filtrer et créer un fichier de rejets
➢   Ecrire en base de données




                                                21
Schéma du batch
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk Oriented Tasklet



ItemReader      ItemProcessor         ItemWriter




                                                   22
ItemReader
                   InitialStep

                 InitialTasklet




                    RecipeStep


               Chunk Oriented Tasklet



ItemReader        ItemProcessor         ItemWriter




                                                     23
ItemReader
➢   Besoin
     ●   Lire le XML des recettes
➢   ItemReader
     ●   Fournir des items en entrée




         <xml>             SELECT … FROM ...
         123;AB;
         456;CD;

                                               24
Morceaux de code




                   25
ItemProcessor
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk Oriented Tasklet



ItemReader      ItemProcessor         ItemWriter




                                                   26
ItemProcessor
➢   Besoin
     ●   Transforme, valide ou/et filtre une recette
➢   ItemProcessor
     ●   Transforme un item et en retourne un autre
     ●   Emplacement pour les « règles métier »




                                                       27
Morceaux de code




                   28
Morceaux de code




                   29
ItemWriter
                   InitialStep

                 InitialTasklet




                    RecipeStep


               Chunk Oriented Tasklet



ItemReader        ItemProcessor         ItemWriter




                                                     30
Item Writer
➢   Besoin
     ●   Décharger les bières dans une base SQL
➢   ItemWriter
     ●   Ecrire les items




               <xml>            INSERT INTO...

               123;AB;
               456;CD;

                                                  31
Morceaux de code




                   32
Chunk
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk Oriented Tasklet



ItemReader      ItemProcessor         ItemWriter




                                                   33
Chunk
➢   Besoin
     ●   Lire, transformer et écrire
➢   Chunk
     ●   Lire et transformer les données successivement
     ●   Ecrire le lot de données
     ●   Le commit-interval définit la taille du lot (différent
         de la taille du fichier)
     ●   Gestion de la transaction : Commit/Rollback




                                                                  34
Chunk




        35
Morceaux de code




                   36
Listener
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk Oriented Tasklet



ItemReader      ItemProcessor         ItemWriter




                                                   37
Listener
➢   Besoin
     ●   Création du fichier de rejet
➢   Listener
     ●   Etre à l'écoute des événements du batch




                                                   38
Morceaux de code




                   39
Morceaux de code




                   40
Morceaux de code




                   41
Tasklet
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk Oriented Tasklet



ItemReader      ItemProcessor         ItemWriter




                                                   42
Tasklet
➢   Besoin
     ●   Effectuer une tâche unitaire
➢   Exemples
     ●   Suppression de fichiers
     ●   Unzip d'un fichier
     ●   Appel d'une procédure stockée
     ●   Appel d'un web service




                                         43
Morceaux de code




                   44
Step
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk Oriented Tasklet



ItemReader      ItemProcessor         ItemWriter




                                                   45
Step
➢   Besoin
     ●   Etape dans le processus du batch
     ●   Contrôle le workflow




                                            46
Job
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk Oriented Tasklet



ItemReader      ItemProcessor         ItemWriter




                                                   47
Job
➢   Besoin
     ●   Décrire les étapes du batch
     ●   Composé d'une ou plusieurs steps




                                       Spring Tool Suite


                                                           48
Morceaux de code




                   49
Traitement par lots




                      50
Lancer un job




                51
Tests
➢   Tests unitaires de notre code custom
    ●   writers, processors etc...
➢   Tests d'intégration




                             Sonar




                                           52
Morceaux de code




                   53
Morceaux de code




                   54
Retours d'expérience FullSIX
➢   Framework de batch
    ●   Moins de code produit, moins d'erreurs possibles
    ●   Plus de tests unitaires + intégrations
➢   Mise en place par l'exemple
    ●   J'ai fait le premier batch pour montrer la voie
    ●   Un même vocabulaire aide à se comprendre
➢   Répond à nos besoins même si les batchs sont diffé-
    rents au niveau métier




                                                           55
Retours d'expérience FullSIX
➢   Nos batchs « Spring Batch » sont en SQL plutôt qu'en
    Hibernate
➢   Spring Batch s'occupe de la gestion transactionnelle
➢   En moyenne
    ●   15% - 50% de gain sur le temps de développement
    ●   15% - 50% de gain au « runtime »
➢   Gains plus impressionnants sur certains cas
    ●   XML 50Mo + SQL; Gain : de 60 mn à 8mn
    ●   10 fichiers 4Mo + SQL; Gain : de 10mn à 1mn30s


                                                           56
Forces et faiblesses
✔ Fiabilité et bons patterns
✔ Tests, TDD
✔ Batchs complexes mieux maintenables
✔ Bénéficie de fonctions avancées à moindre coût
✔ Productivité, à terme...
✗ … après avoir payé le ticket d'entrée




                                                   57
Notions avancées non-abordées
➢   Partionning, parallélisme, remoting
➢   Flow
➢   Reprise sur erreurs, Skipping
➢   Infrastructure pour les batchs
➢   Spring Batch Admin


    A vous de choisir pour une prochaine session...




                                                      58
Liens
➢   Spring User Group Paris
    ●   http://groups.google.fr/group/sugfr
➢   Spring Batch 2.1.1
    ●   http://static.springsource.org/spring-batch
➢   Le code de la présentation
    ●   http://code.google.com/p/fr-sug-spring-batch
➢   Articles sur le web
    ●   http://www.theserverside.com/news/1363855/Spring-Batch-Overview
    ●   http://www.infoq.com/presentations/syer-introducing-spring-batch
    ●   http://blog.zenika.com/index.php?post/2010/03/05/To-batch-or-not-to-batch
    ●   http://blog.octo.com/spring-batch-par-quel-bout-le-prendre/



                                                                                    59
Questions ?




http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/
                                                                                  60
ROTI




http://www.flickr.com/photos/34943981@N00/202923614/



                                                       61

Weitere ähnliche Inhalte

Was ist angesagt?

Java 8 - collections et stream
Java 8 - collections et streamJava 8 - collections et stream
Java 8 - collections et streamFranck SIMON
 
Trunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and EconomicsTrunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and EconomicsPerforce
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web servicesLilia Sfaxi
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à androidLilia Sfaxi
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Eric SIBER
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring BatchAntoine Rey
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 

Was ist angesagt? (20)

Java - Lombok
Java - LombokJava - Lombok
Java - Lombok
 
React-cours.pdf
React-cours.pdfReact-cours.pdf
React-cours.pdf
 
Git
GitGit
Git
 
Angular
AngularAngular
Angular
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Java 8 - collections et stream
Java 8 - collections et streamJava 8 - collections et stream
Java 8 - collections et stream
 
Trunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and EconomicsTrunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and Economics
 
Java 11 to 17 : What's new !?
Java 11 to 17 : What's new !?Java 11 to 17 : What's new !?
Java 11 to 17 : What's new !?
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring Batch
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 

Andere mochten auch

Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Raffael Schmid
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationAntoine Rey
 
Adaptation des compétences : comment réussir sa transformation numérique ?
Adaptation des compétences : comment réussir sa transformation numérique ?Adaptation des compétences : comment réussir sa transformation numérique ?
Adaptation des compétences : comment réussir sa transformation numérique ?Qapa.fr
 
Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch   slideshareParallel batch processing with spring batch   slideshare
Parallel batch processing with spring batch slideshareMorten Andersen-Gott
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample applicationAntoine Rey
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Saâd Zerhouni
 
Les règles de politesse présentées par Malaury
Les règles de politesse présentées par MalauryLes règles de politesse présentées par Malaury
Les règles de politesse présentées par MalauryChristine FIASSON
 
Sabado 22
Sabado 22Sabado 22
Sabado 22cefic
 
Musculation 2009-2010
Musculation 2009-2010Musculation 2009-2010
Musculation 2009-2010MuscuLaffitte
 
Navegadores 2
Navegadores 2Navegadores 2
Navegadores 2eddyej
 

Andere mochten auch (20)

Spring Batch
Spring BatchSpring Batch
Spring Batch
 
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Spring Batch Introduction
Spring Batch IntroductionSpring Batch Introduction
Spring Batch Introduction
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
 
Adaptation des compétences : comment réussir sa transformation numérique ?
Adaptation des compétences : comment réussir sa transformation numérique ?Adaptation des compétences : comment réussir sa transformation numérique ?
Adaptation des compétences : comment réussir sa transformation numérique ?
 
Spring
SpringSpring
Spring
 
Spring batch overivew
Spring batch overivewSpring batch overivew
Spring batch overivew
 
Spring batch
Spring batchSpring batch
Spring batch
 
Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch   slideshareParallel batch processing with spring batch   slideshare
Parallel batch processing with spring batch slideshare
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilité
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
 
Les règles de politesse présentées par Malaury
Les règles de politesse présentées par MalauryLes règles de politesse présentées par Malaury
Les règles de politesse présentées par Malaury
 
Sabado 22
Sabado 22Sabado 22
Sabado 22
 
Toma de decisiones
Toma de decisionesToma de decisiones
Toma de decisiones
 
Musculation 2009-2010
Musculation 2009-2010Musculation 2009-2010
Musculation 2009-2010
 
Navegadores 2
Navegadores 2Navegadores 2
Navegadores 2
 

Ähnlich wie Spring Batch - concepts de base

Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010JUG Lausanne
 
Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011Olivier BAZOUD
 
Paris JUG Spring Batch
Paris JUG Spring BatchParis JUG Spring Batch
Paris JUG Spring BatchOlivier BAZOUD
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaOlivier BAZOUD
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011Olivier BAZOUD
 
7 Suivre Les Developpements Et Recetter
7 Suivre Les Developpements Et Recetter7 Suivre Les Developpements Et Recetter
7 Suivre Les Developpements Et RecetterStéphane Bordage
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Nicolas Silberman
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsAgile Tour 2009 Québec
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EEAntonio Gomes Rodrigues
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jGabriel Pillet 🐙
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logJulien Maitrehenry
 
Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !EmileChomton1
 
JCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec IcescrumJCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec IcescrumRossi Oddet
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 
Spring Batch 17-05-2011
Spring Batch 17-05-2011Spring Batch 17-05-2011
Spring Batch 17-05-2011Normandy JUG
 
Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de devKodo Kojo
 

Ähnlich wie Spring Batch - concepts de base (20)

Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011
 
Paris JUG Spring Batch
Paris JUG Spring BatchParis JUG Spring Batch
Paris JUG Spring Batch
 
Spring Batch ParisJUG
Spring Batch ParisJUG Spring Batch ParisJUG
Spring Batch ParisJUG
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011
 
7 Suivre Les Developpements Et Recetter
7 Suivre Les Developpements Et Recetter7 Suivre Les Developpements Et Recetter
7 Suivre Les Developpements Et Recetter
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EE
 
Présentation1
Présentation1Présentation1
Présentation1
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4j
 
Maven
MavenMaven
Maven
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de log
 
Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !
 
JCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec IcescrumJCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec Icescrum
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
Spring Batch 17-05-2011
Spring Batch 17-05-2011Spring Batch 17-05-2011
Spring Batch 17-05-2011
 
Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de dev
 

Spring Batch - concepts de base

  • 1. Spring User Group France Spring Batch Mardi 27 Avril 2010 Julien Jakubowski Olivier Bazoud 1
  • 2. Intervenants ➢ Olivier Bazoud, FullSIX, 12 ans d'expérience ● Architecte technique de sites web à fort traffic ● Spécialisé Java EE/Spring ● Spring Batch, Groovy, Grails ● Spring User Group Paris ➢ Julien Jakubowski, OCTO Technology ● Architecte, 9 ans d'expérience ● Spécialisé Java EE / Spring ● Productivité et qualité des développements ● Ch'ti JUG 2
  • 3. De quoi va-t-on parler ce soir ? ➢ On va parler de batchs en Java ... Spring Batch ➢ … et aussi de bière http://www.flickr.com/photos/fromeyetopixel/2559391584/ 3
  • 4. Teaser ➢ Quand j'écris une application Web, il y a pléthore de frameworks Web JSF 4
  • 5. Teaser ➢ Quand j'accède à une base de données, il y a moult solutions de persistance 5
  • 6. Teaser ➢ Quand je fais du batch, je suis ... à poil ! ➢ Les batchs seraient-ils les parents pauvres de Java ? http://www.flickr.com/photos/crystaljingsr/3914729343/sizes/o/in/set-72157622354789320/ 6
  • 7. Teaser ➢ Spring Batch offre pourtant une solution pour vous guider lors de l'écriture de vos batchs Spring Batch 7
  • 8. Nos objectifs ➢ En sortant de la salle, vous : ● Savez que Spring Batch existe ● Savez identifier certains problèmes récurrents avec les batchs écrits en Java ● Savez si Spring Batch est utile pour vous (ou pas) ● Avez intégré les notions principales ● Pouvez faire un batch « Spring Batch » demain 8
  • 9. Batch : de quoi parle-t-on ? ➢ Batch processing = Traitement par lots http://www.flickr.com/photos/burnblue/308441464/ 9
  • 10. Batch : de quoi parle-t-on ? ➢ Opérations métiers sur de grands volumes http://www.flickr.com/photos/claudiasofia99/2878579560/ 10
  • 11. Batch : de quoi parle-t-on ? ➢ Pas d'interface graphique 11
  • 12. Batch : de quoi parle-t-on ? ➢ Exemples : ● Import Flat/XML dans une base de données ● Mise à jour de données de référentiels ● Intégration de flux bancaire, financier dans un SI 12
  • 13. Batch : de quoi parle-t-on ? ➢ Un batch n'est pas un scheduler ● Cron, Quartz, $U... ● Mais un scheduler peut le lancer 13
  • 14. Ce qui vous attend ➢ Spring Batch en 1 slide ➢ Un batch « à poil » ➢ Le même en Spring Batch • Introduction des notions de Spring Batch, progres- sivement ➢ Retours d'expérience ➢ Forces et faiblesses ➢ Notions avancées 14
  • 15. Spring Batch propose ✔ Un cadre ✔ Un vocabulaire (domain language) ✔ Traitement par lots (grands volumes de données) ✔ Gestion des transactions, commit régulier ✔ Spring dans ses batchs Trace Parallélisme Une infrastructure pour les batchs Partitionnement Reprise sur erreurs 15
  • 16. Beer batch ➢ Un batch “old school” ➢ Caractéristiques : ● Lire le fichier XML de recettes, au format BeerXML ● Filtrer certaines recettes et créer un fichier de rejets ● Ecrire en base de données 16
  • 17. Démo 17
  • 18. Problèmes récurrents ➢ Fiabilité 18
  • 19. Problèmes récurrents ➢ Maintenabilité 19
  • 20. Problèmes récurrents ➢ Réinvention de la roue 20
  • 21. Le nouveau batch ➢ Ecrire la date de début du batch ➢ Lire le fichier XML de recettes de bières ➢ Filtrer et créer un fichier de rejets ➢ Ecrire en base de données 21
  • 22. Schéma du batch InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 22
  • 23. ItemReader InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 23
  • 24. ItemReader ➢ Besoin ● Lire le XML des recettes ➢ ItemReader ● Fournir des items en entrée <xml> SELECT … FROM ... 123;AB; 456;CD; 24
  • 26. ItemProcessor InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 26
  • 27. ItemProcessor ➢ Besoin ● Transforme, valide ou/et filtre une recette ➢ ItemProcessor ● Transforme un item et en retourne un autre ● Emplacement pour les « règles métier » 27
  • 30. ItemWriter InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 30
  • 31. Item Writer ➢ Besoin ● Décharger les bières dans une base SQL ➢ ItemWriter ● Ecrire les items <xml> INSERT INTO... 123;AB; 456;CD; 31
  • 33. Chunk InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 33
  • 34. Chunk ➢ Besoin ● Lire, transformer et écrire ➢ Chunk ● Lire et transformer les données successivement ● Ecrire le lot de données ● Le commit-interval définit la taille du lot (différent de la taille du fichier) ● Gestion de la transaction : Commit/Rollback 34
  • 35. Chunk 35
  • 37. Listener InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 37
  • 38. Listener ➢ Besoin ● Création du fichier de rejet ➢ Listener ● Etre à l'écoute des événements du batch 38
  • 42. Tasklet InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 42
  • 43. Tasklet ➢ Besoin ● Effectuer une tâche unitaire ➢ Exemples ● Suppression de fichiers ● Unzip d'un fichier ● Appel d'une procédure stockée ● Appel d'un web service 43
  • 45. Step InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 45
  • 46. Step ➢ Besoin ● Etape dans le processus du batch ● Contrôle le workflow 46
  • 47. Job InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 47
  • 48. Job ➢ Besoin ● Décrire les étapes du batch ● Composé d'une ou plusieurs steps Spring Tool Suite 48
  • 52. Tests ➢ Tests unitaires de notre code custom ● writers, processors etc... ➢ Tests d'intégration Sonar 52
  • 55. Retours d'expérience FullSIX ➢ Framework de batch ● Moins de code produit, moins d'erreurs possibles ● Plus de tests unitaires + intégrations ➢ Mise en place par l'exemple ● J'ai fait le premier batch pour montrer la voie ● Un même vocabulaire aide à se comprendre ➢ Répond à nos besoins même si les batchs sont diffé- rents au niveau métier 55
  • 56. Retours d'expérience FullSIX ➢ Nos batchs « Spring Batch » sont en SQL plutôt qu'en Hibernate ➢ Spring Batch s'occupe de la gestion transactionnelle ➢ En moyenne ● 15% - 50% de gain sur le temps de développement ● 15% - 50% de gain au « runtime » ➢ Gains plus impressionnants sur certains cas ● XML 50Mo + SQL; Gain : de 60 mn à 8mn ● 10 fichiers 4Mo + SQL; Gain : de 10mn à 1mn30s 56
  • 57. Forces et faiblesses ✔ Fiabilité et bons patterns ✔ Tests, TDD ✔ Batchs complexes mieux maintenables ✔ Bénéficie de fonctions avancées à moindre coût ✔ Productivité, à terme... ✗ … après avoir payé le ticket d'entrée 57
  • 58. Notions avancées non-abordées ➢ Partionning, parallélisme, remoting ➢ Flow ➢ Reprise sur erreurs, Skipping ➢ Infrastructure pour les batchs ➢ Spring Batch Admin A vous de choisir pour une prochaine session... 58
  • 59. Liens ➢ Spring User Group Paris ● http://groups.google.fr/group/sugfr ➢ Spring Batch 2.1.1 ● http://static.springsource.org/spring-batch ➢ Le code de la présentation ● http://code.google.com/p/fr-sug-spring-batch ➢ Articles sur le web ● http://www.theserverside.com/news/1363855/Spring-Batch-Overview ● http://www.infoq.com/presentations/syer-introducing-spring-batch ● http://blog.zenika.com/index.php?post/2010/03/05/To-batch-or-not-to-batch ● http://blog.octo.com/spring-batch-par-quel-bout-le-prendre/ 59