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