WS User Group - Spring Batch - Xebia
Upcoming SlideShare
Loading in...5
×
 

WS User Group - Spring Batch - Xebia

on

  • 836 views

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!

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

Statistics

Views

Total Views
836
Views on SlideShare
826
Embed Views
10

Actions

Likes
0
Downloads
9
Comments
0

1 Embed 10

https://twitter.com 10

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

WS User Group - Spring Batch - Xebia WS User Group - Spring Batch - Xebia Presentation Transcript

  • Interface21 UG Spring Batch Mercredi 20 Novembre 2013 Olivier Bazoud
  • Intervenant Olivier Bazoud @obazoud Senior developer Kyriba Spring-* / JEE, NoSQL, Node.js Scala bientôt ;) Co-auteur de “Spring Batch in Action”
  • Sommaire ➢ C’est quoi un batch ? ➢ Problèmes récurrents ➢ Notions de bases ➢ Notions avancées ➢ Conclusion
  • C’est quoi un batch ? Répétition de traitements sur des données ➔ Sur des grands volumes
  • C’est quoi un batch ? … sans intervention d’un utilisateur humain ➔ pas d’interface homme-machine
  • C’est quoi un batch ? batch ≠ scheduler
  • C’est quoi un batch ? Exemples: • Import flat / XML dans une base de données – Nouveaux clients – Flux financier… • Mise à jour de données – référentiel • …
  • Problèmes récurrents • Fiabilité
  • Problèmes récurrents • Maintenabilité
  • Problèmes récurrents • Réinvention de la roue… carrée
  • Spring Batch Notions de base
  • Spring Batch propose… • • • • • • Un cadre Un vocabulaire (domain language) Traitement par lots Flow, Reprise sur erreur, … Spring dans ses batchs … Parallélisme Scaling Partitionnement Spring Batch Admin Monitoring
  • Spring Batch “Spring Batch is a lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems.”
  • Infrastructure
  • Application Insérer des départements et des villes dans une base de données à partir de fichier XML
  • Spécifications 3. Unzip du fichier (départements + villes) Charger des départements dans la base Charger des villes dans la base ➢ Lancer la web application 1. 2.
  • Flow Dézipper le fichier zip Insert des départements Insert des villes
  • Job ● ● Validation des paramètres du “job” Composé d’une ou plusieurs étapes ○ ● ● pas forcément linéaire Liste un ensemble de Listeners Peut hériter d’un autre job
  • Flow Dézipper le fichier zip Ajouter des départements Ajouter des villes
  • Step ● ● Etape dans le processus du batch “Separation of Concerns” ○ ● Distinction entre l’enchainement des étapes et leur éxécution Liste un ensemble de Listeners
  • Step
  • Flow Dézipper le fichier zip Ajouter des départements Ajouter des villes Lancer une commande système unzip
  • Tasklet ● Permet d’éxecuter une tâche ○ ○ Appel à une commande système Appel un webservice
  • Tasklet
  • Flow Dézipper le fichier zip Ajouter des départements Lire un département (xml) Processer Ecrire des départements Ajouter des villes
  • ItemReader ● ● ➢ Lire un flux de données Résistant aux gros volumes Lire une base, un fichier XML, ...
  • ItemProcessor ● ● Transforme, valide et/ou filtre la donnée Emplacement des rêgles métiers
  • ItemWriter ● ➢ ➢ ➢ Ecrire un lot de données Ecriture par lot Ecrire dans une base de données Ecrire un fichier XML, CSV, ...
  • Reader/Processor/Writer
  • Flow Dézipper le fichier zip Lire une ville (xml) Ajouter des départements Processer Ajouter des villes Ecrire des villes
  • Chunk Lire, Transformer et Ecrire ➢ ➢ ➢ Ecriture par lot Limiter la consommation mémoire Optimiser l’écriture
  • Chunk Taille du lot = commit interval = 2
  • Chunk
  • Chunk
  • Tests ● Coder un batch en TDD ○ POJO every where (Procesor) ● Tests d'intégration facilités ○ @RunWith ○ Step, Job
  • Tests
  • Listeners
  • Listeners ★ ★ ★ ★ ★ ★ JobExecutionListener StepListener Item{Read,Process,Write}Listener StepExecutionListener SkipListener, RetryListener ...
  • Spring Batch 2.2 Juin 2013 Java Config Support de Spring Data Non-identifying Job Parameters AMQP support
  • Forces et faiblesses ✔ Batchs complexes mieux maintenables ✔ Productivité ✔ Tests ✔ Ticket d'entrée ✔ Ne convient pas à tous les batchs
  • Retour d’expérience • Avec « Spring Batch » – Moins de code produit – Plus de tests unitaires & intégrations – Spring Batch s'occupe de la montée en charge • Gain par rapport à un batch « legacy » – XML 100Mo + SQL; Gain : de 60 mn à 8mn – 10 fichiers 4Mo + SQL; Gain : de 10mn à 1mn30s – ~20 fois rapide qu’un batch en … PHP ;)
  • JSR-352 « javax.batch » Ressemble beaucoup à Spring Batch
  • Spring Batch Allons plus loin
  • Un batch plus robuste reprise sur erreurs
  • Reprise sur erreur ● Sauter les erreurs non bloquantes (skip) ○ ● Recommencer un traitement (retry) ○ ● survivre à quelques données invalides survivre à une indisponibilité temporaire Redémarrer un batch (restart) ○ on est en mesure de le relancer
  • Skip 0001;ABC;DEF; 0002;ABC;DEF; 000zxjgxdjghjsdfkud 0004;ABC;DEF; • Au-delà du « skip-limit », failed • Personnaliser le « skip » • SkipListener pour écouter
  • Retry
  • Retry ● ● Relancer une opération si indisponibilité Au-delà du « retry-limit », failed (défaut) ○ ● RetryPolicy ○ ● Personnaliser le « retry » Stratégie entre 2 « retry »: BackoffPolicy RetryListener pour écouter
  • Restart
  • Restart • Spring batch stocke des méta data
  • Restart • Indique si le job est « restartable » ou pas • Indique le nombre max de « restart » • Reader/Writer doivent être « restartable »
  • Reprise sur erreur • Ecarter des items défectueux (skip) • Recommencer une step s’il y a une erreur temporaire (retry) • Redémarrer un job (restart)
  • Gestion du flow
  • Gestion du flow Dézipper le fichier zip * Ajouter des départements * Ajouter des villes failed Alertes
  • Gestion du flow
  • Gestion du flow • Status – Etat du job/step en cours/après d’exécution • Créer et utiliser ses propres « status » • Gérer le flow – StepExecutionListener – JobDecider
  • Scaling
  • Scaling
  • Scaling – Multi-threaded Step (single process) • Une Step est multi threaded – Parallel Steps (single process) • Les Steps sont exécutées en parallèle – Remote Chunking of Step (multi process) • Distribution des chunks par slave – Partitioning a Step (single or multi process) • Partage les données à travers les slaves
  • Scaling “Partitioning” • Répartir les données suivant une clé de partition ⇒ « Partitionner » • Traiter les données ⇒ « PartitionHandler »
  • Horizontal Scaling • RabbitMQ: Message-Oriented Middleware – Découpler le producteur des consommateurs • Batch Orienté Tâche ou Worker
  • Horizontal Scaling AMQP Spring Integration Exchange Queue Batch AMQP Spring Integration pulling Worker Batch Worker Batch Worker Batch Spring Batch Spring Batch Spring Batch
  • Monitoring • Graphite http://graphite.wikidot.com
  • Monitoring • Collectd – http://collectd.org – démon qui recueille périodiquement des statistiques de performance du système • JMXTrans – https://github.com/jmxtrans/jmxtrans – Interroge les données JMX de la JVM et les envoyer dans Graphite
  • Monitoring • Metrics – http://metrics.codahale.com/ – Connaitre l’intérieur de votre application – Gauges, Counters, Meters, Histogram, Timers • Extension pour Spring Batch – https://github.com/obazoud/metrics-spring-batch – Disponible sur Maven Central
  • Monitoring Mode push au lieu de pull
  • Monitoring
  • Spring Batch Admin
  • Spring Batch Admin • Console Web pour Spring Batch – – – – – « Standalone » ou « Embedded » API Rest Uploader une configuration, un fichier à traiter « Customisable » Informations sur les jobs, steps, …
  • Spring Batch Admin
  • Conclusion Les notions de bases ❏ Job, Step ❏ Reader, Processor, Writer Les notions avancées ❏ Robustesse, Scaling, Monitoring #NoXML
  • Questions
  • Crédits Slides http://www.slideshare.net/obazoud/presentations Auteurs (des éditions précédentes) ○ ○ Olivier Bazoud Julien Jakubowski