0
Spring User Group France




  Spring Batch
     Mardi 27 Avril 2010

     Julien Jakubowski
       Olivier Bazoud

      ...
Intervenants
➢   Olivier Bazoud, FullSIX, 12 ans d'expérience
     ●   Architecte technique de sites web à fort traffic
  ...
De quoi va-t-on parler ce soir ?
➢   On va parler de batchs en Java ...

                                                S...
Teaser
➢   Quand j'écris une application Web, il y a pléthore de
    frameworks Web




    JSF




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




                           ...
Teaser
  ➢      Quand je fais du batch, je suis ... à poil !
  ➢      Les batchs seraient-ils les parents pauvres de Java ...
Teaser
➢   Spring Batch offre pourtant une solution pour vous
    guider lors de l'écriture de vos batchs



             ...
Nos objectifs
➢   En sortant de la salle, vous :
     ●   Savez que Spring Batch existe
     ●   Savez identifier certains...
Batch : de quoi parle-t-on ?
➢    Batch processing = Traitement par lots




    http://www.flickr.com/photos/burnblue/308...
Batch : de quoi parle-t-on ?
            ➢       Opérations métiers sur de grands volumes




http://www.flickr.com/photos...
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...
Batch : de quoi parle-t-on ?
➢   Un batch n'est pas un scheduler
     ●   Cron, Quartz, $U...
     ●   Mais un scheduler p...
Ce qui vous attend
➢       Spring Batch en 1 slide
➢       Un batch « à poil »
➢       Le même en Spring Batch
    •     I...
Spring Batch propose
✔ Un cadre
✔ Un vocabulaire (domain language)
✔ Traitement par lots (grands volumes de données)
✔ Ges...
Beer batch
➢   Un batch “old school”
➢   Caractéristiques :
     ●   Lire le fichier XML de recettes, au format BeerXML
  ...
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 u...
Schéma du batch
                 InitialStep

               InitialTasklet




                  RecipeStep


           ...
ItemReader
                   InitialStep

                 InitialTasklet




                    RecipeStep


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




         <...
Morceaux de code




                   25
ItemProcessor
                 InitialStep

               InitialTasklet




                  RecipeStep


             ...
ItemProcessor
➢   Besoin
     ●   Transforme, valide ou/et filtre une recette
➢   ItemProcessor
     ●   Transforme un ite...
Morceaux de code




                   28
Morceaux de code




                   29
ItemWriter
                   InitialStep

                 InitialTasklet




                    RecipeStep


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




      ...
Morceaux de code




                   32
Chunk
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk Or...
Chunk
➢   Besoin
     ●   Lire, transformer et écrire
➢   Chunk
     ●   Lire et transformer les données successivement
  ...
Chunk




        35
Morceaux de code




                   36
Listener
                 InitialStep

               InitialTasklet




                  RecipeStep


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


...
Morceaux de code




                   39
Morceaux de code




                   40
Morceaux de code




                   41
Tasklet
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk ...
Tasklet
➢   Besoin
     ●   Effectuer une tâche unitaire
➢   Exemples
     ●   Suppression de fichiers
     ●   Unzip d'un...
Morceaux de code




                   44
Step
                 InitialStep

               InitialTasklet




                  RecipeStep


             Chunk Ori...
Step
➢   Besoin
     ●   Etape dans le processus du batch
     ●   Contrôle le workflow




                              ...
Job
                 InitialStep

               InitialTasklet




                  RecipeStep


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




                        ...
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




            ...
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 ...
Retours d'expérience FullSIX
➢   Nos batchs « Spring Batch » sont en SQL plutôt qu'en
    Hibernate
➢   Spring Batch s'occ...
Forces et faiblesses
✔ Fiabilité et bons patterns
✔ Tests, TDD
✔ Batchs complexes mieux maintenables
✔ Bénéficie de foncti...
Notions avancées non-abordées
➢   Partionning, parallélisme, remoting
➢   Flow
➢   Reprise sur erreurs, Skipping
➢   Infra...
Liens
➢   Spring User Group Paris
    ●   http://groups.google.fr/group/sugfr
➢   Spring Batch 2.1.1
    ●   http://static...
Questions ?




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




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



                                                       61
Upcoming SlideShare
Loading in...5
×

Spring Batch - concepts de base

14,507

Published on

Présentation de Spring Batch au Spring User Group France

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
  • Merci Beaucoup pour cette présentation
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
14,507
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
397
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Spring Batch - concepts de base"

  1. 1. Spring User Group France Spring Batch Mardi 27 Avril 2010 Julien Jakubowski Olivier Bazoud 1
  2. 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. 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. 4. Teaser ➢ Quand j'écris une application Web, il y a pléthore de frameworks Web JSF 4
  5. 5. Teaser ➢ Quand j'accède à une base de données, il y a moult solutions de persistance 5
  6. 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. 7. Teaser ➢ Spring Batch offre pourtant une solution pour vous guider lors de l'écriture de vos batchs Spring Batch 7
  8. 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. 9. Batch : de quoi parle-t-on ? ➢ Batch processing = Traitement par lots http://www.flickr.com/photos/burnblue/308441464/ 9
  10. 10. Batch : de quoi parle-t-on ? ➢ Opérations métiers sur de grands volumes http://www.flickr.com/photos/claudiasofia99/2878579560/ 10
  11. 11. Batch : de quoi parle-t-on ? ➢ Pas d'interface graphique 11
  12. 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. 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. 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. 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. 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. 17. Démo 17
  18. 18. Problèmes récurrents ➢ Fiabilité 18
  19. 19. Problèmes récurrents ➢ Maintenabilité 19
  20. 20. Problèmes récurrents ➢ Réinvention de la roue 20
  21. 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. 22. Schéma du batch InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 22
  23. 23. ItemReader InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 23
  24. 24. ItemReader ➢ Besoin ● Lire le XML des recettes ➢ ItemReader ● Fournir des items en entrée <xml> SELECT … FROM ... 123;AB; 456;CD; 24
  25. 25. Morceaux de code 25
  26. 26. ItemProcessor InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 26
  27. 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
  28. 28. Morceaux de code 28
  29. 29. Morceaux de code 29
  30. 30. ItemWriter InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 30
  31. 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
  32. 32. Morceaux de code 32
  33. 33. Chunk InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 33
  34. 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. 35. Chunk 35
  36. 36. Morceaux de code 36
  37. 37. Listener InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 37
  38. 38. Listener ➢ Besoin ● Création du fichier de rejet ➢ Listener ● Etre à l'écoute des événements du batch 38
  39. 39. Morceaux de code 39
  40. 40. Morceaux de code 40
  41. 41. Morceaux de code 41
  42. 42. Tasklet InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 42
  43. 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
  44. 44. Morceaux de code 44
  45. 45. Step InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 45
  46. 46. Step ➢ Besoin ● Etape dans le processus du batch ● Contrôle le workflow 46
  47. 47. Job InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 47
  48. 48. Job ➢ Besoin ● Décrire les étapes du batch ● Composé d'une ou plusieurs steps Spring Tool Suite 48
  49. 49. Morceaux de code 49
  50. 50. Traitement par lots 50
  51. 51. Lancer un job 51
  52. 52. Tests ➢ Tests unitaires de notre code custom ● writers, processors etc... ➢ Tests d'intégration Sonar 52
  53. 53. Morceaux de code 53
  54. 54. Morceaux de code 54
  55. 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. 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. 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. 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. 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
  60. 60. Questions ? http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/ 60
  61. 61. ROTI http://www.flickr.com/photos/34943981@N00/202923614/ 61
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×