JUG Lausanne

Spring Batch
9 novembre 2010

Julien Jakubowski
Olivier Bazoud
1
Intervenants
➢

Olivier Bazoud, FullSIX, 12 ans d'expérience
●

●

Java EE / Spring, Spring Batch, Groovy, Grails

●

Co a...
De quoi va-t-on parler ce soir ?
➢

On va parler de batchs en Java ...

Spring Batch
➢

… et aussi de bière

http://www.fl...
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://w...
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 e...
Batch : de quoi parle-t-on ?
➢

Batch processing = suite de traitements sur ensemble
de données...

http://www.flickr.com/...
Batch : de quoi parle-t-on ?
➢

… potentiellement grands volumes...

http://www.flickr.com/photos/claudiasofia99/287857956...
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ér...
Batch : de quoi parle-t-on ?
➢

Un batch n'est pas un scheduler
●

Cron, Quartz, $U...

●

Mais un scheduler peut le lance...
Ce qui vous attend
➢

Spring Batch en 1 slide

➢

Un batch « à poil »

➢

Le même en Spring Batch

➢

Introduction progres...
Spring Batch propose
✔ Un cadre
✔ Un vocabulaire (domain language)
✔ Traitement par lots (grands volumes de données)
✔ Ges...
Beer batch
➢

Implémentation « naïve »

➢

Caractéristiques :
●

Lire le fichier XML de recettes, au format BeerXML

●

Fi...
Démo

Anti-patterns...

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

Besoin
●

➢

ItemReader

Lire le XML des recettes

ItemReader
●

Fournir des items en entrée

<xml>

SELECT … FROM ...
...
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 retou...
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...
...
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 l...
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...
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 facilités via le découpage Spring Batch
●

➢

writers, processors etc...

Tests d'intégration fac...
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 ...
Retours d'expérience FullSIX
➢

Nos batchs « Spring Batch » sont en SQL plutôt qu'en
Hibernate

➢

Spring Batch s'occupe d...
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

➢

Infras...
Spring Batch in Action
➢

http://www.manning.com/templier

59
Liens
➢

Spring User Group Paris
●

➢

Le code de la présentation
●

➢

http://code.google.com/p/fr-sug-spring-batch

Spri...
Questions ?

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

61
ROTI

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

62
Prochain SlideShare
Chargement dans…5
×

Spring Batch - Julien Jakubowski - November 2010

719 vues

Publié le

Spring Batch - Julien Jakubowski - November 2010

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
719
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
11
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Spring Batch - Julien Jakubowski - November 2010

  1. 1. JUG Lausanne Spring Batch 9 novembre 2010 Julien Jakubowski Olivier Bazoud 1
  2. 2. 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
  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 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 = suite de traitements sur ensemble de données... http://www.flickr.com/photos/burnblue/308441464/ 9
  10. 10. Batch : de quoi parle-t-on ? ➢ … potentiellement grands volumes... http://www.flickr.com/photos/claudiasofia99/2878579560/ 10
  11. 11. Batch : de quoi parle-t-on ? ➢ … sans intervention d'un utilisateur humain. (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 progressive des notions de Spring Batch ➢ Retours d'expérience ➢ Forces et faiblesses ➢ Questions / réponses 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 Parallélisme Partitionnement Une infrastructure pour les batchs Reprise sur erreurs 15
  16. 16. 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
  17. 17. Démo Anti-patterns... 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. ➢ Besoin ● ➢ ItemReader 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 facilités via le découpage Spring Batch ● ➢ writers, processors etc... Tests d'intégration facilités par Spring ● @RunWith ● Step, Job 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 100Mo + 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 ...the Spring way, Spring Intégration ✔ 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 votre disposition... 58
  59. 59. Spring Batch in Action ➢ http://www.manning.com/templier 59
  60. 60. 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
  61. 61. Questions ? http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/ 61
  62. 62. ROTI http://www.flickr.com/photos/34943981@N00/202923614/ 62

×