Publicité

Spring Batch - Julien Jakubowski - November 2010

JUG Lausanne
1 Nov 2013
Publicité

Contenu connexe

Publicité

Plus de JUG Lausanne(20)

Publicité

Spring Batch - Julien Jakubowski - November 2010

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