Spring User Group France




  Spring Batch
     Mardi 27 Avril 2010

     Julien Jakubowski
       Olivier Bazoud

                           1
Intervenants
➢   Olivier Bazoud, FullSIX, 12 ans d'expérience
     ●   Architecte technique de sites web à fort traffic
     ●   Spécialisé Java EE/Spring
     ●   Spring Batch, Groovy, Grails
     ●   Spring User Group Paris
➢   Julien Jakubowski, OCTO Technology
     ●   Architecte, 9 ans d'expérience
     ●   Spécialisé Java EE / Spring
     ●   Productivité et qualité des développements
     ●   Ch'ti JUG

                                                            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 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://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 que Spring Batch existe
     ●   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 = Traitement par lots




    http://www.flickr.com/photos/burnblue/308441464/




                                                       9
Batch : de quoi parle-t-on ?
            ➢       Opérations métiers sur de grands volumes




http://www.flickr.com/photos/claudiasofia99/2878579560/

                                                               10
Batch : de quoi parle-t-on ?
➢   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 des notions de Spring Batch, progres-
          sivement
➢       Retours d'expérience
➢       Forces et faiblesses
➢       Notions avancées




                                                               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



Trace        Parallélisme     Une infrastructure pour les batchs
        Partitionnement     Reprise sur erreurs

                                                                   15
Beer batch
➢   Un batch “old school”
➢   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
Démo




       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 fichier de rejets
➢   Ecrire en base de données




                                                21
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
ItemReader
➢   Besoin
     ●   Lire le XML des recettes
➢   ItemReader
     ●   Fournir des items en entrée




         <xml>             SELECT … FROM ...
         123;AB;
         456;CD;

                                               24
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 retourne un autre
     ●   Emplacement pour les « règles métier »




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

               123;AB;
               456;CD;

                                                  31
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 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
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 d'une procédure stockée
     ●   Appel d'un web service




                                         43
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 de notre code custom
    ●   writers, processors etc...
➢   Tests d'intégration




                             Sonar




                                           52
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 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 50Mo + 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
✔ 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 vous de choisir pour une prochaine session...




                                                      58
Liens
➢   Spring User Group Paris
    ●   http://groups.google.fr/group/sugfr
➢   Spring Batch 2.1.1
    ●   http://static.springsource.org/spring-batch
➢   Le code de la présentation
    ●   http://code.google.com/p/fr-sug-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/



                                                                                    59
Questions ?




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




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



                                                       61

Contenu connexe

PPTX
Spring Batch Avance
PDF
Bbl sur les tests
PDF
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
PPTX
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
PDF
Apache Kafka, Un système distribué de messagerie hautement performant
PPTX
PDF
Gitlab CI : Integration et Déploiement Continue
PDF
ドメイン駆動設計 コアドメインを語り合ってみよう
Spring Batch Avance
Bbl sur les tests
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Apache Kafka, Un système distribué de messagerie hautement performant
Gitlab CI : Integration et Déploiement Continue
ドメイン駆動設計 コアドメインを語り合ってみよう

Tendances (20)

PDF
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...
PDF
Spring boot jpa
PDF
Spring Framework - Core
PPTX
Kafka 101
PDF
Support distributed computing and caching avec hazelcast
PDF
ゼロからはじめるKVM超入門
PDF
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
PDF
LINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまで
PDF
クラスローダーについて
PDF
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
PDF
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
PDF
Networking in Java with NIO and Netty
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
PDF
Apache Kafka Fundamentals for Architects, Admins and Developers
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PDF
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
PDF
Spring Boot
PDF
リッチなドメインモデル 名前探し
PDF
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...
Spring boot jpa
Spring Framework - Core
Kafka 101
Support distributed computing and caching avec hazelcast
ゼロからはじめるKVM超入門
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
LINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまで
クラスローダーについて
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
Networking in Java with NIO and Netty
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
Apache Kafka Fundamentals for Architects, Admins and Developers
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
Spring Boot
リッチなドメインモデル 名前探し
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Publicité

En vedette (20)

PPTX
Workshop Spring - Session 4 - Spring Batch
PDF
Spring Batch
PDF
Spring Batch - Lessons Learned out of a real life banking system.
PDF
Support de cours Spring M.youssfi
PPT
Spring Batch Introduction
PPTX
Introduction à spring boot
PPTX
Workshop Spring - Session 5 - Spring Integration
PPTX
Adaptation des compétences : comment réussir sa transformation numérique ?
PDF
Spring batch overivew
PPTX
Spring batch
PPTX
Parallel batch processing with spring batch slideshare
PDF
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
PPTX
Spring Framework Petclinic sample application
PPT
Presentation Spring, Spring MVC
PDF
HTML5, Spring, NoSQL et mobilité
PPTX
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
ODP
Les règles de politesse présentées par Malaury
PPT
Sabado 22
PPT
Toma de decisiones
Workshop Spring - Session 4 - Spring Batch
Spring Batch
Spring Batch - Lessons Learned out of a real life banking system.
Support de cours Spring M.youssfi
Spring Batch Introduction
Introduction à spring boot
Workshop Spring - Session 5 - Spring Integration
Adaptation des compétences : comment réussir sa transformation numérique ?
Spring batch overivew
Spring batch
Parallel batch processing with spring batch slideshare
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Spring Framework Petclinic sample application
Presentation Spring, Spring MVC
HTML5, Spring, NoSQL et mobilité
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Les règles de politesse présentées par Malaury
Sabado 22
Toma de decisiones
Publicité

