http://chtijug.org/session-spring-batch-avec-ekino-le-29-novembre/
Nous avons le plaisir de vous annoncer que la prochaine session du Ch’ti JUG est prévue le 29 novembre 2011. Elle aura lieu à l’IUT A de Lille 1, boulevard Paul Langevin, à Villeneuve d’Ascq. Plan d’accès
Le thème de cette session est Spring Batch : un framework pour implémenter des traitements de masse en Java.
Cette présentation sera animée par Olivier Bazoud / @obazoud et Julien Jakubowski / @jak78.
Cette session est rendue possible grâce à Ekino / @3k1no.
Découvrez Spring Batch, sa simplicité, les concepts de bases ainsi que les notions avancées. Tout tout tout, vous saurez tout sur Spring Batch!
Intervenant : Olivier Bazoud @obazoud
Pour finir l'année en beauté, le Spring User Groupe FR vous propose de nous retrouver le Mardi 20 Décembre 2011 à 19h00 pour une session sur "Spring Batch Avancé". Lors de la première présentation (http://www.slideshare.net/sugfrance/spring-batch-concepts-de-base), nous avons vu les concepts de base de "Spring Batch".
Lors de cette session nous vous proposons d'aborder les notions avancés de "Spring Batch" en tenant compte de vos suggestions (voir le Google Moderator http://www.google.com/moderator/#16/e=5f36). A la fin de la conférence, nous vous proposerons un quizz afin de gagner quelques exemplaires de "Spring Batch in Action" (A.Cogoluegnes, T. Templier, G. Gregory, O. Bazoud), offerts par la société Ekino (http://www.ekino.com / @3k1n0).
Olivier Bazoud / @obazoud est architecte logiciel chez Ekino (http://www.ekino.com), spécialisé dans les technologies Java/JEE/Spring. Fort de 12 ans d’expérience, Olivier est en charge de l’architecture technique de sites et d'applications web à très fort traffic.
Julien Jakubowski / @jak78 est architecte chez OCTO Technology. Il a 10 ans d'expérience acquise au sein de projets à fort engagement pour des grands comptes, dans des secteurs d'activités variés : banque, assurance, industrie, grande distribution...
Julien accompagne ses clients sur des problématiques d'architecture, d'expertise technique, et de productivité des développements.
Il est également co-fondateur et président du Ch'ti JUG (Java User Group de la région Lilloise), qui rassemble tous les mois plus de 100 passionnés de technologies Java.
Vous ne vous y retrouver pas dans la nébuleuse Spring ?
Vous avez entendu parler de Spring Batch (ou pas d’ailleurs), vous aimeriez que l’on vous explique comment on s’en sert ?
Vous voulez en savoir plus sur ce framework ?
Alors venez au prochain NormandyJUG !
Jean-Philippe Briend est Architecte chez Infin-IT, société de service de petite taille spécialisée en Nouvelles Technologies et Finance / Assurance.
Il est intervenu chez de grands comptes (grande distribution, finance, assurance, éditeurs, etc…) sur des projets Java / J2ee stratégiques.
En 2010, il est intervenu comme Architecte pour la refonte de batchs orientée Performance chez un grand éditeur français.
Il nous présentera Spring Batch et son retour d’expérience de ce projet.
Découvrez Spring Batch, sa simplicité, les concepts de bases ainsi que les notions avancées. Tout tout tout, vous saurez tout sur Spring Batch!
Intervenant : Olivier Bazoud @obazoud
Pour finir l'année en beauté, le Spring User Groupe FR vous propose de nous retrouver le Mardi 20 Décembre 2011 à 19h00 pour une session sur "Spring Batch Avancé". Lors de la première présentation (http://www.slideshare.net/sugfrance/spring-batch-concepts-de-base), nous avons vu les concepts de base de "Spring Batch".
Lors de cette session nous vous proposons d'aborder les notions avancés de "Spring Batch" en tenant compte de vos suggestions (voir le Google Moderator http://www.google.com/moderator/#16/e=5f36). A la fin de la conférence, nous vous proposerons un quizz afin de gagner quelques exemplaires de "Spring Batch in Action" (A.Cogoluegnes, T. Templier, G. Gregory, O. Bazoud), offerts par la société Ekino (http://www.ekino.com / @3k1n0).
Olivier Bazoud / @obazoud est architecte logiciel chez Ekino (http://www.ekino.com), spécialisé dans les technologies Java/JEE/Spring. Fort de 12 ans d’expérience, Olivier est en charge de l’architecture technique de sites et d'applications web à très fort traffic.
Julien Jakubowski / @jak78 est architecte chez OCTO Technology. Il a 10 ans d'expérience acquise au sein de projets à fort engagement pour des grands comptes, dans des secteurs d'activités variés : banque, assurance, industrie, grande distribution...
Julien accompagne ses clients sur des problématiques d'architecture, d'expertise technique, et de productivité des développements.
Il est également co-fondateur et président du Ch'ti JUG (Java User Group de la région Lilloise), qui rassemble tous les mois plus de 100 passionnés de technologies Java.
Vous ne vous y retrouver pas dans la nébuleuse Spring ?
Vous avez entendu parler de Spring Batch (ou pas d’ailleurs), vous aimeriez que l’on vous explique comment on s’en sert ?
Vous voulez en savoir plus sur ce framework ?
Alors venez au prochain NormandyJUG !
Jean-Philippe Briend est Architecte chez Infin-IT, société de service de petite taille spécialisée en Nouvelles Technologies et Finance / Assurance.
Il est intervenu chez de grands comptes (grande distribution, finance, assurance, éditeurs, etc…) sur des projets Java / J2ee stratégiques.
En 2010, il est intervenu comme Architecte pour la refonte de batchs orientée Performance chez un grand éditeur français.
Il nous présentera Spring Batch et son retour d’expérience de ce projet.
La nouvelle version du Framework .NET apporte des innovations majeures qui permettent encore plus de performance et accroissent le champ des possibles. Du poste client au serveur d’entreprise, ce jeu de nouvelles fonctionnalités logée au cœur du noyau vous offrent une gestion plus fine de votre code et donnent un nouveau souffle à vos applications. Ne manquez pas cette session et venez découvrir comment augmenter considérablement les performances de vos programmes et tirer parti de toute la puissance des ordinateurs modernes.
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Nicolas Silberman
Retour d'experience du Groupe Express Roularta sur l'intégration de Puppet (mais finalement Chef) dans leur système d'information, permettant en quelques cliques et quelques minutes de mettre en place une ou plusieurs machines de développement parfaitement fonctionnelle et à jour, le tout hébergé sur le cloud Amazon.
Remplacer un SI existant par un nouvel outil basé sur l'état de l'art (Symfony CMF, ElasticSearch, RabbitMQ, Docker, Backbone.js) sans reculer sans cesse la mise en production, c'est une question d'agilité. Concevoir l'architecture, découvrir des stratégies de migration partielle, investir dans des systèmes de synchronisation, partager l'avancée d'un projet avec tous, former les équipes au nouvel outil, accompagner les changements dans l'organisation de l'entreprise, voici quelques recettes de migration continue illustrées par le cas du CMS de 20Minutes.fr.
Avec l’avènement des connexions haut-débit et bientôt très haut-débit, les concepteurs semblent de moins en moins attentifs à la rapidité de leurs sites. De plus, avec de telles connexions, les internautes supportent mal un site qui les fasse attendre. Cela gâche l’expérience utilisateur, pourtant censée être au cœur du "web 2.0"
Cet atelier vous présentera comment, sans devoir repenser votre application ou vos pages depuis le début, améliorer la rapidité de votre site.
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
Un petit tour des pratiques et outils de capacity planning. Graphite, JMX Trans, JMeter (sans frein à main), et leurs amis Amazon EC2, jenkins, VisualVM … Et en bonus la basic-web-perf application pour tester votre infrastructure à blanc !
http://www.parisjug.org/xwiki/bin/view/Meeting/20130514
Quand j'écris une application Web, il y a pléthore de frameworks Web. Quand j'accède à une base de données, il y a des solutions de persistance (Hibernate, etc.). Quand je fais du batch, je suis... à poil ! Les batchs seraient-ils les parents pauvres de Java ? Spring Batch offre pourtant une solution pour vous guider lors de l'écriture de vos batchs en Java en toute décontraction. Le 14 Mai, Olivier et Julien vous présenteront Spring Batch et vous donneront une autre vision des batchs en Java.
Intervenants : Julien Jakubowski et Olivier Bazoud
La nouvelle version du Framework .NET apporte des innovations majeures qui permettent encore plus de performance et accroissent le champ des possibles. Du poste client au serveur d’entreprise, ce jeu de nouvelles fonctionnalités logée au cœur du noyau vous offrent une gestion plus fine de votre code et donnent un nouveau souffle à vos applications. Ne manquez pas cette session et venez découvrir comment augmenter considérablement les performances de vos programmes et tirer parti de toute la puissance des ordinateurs modernes.
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Nicolas Silberman
Retour d'experience du Groupe Express Roularta sur l'intégration de Puppet (mais finalement Chef) dans leur système d'information, permettant en quelques cliques et quelques minutes de mettre en place une ou plusieurs machines de développement parfaitement fonctionnelle et à jour, le tout hébergé sur le cloud Amazon.
Remplacer un SI existant par un nouvel outil basé sur l'état de l'art (Symfony CMF, ElasticSearch, RabbitMQ, Docker, Backbone.js) sans reculer sans cesse la mise en production, c'est une question d'agilité. Concevoir l'architecture, découvrir des stratégies de migration partielle, investir dans des systèmes de synchronisation, partager l'avancée d'un projet avec tous, former les équipes au nouvel outil, accompagner les changements dans l'organisation de l'entreprise, voici quelques recettes de migration continue illustrées par le cas du CMS de 20Minutes.fr.
Avec l’avènement des connexions haut-débit et bientôt très haut-débit, les concepteurs semblent de moins en moins attentifs à la rapidité de leurs sites. De plus, avec de telles connexions, les internautes supportent mal un site qui les fasse attendre. Cela gâche l’expérience utilisateur, pourtant censée être au cœur du "web 2.0"
Cet atelier vous présentera comment, sans devoir repenser votre application ou vos pages depuis le début, améliorer la rapidité de votre site.
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
Un petit tour des pratiques et outils de capacity planning. Graphite, JMX Trans, JMeter (sans frein à main), et leurs amis Amazon EC2, jenkins, VisualVM … Et en bonus la basic-web-perf application pour tester votre infrastructure à blanc !
http://www.parisjug.org/xwiki/bin/view/Meeting/20130514
Quand j'écris une application Web, il y a pléthore de frameworks Web. Quand j'accède à une base de données, il y a des solutions de persistance (Hibernate, etc.). Quand je fais du batch, je suis... à poil ! Les batchs seraient-ils les parents pauvres de Java ? Spring Batch offre pourtant une solution pour vous guider lors de l'écriture de vos batchs en Java en toute décontraction. Le 14 Mai, Olivier et Julien vous présenteront Spring Batch et vous donneront une autre vision des batchs en Java.
Intervenants : Julien Jakubowski et Olivier Bazoud
SkillValue LesJeudis Master Class React NativeBenoit Fillon
React Native demos and highlights
Samples are available on https://github.com/Benouzef/SledgeHammer
Samples with Redux & Firebase & React Navigation
Tips & Tricks
French version
Dans nos accompagnements techniques, nous observons régulièrement des problèmes de Legacy Code aussi appelé Code Patrimonial. Notamment lorsque des équipes font un virage agile et on leur demande soudainement de faire des tests unitaires automatisés. Pas si facile que cela.
Dans cette présentation, nous verrons les points suivants:
- Description de quelques techniques pour nous aider à tester le Legacy Code
- Comment avoir le droit de travailler sur du code pour le rendre plus facile à travailler
- Quelques pratiques et outils afin de s'en prémunir autant que possible au jour le jour.
Cette présentation a été donnée aux dates suivantes:
- 10 Novembre 2016 - Beer And Learn (Québec)
- 16 Novembre 2016 - Agile Tour Montréal
Ez18n Annotation Processing Tool in a nutshellgdigugli
APT qu'est ce que c'est
appeler en ligne de commande
appeler APT depuis maven
l'API javax.tools - hierarchie des classes
Processor
meta model d'un fichier source java
comparaison avec java.lang.reflect
limitation par rapport à java.lang.reflect
ca sert à quoi ?
pattern avec injection - je fais un framework
analyse et transformation de code vers des fichiers plats
DSL avec des annotations
no limit ... attention aux dépendances
compilation une ou deux passes ?
APT dans mon IDE
30 slides pour apprendre à suivre les développements d'un projet web et le recetter :
Le contexte
L'importance du lotissement
La gestion des relations avec le client
La documentation du projet
Les tests
Les référentiels de test
Fonction, cas d'utilisation & tests
La documentation de la recette
Mantis
Customiser Mantis
Automatisation des tests fonctionnels avec Selenium
Déroulement de la recette
Démarche
Tâches
Revue de tickets
Et ça continu encore et encore…
Redmine
La troisième version de PowerShell est disponible depuis la fin 2012. La rumeur veut que la troisième version d’un produit Microsoft est celle du succès ! Il est donc important de se familiariser avec cette dernière version. Cette session s’attachera donc à visiter les améliorations majeures de cette nouvelle version, que ce soit dans : - La facilité d’utilisation (nouvelle application ISE, aide améliorée, PowerShell Web Access - L’accès aux données de configuration (nouvelles CMDLets, modules auto-chargés, CMDLets CIM) - La gestion des tâches (Tâches programmées, Sessions persistantes, workflows) - Et pleines d’autres encore…
Pourquoi vous ne pouvez pas tester votre codeRémi Lesieur
"Non mais nous, on ne peut pas tester"
Vous avez déjà entendu cette phrase ? Parce que moi, oui, très souvent.
Il y a toujours au moins une bonne raison évoquée. Et si on en parlait ?
3. Ekino / @3k1n0
• Conception, développement et
maintenance de dispositifs digitaux
• 150 personnes
– 50% de développeurs, 0% de régie
• Digital
– Mobile + HTML + RIA
– JAVA + PHP + .NET
• 6 pôles de compétences, 25 clients, 50
projets/an = 1 équipe
14. Intervenants
Olivier Bazoud @obazoud, Ekino @3k1n0
ISEN (Toulon)
Architecte technique
Java EE / Spring, Spring Batch, NoSQL, Node.js
Co-auteur de « Spring Batch in Action »
Spring User Group France
Julien Jakubowski, @jak78, OCTO Technology
ISEN (le vrai, de Lille)
Architecte technique
Spécialisé Java EE / Spring
Ch'ti JUG, Agile Tour Lille
15. De quoi va-t-on parler ce soir ?
• On va parler de batchs en Java
• … et aussi de bière
http://www.flickr.com/photos/fromeyetopixel/2559391584/
16. 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
… et quelques notions avancées
Pouvez faire un batch « Spring Batch » demain
17. Ce qui vous attend
• Batch : de quoi parle-t-on ?
• Pourquoi Spring Batch ?
• Faisons ensemble un batch...
– Introduction progressive des notions de Spring Batch
• Retours d'expérience
• Forces et faiblesses
• Notions avancées - vote
• Questions / Réponses
18. Batch : de quoi parle-t-on ?
Batch processing = répétition de traitements sur
un ensemble de données…
19. Batch : de quoi parle-t-on ?
… potentiellement grands volumes…
http://www.flickr.com/photos/claudiasofia99/2878579560/
20. Batch : de quoi parle-t-on ?
… sans intervention d’un utilisateur humain – pas
d’interface homme-machine
21. Batch : de quoi parle-t-on ?
Exemples:
• Import flat / XML dans une base de données
• Mise à jour de données de référentiel
• Intégration de flux financiers dans un SI
• …
22. Batch : de quoi parle-t-on ?
Un batch n’est pas un scheduler
• Cron, inotify, Quartz, $U…
• Mais un scheduler peut le lancer
23. Beer Batch
• Caractéristiques :
– Lire le fichier XML de recettes, au format BeerXML
– Ecrire les recettes en base de données
– Filtrer certaines recettes et créer un fichier de rejets
29. Et quand j’écris un batch ?
Je suis… à poil ?
http://www.flickr.com/photos/crystaljingsr/3914729343/sizes/o/in/set-72157622354789320/
30. Et quand j’écris un batch ?
Spring Batch offre pourtant une solution pour vous guider
lors de l’écriture de vos batchs en Java
31. Spring Batch propose…
• Un cadre
• Un vocabulaire (domain language)
• Traitement par lots (grands volumes de
données)
• Gestion des transactions
• Flow, reprise sur erreur
• Spring dans ses batchs
Parallélisme Spring Batch Admin
Partitionnement
33. BeerBatch V2
• Ecrire la date de début du batch
• 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
Spring Batch
36. Tasklet
• Besoin
– Effectuer une tâche unitaire
• Exemples
– Supprimer un répertoire et son contenu
– Unzip d’un fichier
– Appel d’une procédure stockée
– Appel d’un web service
42. ItemProcessor
• Besoin
– Transforme, valide et / ou filtre une recette
• ItemProcessor
– Transforme un item en un autre
– Filtrer ou rejeter un item
– Emplacement pour les « règles métier »
49. 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
69. Forces et faiblesses
✔Fiabilité et bons patterns
✔Tests unitaires et d'intégration, TDD
✔Batchs complexes mieux maintenables
✔Bénéficie de fonctions avancées à moindre coût
✔...the Spring way, intégration à Spring
✔Productivité, à terme...
✗… après avoir payé le ticket d'entrée
70. Retour d’expérience
Ekino
• 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
71. Retour d’expérience
Ekino
• 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
72. Des questions,
avant la suite ?
http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/
74. Recipe
Maître détail
Hop Hop Hop
R;Burton Ale;All Grain;Brad Smith
H;Goldings, East Kent;United Kingdom
H;Northern Brewer;Germany
H;Fuggles;United Kingdom
END
R;Dry Stout;All Grain;Brad Smith
H;Fuggles;United Kingdom
END
80. Allons plus loin…
Au choix!
• Un cas un peu plus complexe – maître
détail
• La reprise sur erreurs
• Un batch qui n’a pas un flow de
bisounours…
• Scaling et parallélisme
• Spring Batch et Hibernate
• Spring Batch Admin
81. Maître détail
R;Burton Ale;All Grain;Brad Smith
H;Goldings, East Kent;United Kingdom
H;Northern Brewer;Germany
H;Fuggles;United Kingdom
END
R;Dry Stout;All Grain;Brad Smith
H;Fuggles;United Kingdom
END
85. R;Burton Ale;All Grain;Brad Smith
H;Goldings, East Kent;United Kingdom
H;Northern Brewer;Germany
H;Fuggles;United Kingdom
END
R;Dry Stout;All Grain;Brad Smith
H;Fuggles;United Kingdom
END
87. A retenir
• Implémentation de notre propre reader
• Ré-utilisation d’un reader déjà fourni par
Spring Batch
• Ré-utilisation de ce que nous avons déjà
codé précédemment
89. Reprise sur erreur
• Un batch plus robuste (tolérant à l’erreur)
c’est un batch :
– Qui survit à quelques données invalides
– Qui survit à une indisponibilité
– Qu’on est en mesure de relancer
90. Reprise sur erreur
• Spring Batch out-of-the-box propose:
– Sauter les erreurs non bloquantes (skip)
– Recommencer un traitement (retry)
– Déterminer si le batch est fini (completion)
– Redémarrer un batch (restart)
92. Reprise sur erreur: Skip
0001;ABC;DEF;
0002;ABC;DEF;
000zxjgxdjghjsdfkud
0004;ABC;DEF;
• Ne pas arrêter le batch si la
lecture/process/écriture échoue
• Personnaliser les cas de « skip »
• Ecouter les cas de « skip »
93. Reprise sur erreur: Skip
– Si FlatFileException, Spring Batch skip l’item
– Skip de 10 items max
– Au-delà la step « failed »
– Include/Exclude possible
94. Reprise sur erreur: Skip
• Personnaliser la gestion du « skip »
• Par défaut: LimitCheckingItemSkipPolicy
96. Reprise sur erreur: Skip
• Un listener permet de traiter les items
écartés
• Les annotations existent aussi
– @OnSkipInRead
– @OnSkipInWrite
– @OnSkipInProcess
98. Reprise sur erreur: Retry
http://www.libertaland.com/2011/04/une-femme-de-75-ans-coupe-tout-linternet-en-armenie/
99. Reprise sur erreur: Retry
• Permet de relancer une opération si
indispo temporaire
• Personnaliser les cas de « retry »
• Ecouter les cas de « retry »
100. Reprise sur erreur: Retry
– Si DLDAE, Spring Batch recommence
– Retry 3 fois max
– Au-delà la step « failed »
– Include/Exclude possible
101. Reprise sur erreur: Retry
• Personnaliser le « retry »: RetryPolicy
– SimpleRetryPolicy (défaut)
• Stratégie entre 2 « retry »: BackoffPolicy
– NoBackOffPolicy (défaut)
– ExponentialBackOffPolicy vraiment utile
111. Reprise sur erreur:
Restart
• Spring Batch persiste régulièrement les
« ExecutionContext »
• Ceci permet à Spring Batch de savoir où
reprendre
• C’est ce qui fait qu’un batch est
« restartable »
112. Reprise sur erreur:
Restart
• Si vous voulez que vos Reader/Writer
custom soient restartables, vous devez
les concevoir restartables!
• Certains fournis par Spring Batch le sont,
mais pas tous
• Ce n’est pas toujours possible – ex: Writer
JMS.
115. Reprise sur erreur
Conclusion
• Nous avons appris comment:
– Ecarter des items défectueux (skip)
– Recommencer une step s’il y a une erreur
temporaire (retry)
– Implémenter notre propre stratégie de
« skip » et « retry »
– Redémarrer un job avec certains steps
124. Gestion du flow
• Batch Status
– Etat du job / step en cours d’exécution
• Exit Status
– Etat du job ou step après son exécution
– C’est lui qui détermine le flow
• Exemple
– COMPLETED, STARTING, STARTED,
STOPPING, STOPPED, FAILED,ABANDONED
or UNKNOWN
– C?T (CAT mais pas COUNT), C*T (CAT et COUNT)
125. Gestion du flow
• Créer et utiliser ses propres « exit status »
– StepExecutionListener
– JobDecider
126. Gestion du flow
• Utiliser ses propres « exit status »
StepA
COMPLETED WITH SKIPS
StepC
*
StepB
131. Gestion du flow
• « StepExecutionListener » ou
« JobExecutionDecider » ?
• JobExecutionDecider pour réutiliser plus
facilement la logique de branchement
133. Gestion du flow
• Partager des informations entre les steps
– À la Spring:bean classic
– A la Spring Batch: « Execution context »
• 1 pour le Job et 1 par Step
• C’est une Map sauvegardé dans les meta data
• Attention au volume
• Late bindings
– #{jobExecutionContext[‘myKey']}
139. Gestion du flow
• Conclusion, nous avons
– Fait des flows non linéaires
– Piloté l’enchaînement des steps
– Passé des données entre steps
– Mutualisé et réutilisé des jobs
143. Liens
• Spring User Group Paris
– http://groups.google.fr/group/sugfr
• Le code de la présentation
– https://github.com/obazoud/spring-batch-sug
• Spring Batch 2.1.x
– 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/
146. Quizz 1
Ce que n'est pas Spring Batch ?
1. un framework orienté batchs
2. un scheduler
3. un framework open source
147. Quizz 2
Qui est le principal leader du
projet Spring Batch ?
1. Antonio Goncalves
2. Obi-wan Kenobi
3. Dave Syer
148. Quizz 3
Comment s'appelle le format
standard de description de
recette de bière ?
1. BeerXML
2. ISO-1664
3. ChtixML
149. Quizz 4
Qui vous offre un exemplaire de
« Spring Batch in Action »?
1. Sais pas, je viens de me réveiller
2. Ekino
3. Chubaka
150. Quizz 5
Comment s'appelle la console
d’admin de Spring Batch ?
1. Coldfusion Web Console
2. Spring Batch Admin
3. PlayScala
151. Quizz 6
Qui vous offre le buffet de cette
session ?
1. Sais pas, je viens de me réveiller
(mais c’est vrai qu’il fait faim!)
2. Linus Torvald
3. Ekino
156. Spring Batch et
Hibernate
• Raison d’utiliser Hibernate avec Spring
Batch: code existant rapidité de
développement
• Ca ne se fait pas sans dangers…
157. Spring Batch et
Hibernate
• Overhead de Hibernate sur JDBC
• Hibernate est stateful (par défaut)
– 1M d’items lus = 1M maintenus en RAM
OutOfMemoryError
158. Spring Batch et
Hibernate
Correctifs possibles pour pb stateful:
• Ne pas faire d’Hibernate ;-)
• Utiliser HibernateCustomItemReader
– Session stateless
• Ajuster le commit interval
159. Spring Batch et
Hibernate
• OK je suis un bon élève, j’utilise
HibernateCursorItemReader
• Maintenant, je fonce…
• Mais attention au select N+1
160. Spring Batch et Hibernate
• Pattern: « Driving Query Based
ItemReaders »
• Certaines bases de données (ex: DB2)
– Pessimitic looking
– Ouverture de curseurs sur des données
importantes
• Bonne pratique avec Hibernate
• Prévient les LazyException
161. Spring Batch et Hibernate
• Principe
– Le reader lit les ids via SQL
• Select id from XXX where …
– Le premier ItemProcessor transforme l’id en
objet via Hibernate par exemple
– Les autres processors font les traitements
métiers
–…
162.
163. Spring Batch Admin
• Console Web pour Spring Batch
– « Standalone » ou « Embedded »
– API Rest
– Uploader une nouvelle configuration
– Uploader un fichier à traiter
• « Customisable »
– Base de données, Branding, UI, ..
• Monitorer les batchs
171. Spring Batch Admin /
Monitoring
• JMX / MBean
– BatchMBeanExporter
• Exporter un jobService
• Voir les métriques des « Job/Steps Executions »
– SLA StepExecutionServiceLevelMonitor
• Permet de recevoir des notifications JMX si une
Step met trop de temps
• Utilisable aussi en Standalone
177. Scaling
• Différentes stratégies possibles
– Multi-threaded Step (single process)
– Parallel Steps (single process)
– Remote Chunking of Step (multi process)
– Partitioning a Step (single or multi process)
178. Scaling
• Multi-threaded Step
– Une Step est multi threaded
• Parallel Steps
– Les Steps sont exécutées en parallèle
• Remote Chunking of Step
– Distribution des chunks
• Partitioning a Step
– Partage les données à travers les noeuds
179. Scaling: Multi-threaded Step
– Multi thread au niveau « Step »
– Utilise un ThreadPoolTaskExecutor
– Chaque thread construit un chunk
– Les readers/writers sont thread-safe ?
• La plus part non, ils sont stateful
– « Process Indicator Pattern »
• Lire les items ‘processed’ = false
• Un ItemProcessor met ‘processed = true’
181. Scaling: Step en parallèle
• Executer plusieurs Step en parallèle
• Mot clé « split » dans la configuration
• Possibilité utiliser un
ThreadPoolTaskExecutor
183. Scaling: Remote Chunking
• Répartition de la charge vers des slaves
• Principe
– Lecture sur le Master
– Processor et Writer sur les slaves
• Spring Batch propose que des interfaces
• Spring Integration propose une
implementation
• La communication master/slave se fait à
travers un MOM