Spring Batch - concepts de base

Post on 28-May-2015

14.362 views 5 download

Tags:

description

Présentation de Spring Batch au Spring User Group France

Transcript of Spring Batch - concepts de base

1

Spring User Group France

Mardi 27 Avril 2010

Julien JakubowskiOlivier Bazoud

Spring BatchSpring Batch

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

3

De quoi va-t-on parler ce soir ?➢ On va parler de batchs en Java ...

Spring BatchSpring Batch

➢ … et aussi de bière

http://www.flickr.com/photos/fromeyetopixel/2559391584/

4

Teaser➢ Quand j'écris une application Web, il y a pléthore de

frameworks Web

JSFJSF

5

Teaser➢ Quand j'accède à une base de données, il y a moult

solutions de persistance

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/

7

Teaser➢ Spring Batch offre pourtant une solution pour vous

guider lors de l'écriture de vos batchs

Spring BatchSpring Batch

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

9

Batch : de quoi parle-t-on ?

➢ Batch processing = Traitement par lots

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

10

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

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

11

Batch : de quoi parle-t-on ?

➢ Pas d'interface graphique

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

13

Batch : de quoi parle-t-on ?

➢ Un batch n'est pas un scheduler

● Cron, Quartz, $U...

● Mais un scheduler peut le lancer

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

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

Reprise sur erreurs

Trace Parallélisme

Partitionnement

Une infrastructure pour les batchs

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

17

Démo

18

Problèmes récurrents➢ Fiabilité

19

Problèmes récurrents➢ Maintenabilité

20

Problèmes récurrents➢ Réinvention de la roue

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

22

Schéma du batch

ItemReader ItemProcessor

RecipeStep

ItemWriter

InitialStep

InitialTasklet

Chunk Oriented Tasklet

23

ItemReader

ItemProcessor

RecipeStep

ItemWriter

InitialStep

InitialTasklet

Chunk Oriented Tasklet

ItemReader

24

ItemReader➢ Besoin

● Lire le XML des recettes

➢ ItemReader

● Fournir des items en entrée

<xml> SELECT … FROM ...

123;AB;456;CD;

25

Morceaux de code

26

ItemProcessor

ItemReader

RecipeStep

ItemWriter

InitialStep

InitialTasklet

Chunk Oriented Tasklet

ItemProcessor

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 »

28

Morceaux de code

29

Morceaux de code

30

ItemWriter

ItemReader ItemProcessor

RecipeStep

InitialStep

InitialTasklet

Chunk Oriented Tasklet

ItemWriter

31

Item Writer➢ Besoin

● Décharger les bières dans une base SQL

➢ ItemWriter

● Ecrire les items

<xml>

123;AB;456;CD;

INSERT INTO...

32

Morceaux de code

33

Chunk

RecipeStep

InitialStep

InitialTasklet

ItemReader ItemProcessor ItemWriter

Chunk Oriented Tasklet

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

35

Chunk

36

Morceaux de code

37

Listener

RecipeStep

InitialStep

InitialTasklet

ItemReader ItemProcessor ItemWriter

Chunk Oriented Tasklet

38

Listener➢ Besoin

● Création du fichier de rejet

➢ Listener

● Etre à l'écoute des événements du batch

39

Morceaux de code

40

Morceaux de code

41

Morceaux de code

42

Tasklet

ItemReader ItemProcessor

RecipeStep

ItemWriter

InitialStep

Chunk Oriented Tasklet

InitialTasklet

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

44

Morceaux de code

45

Step

ItemReader ItemProcessor

RecipeStep

ItemWriter

InitialStep

InitialTasklet

Chunk Oriented Tasklet

46

Step➢ Besoin

● Etape dans le processus du batch

● Contrôle le workflow

47

Job

ItemReader ItemProcessor

RecipeStep

ItemWriter

InitialStep

InitialTasklet

Chunk Oriented Tasklet

48

Job➢ Besoin

● Décrire les étapes du batch

● Composé d'une ou plusieurs steps

Spring Tool Suite

49

Morceaux de code

50

Traitement par lots

51

Lancer un job

52

Tests➢ Tests unitaires de notre code custom

● writers, processors etc...

➢ Tests d'intégration

Sonar

53

Morceaux de code

54

Morceaux de code

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

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

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

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...A vous de choisir pour une prochaine session...

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/

60

Questions ?

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

61

ROTI

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