spring batch - concepts de base
DESCRIPTION
Présentation de Spring Batch au Spring User Group FranceTRANSCRIPT
![Page 1: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/1.jpg)
1
Spring User Group France
Mardi 27 Avril 2010
Julien JakubowskiOlivier Bazoud
Spring BatchSpring Batch
![Page 2: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/2.jpg)
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
![Page 3: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/3.jpg)
3
De quoi va-t-on parler ce soir ?➢ On va parler de batchs en Java ...
Spring BatchSpring Batch
➢ … et aussi de bière
http://www.flickr.com/photos/fromeyetopixel/2559391584/
![Page 4: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/4.jpg)
4
Teaser➢ Quand j'écris une application Web, il y a pléthore de
frameworks Web
JSFJSF
![Page 5: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/5.jpg)
5
Teaser➢ Quand j'accède à une base de données, il y a moult
solutions de persistance
![Page 6: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/6.jpg)
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/
![Page 7: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/7.jpg)
7
Teaser➢ Spring Batch offre pourtant une solution pour vous
guider lors de l'écriture de vos batchs
Spring BatchSpring Batch
![Page 8: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/8.jpg)
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
![Page 9: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/9.jpg)
9
Batch : de quoi parle-t-on ?
➢ Batch processing = Traitement par lots
http://www.flickr.com/photos/burnblue/308441464/
![Page 10: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/10.jpg)
10
Batch : de quoi parle-t-on ?➢ Opérations métiers sur de grands volumes
http://www.flickr.com/photos/claudiasofia99/2878579560/
![Page 11: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/11.jpg)
11
Batch : de quoi parle-t-on ?
➢ Pas d'interface graphique
![Page 12: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/12.jpg)
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
![Page 13: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/13.jpg)
13
Batch : de quoi parle-t-on ?
➢ Un batch n'est pas un scheduler
● Cron, Quartz, $U...
● Mais un scheduler peut le lancer
![Page 14: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/14.jpg)
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
![Page 15: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/15.jpg)
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
Reprise sur erreurs
Trace Parallélisme
Partitionnement
Une infrastructure pour les batchs
![Page 16: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/16.jpg)
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
![Page 17: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/17.jpg)
17
Démo
![Page 18: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/18.jpg)
18
Problèmes récurrents➢ Fiabilité
![Page 19: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/19.jpg)
19
Problèmes récurrents➢ Maintenabilité
![Page 20: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/20.jpg)
20
Problèmes récurrents➢ Réinvention de la roue
![Page 21: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/21.jpg)
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
![Page 22: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/22.jpg)
22
Schéma du batch
ItemReader ItemProcessor
RecipeStep
ItemWriter
InitialStep
InitialTasklet
Chunk Oriented Tasklet
![Page 23: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/23.jpg)
23
ItemReader
ItemProcessor
RecipeStep
ItemWriter
InitialStep
InitialTasklet
Chunk Oriented Tasklet
ItemReader
![Page 24: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/24.jpg)
24
ItemReader➢ Besoin
● Lire le XML des recettes
➢ ItemReader
● Fournir des items en entrée
<xml> SELECT … FROM ...
123;AB;456;CD;
![Page 25: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/25.jpg)
25
Morceaux de code
![Page 26: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/26.jpg)
26
ItemProcessor
ItemReader
RecipeStep
ItemWriter
InitialStep
InitialTasklet
Chunk Oriented Tasklet
ItemProcessor
![Page 27: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/27.jpg)
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 »
![Page 28: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/28.jpg)
28
Morceaux de code
![Page 29: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/29.jpg)
29
Morceaux de code
![Page 30: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/30.jpg)
30
ItemWriter
ItemReader ItemProcessor
RecipeStep
InitialStep
InitialTasklet
Chunk Oriented Tasklet
ItemWriter
![Page 31: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/31.jpg)
31
Item Writer➢ Besoin
● Décharger les bières dans une base SQL
➢ ItemWriter
● Ecrire les items
<xml>
123;AB;456;CD;
INSERT INTO...
![Page 32: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/32.jpg)
32
Morceaux de code
![Page 33: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/33.jpg)
33
Chunk
RecipeStep
InitialStep
InitialTasklet
ItemReader ItemProcessor ItemWriter
Chunk Oriented Tasklet
![Page 34: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/34.jpg)
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
![Page 35: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/35.jpg)
35
Chunk
![Page 36: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/36.jpg)
36
Morceaux de code
![Page 37: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/37.jpg)
37
Listener
RecipeStep
InitialStep
InitialTasklet
ItemReader ItemProcessor ItemWriter
Chunk Oriented Tasklet
![Page 38: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/38.jpg)
38
Listener➢ Besoin
● Création du fichier de rejet
➢ Listener
● Etre à l'écoute des événements du batch
![Page 39: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/39.jpg)
39
Morceaux de code
![Page 40: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/40.jpg)
40
Morceaux de code
![Page 41: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/41.jpg)
41
Morceaux de code
![Page 42: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/42.jpg)
42
Tasklet
ItemReader ItemProcessor
RecipeStep
ItemWriter
InitialStep
Chunk Oriented Tasklet
InitialTasklet
![Page 43: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/43.jpg)
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
![Page 44: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/44.jpg)
44
Morceaux de code
![Page 45: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/45.jpg)
45
Step
ItemReader ItemProcessor
RecipeStep
ItemWriter
InitialStep
InitialTasklet
Chunk Oriented Tasklet
![Page 46: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/46.jpg)
46
Step➢ Besoin
● Etape dans le processus du batch
● Contrôle le workflow
![Page 47: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/47.jpg)
47
Job
ItemReader ItemProcessor
RecipeStep
ItemWriter
InitialStep
InitialTasklet
Chunk Oriented Tasklet
![Page 48: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/48.jpg)
48
Job➢ Besoin
● Décrire les étapes du batch
● Composé d'une ou plusieurs steps
Spring Tool Suite
![Page 49: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/49.jpg)
49
Morceaux de code
![Page 50: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/50.jpg)
50
Traitement par lots
![Page 51: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/51.jpg)
51
Lancer un job
![Page 52: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/52.jpg)
52
Tests➢ Tests unitaires de notre code custom
● writers, processors etc...
➢ Tests d'intégration
Sonar
![Page 53: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/53.jpg)
53
Morceaux de code
![Page 54: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/54.jpg)
54
Morceaux de code
![Page 55: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/55.jpg)
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
![Page 56: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/56.jpg)
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
![Page 57: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/57.jpg)
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
![Page 58: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/58.jpg)
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...A vous de choisir pour une prochaine session...
![Page 59: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/59.jpg)
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/
![Page 60: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/60.jpg)
60
Questions ?
http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/
![Page 61: Spring Batch - concepts de base](https://reader033.vdocuments.us/reader033/viewer/2022052220/55660cbcd8b42a06318b48c6/html5/thumbnails/61.jpg)
61
ROTI
http://www.flickr.com/photos/34943981@N00/202923614/