SlideShare une entreprise Scribd logo
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

Tendances

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
Thibault Martinez
 
From Query Plan to Query Performance: Supercharging your Apache Spark Queries...
From Query Plan to Query Performance: Supercharging your Apache Spark Queries...From Query Plan to Query Performance: Supercharging your Apache Spark Queries...
From Query Plan to Query Performance: Supercharging your Apache Spark Queries...
Databricks
 
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
용근 권
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
Antoine Rey
 
Introduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission ControlIntroduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission Control
Leon Chen
 
Nouveautés Java 9-10-11
Nouveautés Java 9-10-11Nouveautés Java 9-10-11
Nouveautés Java 9-10-11
Mahamadou TOURE, Ph.D.
 
Whitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applicationsWhitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applications
Yura Nosenko
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
ENSET, Université Hassan II Casablanca
 
Scylla Summit 2022: How to Migrate a Counter Table for 68 Billion Records
Scylla Summit 2022: How to Migrate a Counter Table for 68 Billion RecordsScylla Summit 2022: How to Migrate a Counter Table for 68 Billion Records
Scylla Summit 2022: How to Migrate a Counter Table for 68 Billion Records
ScyllaDB
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & Features
DataStax Academy
 
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
Altinity Ltd
 
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, AdjustShipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
Altinity Ltd
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
Seungmo Koo
 
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
ENSET, Université Hassan II Casablanca
 
Redis cluster
Redis clusterRedis cluster
Redis cluster
iammutex
 
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with KubernetesKubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
SeungYong Oh
 
Spring Batch
Spring BatchSpring Batch
Spring Batch
Kokou Gaglo
 
Bbl sur les tests
Bbl sur les testsBbl sur les tests
Bbl sur les tests
Idriss Neumann
 
Spring boot Under Da Hood
Spring boot Under Da HoodSpring boot Under Da Hood
Spring boot Under Da Hood
Michel Schudel
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
ENSET, Université Hassan II Casablanca
 

Tendances (20)

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
From Query Plan to Query Performance: Supercharging your Apache Spark Queries...
From Query Plan to Query Performance: Supercharging your Apache Spark Queries...From Query Plan to Query Performance: Supercharging your Apache Spark Queries...
From Query Plan to Query Performance: Supercharging your Apache Spark Queries...
 
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
 
Introduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission ControlIntroduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission Control
 
Nouveautés Java 9-10-11
Nouveautés Java 9-10-11Nouveautés Java 9-10-11
Nouveautés Java 9-10-11
 
Whitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applicationsWhitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applications
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Scylla Summit 2022: How to Migrate a Counter Table for 68 Billion Records
Scylla Summit 2022: How to Migrate a Counter Table for 68 Billion RecordsScylla Summit 2022: How to Migrate a Counter Table for 68 Billion Records
Scylla Summit 2022: How to Migrate a Counter Table for 68 Billion Records
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & Features
 
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
 
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, AdjustShipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
 
Redis cluster
Redis clusterRedis cluster
Redis cluster
 
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with KubernetesKubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
 
Spring Batch
Spring BatchSpring Batch
Spring Batch
 
Bbl sur les tests
Bbl sur les testsBbl sur les tests
Bbl sur les tests
 
Spring boot Under Da Hood
Spring boot Under Da HoodSpring boot Under Da Hood
Spring boot Under Da Hood
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 

En vedette

Spring Batch
Spring BatchSpring Batch
Spring Batch
victor_gallet
 
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
Raffael Schmid
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
ENSET, Université Hassan II Casablanca
 
Spring Batch Introduction
Spring Batch IntroductionSpring Batch Introduction
Spring Batch Introduction
Tadaya Tsuyukubo
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
Antoine Rey
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
Antoine Rey
 
Adaptation des compétences : comment réussir sa transformation numérique ?
Adaptation des compétences : comment réussir sa transformation numérique ?Adaptation des compétences : comment réussir sa transformation numérique ?
Adaptation des compétences : comment réussir sa transformation numérique ?
Qapa.fr
 
Spring batch overivew
Spring batch overivewSpring batch overivew
Spring batch overivew
Chanyeong Choi
 
Spring batch
Spring batchSpring batch
Spring batch
nishasowdri
 
Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch   slideshareParallel batch processing with spring batch   slideshare
Parallel batch processing with spring batch slideshare
Morten Andersen-Gott
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
ENSET, Université Hassan II Casablanca
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
Antoine Rey
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
Nathaniel Richand
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilité
Julien Dubois
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Saâd Zerhouni
 
Les règles de politesse présentées par Malaury
Les règles de politesse présentées par MalauryLes règles de politesse présentées par Malaury
Les règles de politesse présentées par Malaury
Christine FIASSON
 
Sabado 22
Sabado 22Sabado 22
Sabado 22
cefic
 
Toma de decisiones
Toma de decisionesToma de decisiones
Toma de decisiones
Jose Manuel Silva Gomez
 
Musculation 2009-2010
Musculation 2009-2010Musculation 2009-2010
Musculation 2009-2010
MuscuLaffitte
 

En vedette (20)

Spring Batch
Spring BatchSpring Batch
Spring Batch
 
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Spring Batch Introduction
Spring Batch IntroductionSpring Batch Introduction
Spring Batch Introduction
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
 
Adaptation des compétences : comment réussir sa transformation numérique ?
Adaptation des compétences : comment réussir sa transformation numérique ?Adaptation des compétences : comment réussir sa transformation numérique ?
Adaptation des compétences : comment réussir sa transformation numérique ?
 
Spring
SpringSpring
Spring
 
Spring batch overivew
Spring batch overivewSpring batch overivew
Spring batch overivew
 
Spring batch
Spring batchSpring batch
Spring batch
 
Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch   slideshareParallel batch processing with spring batch   slideshare
Parallel batch processing with spring batch slideshare
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilité
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
 
Les règles de politesse présentées par Malaury
Les règles de politesse présentées par MalauryLes règles de politesse présentées par Malaury
Les règles de politesse présentées par Malaury
 
Sabado 22
Sabado 22Sabado 22
Sabado 22
 
Toma de decisiones
Toma de decisionesToma de decisiones
Toma de decisiones
 
Musculation 2009-2010
Musculation 2009-2010Musculation 2009-2010
Musculation 2009-2010
 

Similaire à Spring Batch - concepts de base

Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
JUG Lausanne
 
Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011
Olivier BAZOUD
 
Paris JUG Spring Batch
Paris JUG Spring BatchParis JUG Spring Batch
Paris JUG Spring Batch
Olivier BAZOUD
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
Olivier BAZOUD
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011
Olivier BAZOUD
 
7 Suivre Les Developpements Et Recetter
7 Suivre Les Developpements Et Recetter7 Suivre Les Developpements Et Recetter
7 Suivre Les Developpements Et Recetter
Stéphane Bordage
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Nicolas Silberman
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
Agile Tour 2009 Québec
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Jean Gabès
 
Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EE
Antonio Gomes Rodrigues
 
Présentation1
Présentation1Présentation1
Présentation1
Boulkenafet samir
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4j
Gabriel Pillet 🐙
 
Maven
MavenMaven
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de log
Julien Maitrehenry
 
Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !
EmileChomton1
 
JCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec IcescrumJCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec Icescrum
Rossi Oddet
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Horacio Gonzalez
 
Spring Batch 17-05-2011
Spring Batch 17-05-2011Spring Batch 17-05-2011
Spring Batch 17-05-2011
Normandy JUG
 
Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de dev
Kodo Kojo
 

Similaire à Spring Batch - concepts de base (20)

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

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