Similaire à Spring Batch - concepts de base (20)

PDF
Spring Batch - Julien Jakubowski - November 2010
PPTX
Chtijug springbatch 2011
PPTX
Paris JUG Spring Batch
PDF
Spring Batch ParisJUG
PDF
WS User Group - Spring Batch - Xebia
PPTX
Breizhjug spring batch 2011
PDF
7 Suivre Les Developpements Et Recetter
PDF
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
PDF
Deux ans de développement Agile, erreurs et succès
PDF
Conférence Shinken à SophiaConf2012 (Jean Gabès)
PDF
Tests de performances d'une application Java EE
PPTX
Présentation1
PDF
Importer 500 millions de données de MySQL vers Neo4j
PDF
Retour d'expérience sur notre stack de log
PDF
Développeur ta prod tu respecteras !
PDF
JCertif 2012 : Scrum avec Icescrum
PDF
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
KEY
Spring Batch 17-05-2011
PDF
Du Docker dans notre workflow de dev
Spring Batch - Julien Jakubowski - November 2010
Chtijug springbatch 2011
Paris JUG Spring Batch
Spring Batch ParisJUG
WS User Group - Spring Batch - Xebia
Breizhjug spring batch 2011
7 Suivre Les Developpements Et Recetter
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Deux ans de développement Agile, erreurs et succès
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Tests de performances d'une application Java EE
Présentation1
Importer 500 millions de données de MySQL vers Neo4j
Retour d'expérience sur notre stack de log
Développeur ta prod tu respecteras !
JCertif 2012 : Scrum avec Icescrum
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Spring Batch 17-05-2011
Du Docker dans notre workflow de dev

Dernier (8)

PPTX
Pourquoi j'ai arrêté Magento : neuf ans de transitions technologiques
PDF
Gestion des stocks et inventaire, SCM510 Col15
PDF
Utilisation de la gestion des ressources dans SAP Extended Warehouse Manageme...
PDF
Cours du langage HTML depuis initiation à la maîtrise
PDF
Personnalisation de rubriques supplémentaires dans SAP Extended Warehouse Man...
PDF
SHAKA 2025 - Création d'Images en IA : Mode Expert Activé
PDF
Initiation aux Reseaux Informatiques Cours 1.pdf
PDF
Gestion de la main-d’œuvre dans SAP Extended Warehouse Management, EWM125 Col26
Pourquoi j'ai arrêté Magento : neuf ans de transitions technologiques
Gestion des stocks et inventaire, SCM510 Col15
Utilisation de la gestion des ressources dans SAP Extended Warehouse Manageme...
Cours du langage HTML depuis initiation à la maîtrise
Personnalisation de rubriques supplémentaires dans SAP Extended Warehouse Man...
SHAKA 2025 - Création d'Images en IA : Mode Expert Activé
Initiation aux Reseaux Informatiques Cours 1.pdf
Gestion de la main-d’œuvre dans SAP Extended Warehouse Management, EWM125 Col26

Spring Batch - concepts de base

  • 1. Spring User Group France Spring Batch Mardi 27 Avril 2010 Julien Jakubowski Olivier Bazoud 1
  • 2. Intervenants ➢ Olivier Bazoud, FullSIX, 12 ans d'expérience ● Architecte technique de sites web à fort traffic ● Spécialisé Java EE/Spring ● Spring Batch, Groovy, Grails ● Spring User Group Paris ➢ Julien Jakubowski, OCTO Technology ● Architecte, 9 ans d'expérience ● Spécialisé Java EE / Spring ● Productivité et qualité des développements ● Ch'ti JUG 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 que Spring Batch existe ● 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 = Traitement par lots http://www.flickr.com/photos/burnblue/308441464/ 9
  • 10. Batch : de quoi parle-t-on ? ➢ Opérations métiers sur de grands volumes http://www.flickr.com/photos/claudiasofia99/2878579560/ 10
  • 11. Batch : de quoi parle-t-on ? ➢ 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 des notions de Spring Batch, progres- sivement ➢ Retours d'expérience ➢ Forces et faiblesses ➢ Notions avancées 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 Trace Parallélisme Une infrastructure pour les batchs Partitionnement Reprise sur erreurs 15
  • 16. Beer batch ➢ Un batch “old school” ➢ 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 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. ItemReader ➢ Besoin ● Lire le XML des recettes ➢ ItemReader ● Fournir des items en entrée <xml> SELECT … FROM ... 123;AB; 456;CD; 24
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 52. Tests ➢ Tests unitaires de notre code custom ● writers, processors etc... ➢ Tests d'intégration Sonar 52
  • 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 50Mo + 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 ✔ 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 vous de choisir pour une prochaine session... 58
  • 59. Liens ➢ Spring User Group Paris ● http://groups.google.fr/group/sugfr ➢ Spring Batch 2.1.1 ● http://static.springsource.org/spring-batch ➢ Le code de la présentation ● http://code.google.com/p/fr-sug-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/ 59