Your SlideShare is downloading. ×
Spring Batch - Julien Jakubowski - November 2010
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Spring Batch - Julien Jakubowski - November 2010

239
views

Published on

Spring Batch - Julien Jakubowski - November 2010

Spring Batch - Julien Jakubowski - November 2010

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
239
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. JUG Lausanne Spring Batch 9 novembre 2010 Julien Jakubowski Olivier Bazoud 1
  • 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. 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 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 = suite de traitements sur ensemble de données... http://www.flickr.com/photos/burnblue/308441464/ 9
  • 10. Batch : de quoi parle-t-on ? ➢ … potentiellement grands volumes... http://www.flickr.com/photos/claudiasofia99/2878579560/ 10
  • 11. Batch : de quoi parle-t-on ? ➢ … sans intervention d'un utilisateur humain. (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 progressive des notions de Spring Batch ➢ Retours d'expérience ➢ Forces et faiblesses ➢ Questions / réponses 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 Parallélisme Partitionnement Une infrastructure pour les batchs Reprise sur erreurs 15
  • 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. Démo Anti-patterns... 17
  • 18. Problèmes récurrents ➢ Fiabilité 18
  • 19. Problèmes récurrents ➢ Maintenabilité 19
  • 20. Problèmes récurrents ➢ Réinvention de la roue 20
  • 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. Schéma du batch InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 22
  • 23. ItemReader InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 23
  • 24. ➢ Besoin ● ➢ ItemReader Lire le XML des recettes ItemReader ● Fournir des items en entrée <xml> SELECT … FROM ... 123;AB; 456;CD; 24
  • 25. Morceaux de code 25
  • 26. ItemProcessor InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 26
  • 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. Morceaux de code 28
  • 29. Morceaux de code 29
  • 30. ItemWriter InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 30
  • 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. Morceaux de code 32
  • 33. Chunk InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 33
  • 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. Chunk 35
  • 36. Morceaux de code 36
  • 37. Listener InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 37
  • 38. Listener ➢ Besoin ● ➢ Création du fichier de rejet Listener ● Etre à l'écoute des événements du batch 38
  • 39. Morceaux de code 39
  • 40. Morceaux de code 40
  • 41. Morceaux de code 41
  • 42. Tasklet InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 42
  • 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. Morceaux de code 44
  • 45. Step InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 45
  • 46. Step ➢ Besoin ● Etape dans le processus du batch ● Contrôle le workflow 46
  • 47. Job InitialStep InitialTasklet RecipeStep Chunk Oriented Tasklet ItemReader ItemProcessor ItemWriter 47
  • 48. Job ➢ Besoin ● Décrire les étapes du batch ● Composé d'une ou plusieurs steps Spring Tool Suite 48
  • 49. Morceaux de code 49
  • 50. Traitement par lots 50
  • 51. Lancer un job 51
  • 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. Morceaux de code 53
  • 54. Morceaux de code 54
  • 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 100Mo + 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 ...the Spring way, Spring Intégration ✔ 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 votre disposition... 58
  • 59. Spring Batch in Action ➢ http://www.manning.com/templier 59
  • 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. Questions ? http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/ 61
  • 62. ROTI http://www.flickr.com/photos/34943981@N00/202923614/ 62