spring batch - julien jakubowski - november 2010

Post on 25-May-2015

300 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Spring Batch - Julien Jakubowski - November 2010

TRANSCRIPT

1

JUG Lausanne

9 novembre 2010

Julien JakubowskiOlivier Bazoud

Spring BatchSpring Batch

2

Intervenants ➢ Olivier Bazoud, FullSIX, 12 ans d'expérience

● Architecte technique de sites web à fort traffic

● Java EE / Spring, Spring Batch, Groovy, Grails

● Co auteur de « Spring Batch in Action »

● Spring User Group France

➢ Julien Jakubowski, OCTO Technology

● Architecte, 10 ans d'expérience

● Spécialisé Java EE / Spring

● Productivité et qualité des développements

● Ch'ti JUG, Agile Tour Lille

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 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 = suite de traitements sur ensemble

de données...

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

10

Batch : de quoi parle-t-on ?➢ … potentiellement grands volumes...

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

11

Batch : de quoi parle-t-on ?

➢ … sans intervention d'un utilisateur humain.(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 progressive des notions de Spring Batch

➢ Retours d'expérience

➢ Forces et faiblesses

➢ Questions / réponses

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

Parallélisme

Partitionnement

Une infrastructure pour les batchs

16

Beer batch➢ Implémentation « naïve »

➢ Caractéristiques :

● Lire le fichier XML de recettes, au format BeerXML

● Filtrer certaines recettes et créer un fichier de rejets

● Ecrire en base de données

17

Démo

Anti-patterns...

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 facilités via le découpage Spring Batch

● writers, processors etc...

➢ Tests d'intégration facilités par Spring

● @RunWith

● Step, Job

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 100Mo + 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

...the Spring way, Spring Intégration

✔ 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 votre disposition...A votre disposition...

59

Spring Batch in Action➢ http://www.manning.com/templier

60

Liens➢ Spring User Group Paris

● http://groups.google.fr/group/sugfr

➢ Le code de la présentation● http://code.google.com/p/fr-sug-spring-batch

➢ 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/

61

Questions ?

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

62

ROTI

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

top related