Intervenants
➢
Olivier Bazoud, FullSIX, 12 ans d'expérience
●
●
Java EE / Spring, Spring Batch, Groovy, Grails
●
Co auteur de « Spring Batch in Action »
●
➢
Architecte technique de sites web à fort traffic
Spring User Group France
Julien Jakubowski, OCTO Technology
●
Architecte, 10 ans d'expérience
●
Spécialisé Java EE / Spring
●
Productivité et qualité des développements
●
Ch'ti JUG, Agile Tour Lille
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 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 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 = suite de traitements sur ensemble
de données...
http://www.flickr.com/photos/burnblue/308441464/
9
Batch : de quoi parle-t-on ?
➢
… potentiellement grands volumes...
http://www.flickr.com/photos/claudiasofia99/2878579560/
10
Batch : de quoi parle-t-on ?
➢
… sans intervention d'un utilisateur humain.
(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 progressive des notions de Spring Batch
➢
Retours d'expérience
➢
Forces et faiblesses
➢
Questions / réponses
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
Parallélisme
Partitionnement
Une infrastructure pour les batchs
Reprise sur erreurs
15
Beer batch
➢
Implémentation « naïve »
➢
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
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
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
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
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 100Mo + 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
...the Spring way, Spring Intégration
✔ 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 votre disposition...
58
Liens
➢
Spring User Group Paris
●
➢
Le code de la présentation
●
➢
http://code.google.com/p/fr-sug-spring-batch
Spring Batch 2.1.x
●
➢
http://groups.google.fr/group/sugfr
http://static.springsource.org/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/
60