Paris JUG. Spring Batch. Mardi 14 Mai 2013. Olivier Bazoud Julien Jakubowski



Documents pareils
GECKO Software. Introduction à MOBIDICK. Modular But Integrated Application Framework

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

DÉVELOPPER DES APPLICATIONS WEB SÉCURISÉES

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

L art d ordonnancer. avec JobScheduler. François BAYART

Présentation d'un MOM open-source

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Hibernate vs. le Cloud Computing

Fusion : l interopérabilité chez Oracle

PORTAIL DE GESTION DES SERVICES INFORMATIQUES

du batch au temps réel Maxime Mézin Data & Photo Science Director

Open Source Job Scheduler. Installation(s)

Fiche de l'awt Intégration des applications

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Manuel d intégration API FTP SMS ALLMYSMS.COM

Intégration de systèmes

De à 4 millions. Khanh Tuong

Workflow et Service Oriented Architecture (SOA)

e-obs : Conception et utilisation Rémy Decoupes Ether // ums3365

Le modèle client-serveur

Installation ou mise à jour du logiciel système Fiery

Messagerie asynchrone et Services Web

Documentation technique

FOSS Enterprise Integration Plattaform

MQPerf un outil de diagnostic en mode SaaS des performances optimales du MOM JORAM

Les réseaux des EPLEFPA. Guide «PfSense»

JOnAS Day 5.1. Outils de développements

Editeur de logiciel de gestion Architecte en solution informatique.

Chef de projet H/F. Vous avez au minimum 3 ans d expérience en pilotage de projet de préférence dans le monde du PLM et de management d équipe.

Mettez les évolutions technologiques au service de vos objectifs métier

Curriculum Vitae de Michel Casabianca

FORMATION TALEND. Page 1 sur 9

Assurances & Mutuelles, Industrie, Santé, Énergie, Transport, Médias / Multimédias, Télécoms, Services

JOURNÉE TECHNIQUE BNPE 27 JANVIER 2015 LES COULISSES DE LA BNPE

Projet de Java Enterprise Edition

AVRIL Au delà de Hadoop. Panorama des solutions NoSQL

MANAGEMENT DES SERVICES INFORMATIQUES

SOA Open Source Intégration des services et business process dans une architecture SOA Open Source. Bruno Georges JBoss, a Division of Red Hat

Auto réparation des postes de travail Comprendre et déployer les mises à jours de TSC avec OfficeScan Corporate 5.5

Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour.

Change the game with smart innovation

BMC Middleware Management

Arian Papillon

Installation et prise en main

Camptocamp. / /14

Dossier de compétences :

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

SOLUTIONS METIERS. XWARE se positionne clairement aux services des entreprises.

LE MOT DE LA DIRECTION

TD sur JMS ) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS?

Consultant MOE/Référent technique JAVA/J2EE JSF, RICH FACES

DATASET / NETREPORT, propose une offre complète de solutions dans les domaines suivants:

les techniques d'extraction, les formulaires et intégration dans un site WEB

Spécialité Compétence complémentaire en informatique

Missions réalisées. Team Leader. Scrum Master (certifié)

GESTION DE LA PERFORMANCE. Albert Amar Avant-vente Middleware

Tungsten: une implémentation du futur clustering de PostgreSQL

E-commerce B2B Comment l exploiter avec Magento Enterprise Edition?

ArcGis Server 10 (sur VM CentOS bits) DOCUMENT D INSTALLATION

tech days AMBIENT INTELLIGENCE

Alfstore workflow framework Spécification technique

Java à Murex: un retour d'expérience. Jean-Pierre DACHER & Craig MORRISON

Oracle Fusion Middleware Concepts Guide 11g Release 1 (11.1.1) Figure 1-1 Architecture Middleware

Qualiac et la dématérialisation des factures. Dématérialisation des factures fournisseurs

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Réunion Guide France Paris La Défense 21 novembre 2006 Tour Descartes

L éditique, une activité transverse dans l entreprise

DEPLOIEMENT MICROSOFT WINDOWS

Labs Hadoop Février 2013

Urbanisme du Système d Information et EAI

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Smart Notification Management

BONJOURGRID : VERSION ORIENTÉE DONNÉE & MAPREDUCE SÉCURISÉ

Architectures Web Services RESTful

Urbanisation des SI. Des composants technologiques disponibles. Urbanisation des Systèmes d'information Henry Boccon Gibod 1

MOBILITE. Datasheet version 3.0

Famille IBM WebSphere Application Server

GER helpdesk permet de traiter et d optimiser la gestion de vos interventions au sein de chaque bureaux.

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Présentation générale

PPE Installation d un serveur FTP

MySQL - Réplication. Fichiers de relais et de statut de la réplication. Mise en place de la réplication

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza

Open Source Job Scheduler

Cyrille GUERIN 823, place Soulanges Brossard, J4X1L8

BI Open Source Octobre Alioune Dia, Consultant BI

Quels fondements, services fonctionnalités et limites de l intranet?


Réplication des données

Etude de l ENT de l Université de Paris 5. Mise en place d outils de suivi de la charge de l ENT (monitoring)

Proposition pour la création d un site de gestion de projet

Expert technique J2EE

Les Architectures Orientées Services (SOA)

Transcription:

Paris JUG Spring Batch Mardi 14 Mai 2013 Olivier Bazoud Julien Jakubowski

Intervenants Olivier Bazoud @obazoud Architecte technique sénior Java EE / Spring, Spring Batch, NoSQL, Node.js Co-auteur de «Spring Batch in Action» Julien Jakubowski @jak78 Java depuis > 10 ans Spécialisé Java EE / Spring Vos réactions: #springbatch #parisjug

De quoi va-t-on parler ce soir? On va parler de batchs en Java et aussi de bière http://www.flickr.com/photos/fromeyetopixel/2559391584/

Nos objectifs En sortant de la salle, vous savez: Si Spring Batch est utile pour vous (ou pas) Les notions principales de Spring Batch et quelques notions avancées Faire un batch «Spring Batch» dès demain https://github.com/obazoud/spring-batch-sug

Batch : de quoi parle-t-on? Batch processing = répétition de traitements sur un ensemble de données

Batch : de quoi parle-t-on? potentiellement grands volumes http://www.flickr.com/photos/claudiasofia99/2878579560/

Batch : de quoi parle-t-on? sans intervention d un utilisateur humain pas d interface homme-machine

Batch : de quoi parle-t-on? batch scheduler

Fiabilité Problèmes récurrents

Maintenabilité Problèmes récurrents

Problèmes récurrents Réinvention de la roue carrée

Spring Batch propose Un cadre Un vocabulaire (domain language) Traitement par lots Flow, Reprise sur erreur, Spring dans ses batchs Parallélisme Partitionnement Spring Batch Admin

Spring Batch Notions de base

BeerBatch Ecrire la date de début du batch Lire le fichier XML de recettes, au format BeerXML Ecrire en base de données

Schéma du batch InitialStep Ecrit une date dans un log RecipeStep Chunk oriented tasklet ItemReader ItemProcessor ItemWriter

Tasklet InitialStep Ecrit une date dans un log RecipeStep Chunk oriented tasklet ItemReader ItemProcessor ItemWriter

Tasklet Besoin Effectuer 1 tâche unitaire Exemples Unzip d un fichier Ecrire une date dans un log

ItemReader InitialStep InitialTasklet ItemReader RecipeStep Chunk oriented tasklet ItemProcessor ItemWriter

ItemReader Besoin Lire le XML de recettes ItemReader Fournit des items en entrée

Morceaux de code

ItemProcessor InitialStep InitialTasklet RecipeStep Chunk oriented tasklet ItemReader ItemProcessor ItemWriter

ItemProcessor Besoin Transforme, valide et / ou filtre une recette ItemProcessor Transforme un item en un autre Filtrer ou rejeter un item Emplacement pour les «règles métier»

ItemWriter InitialStep InitialTasklet RecipeStep Chunk oriented tasklet ItemReader ItemProcessor ItemWriter

ItemWriter Besoin Décharge les bières dans une base SQL ItemWriter Ecrit les items

Chunk InitialStep InitialTasklet RecipeStep Chunk oriented tasklet ItemReader ItemProcessor ItemWriter

Chunk Besoin Lire, transformer et écrire Chunk Lit et transforme chaque recette successivement Ecrit les recettes, par lot

Chunk Taille du lot = commit interval = 2

Step InitialStep InitialTasklet RecipeStep Chunk oriented tasklet ItemReader ItemProcessor ItemWriter

Step Besoin Etape dans le processus du batch Contrôle le workflow

Job InitialStep InitialTasklet RecipeStep Chunk oriented tasklet ItemReader ItemProcessor ItemWriter

Job Besoin Décrire les étapes du batch Composé d un ou plusieurs steps Spring Tools Suite

Tests automatisés Coder un batch en TDD Tests d'intégration facilités https://github.com/obazoud/spring-batch-sug

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» Ekino Moins de code produit Plus de tests unitaires & intégrations Spring Batch s'occupe de la montée en charge SQL/MyBatis 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

Flow

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

Monitoring

Spring Batch Admin

Un batch plus robuste reprise sur erreurs

Reprise sur erreur Spring Batch «out-of-the-box» propose: Sauter les erreurs non bloquantes (skip) survivre à quelques données invalides Recommencer un traitement (retry) survivre à une indisponibilité temporaire Redémarrer un batch (restart) on est en mesure de le relancer

Reprise sur erreur: Skip 0001;ABC;DEF; 0002;ABC;DEF; 000zxjgxdjghjsdfkud 0004;ABC;DEF; Par défaut, au-delà du «skip-limit», failed

Reprise sur erreur: Retry

Reprise sur erreur: Retry Relancer une opération si indisponibilité Par défaut, au-delà du «retry-limit», failed Personnaliser le «retry» RetryPolicy Stratégie entre 2 «retry»: BackoffPolicy RetryListener pour écouter

Reprise sur erreur: Restart

Reprise sur erreur: Restart Spring batch stocke des méta data

Reprise sur erreur: Restart Indique si le job est «restartable» Indique le nombre max de «restart» Reader/Writer doivent être «restartable»

Reprise sur erreur Conclusion Ecarter des items défectueux (skip) Recommencer une step s il y a une erreur temporaire (retry) Redémarrer un job (restart)

Flow

Gestion du flow Exemple plus simple ;) StepA StepAlert FAILED * StepB

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

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

Scaling

Horizontal Scaling RabbitMQ: Message-Oriented Middleware Découpler le producteur des consommateurs Batch Orienté Tâche ou Worker

Horizontal Scaling AMQP Spring Integra6on Exchange Queue Batch AMQP Spring Integra6on Worker Batch Spring Batch Worker Batch Spring Batch Worker Batch Spring Batch

Scaling Si un ItemProcessor est «lent» ItemProcessor en asynchrone ItemWriter attend la fin des processors AsyncItemProcessor / AsyncItemWriter

Scaling Multi-threaded Step (Local) Une Step est multithreaded Parallel Steps (Local) Les Steps sont exécutées en parallèle

Scaling Remote Chunking of Step (Remote) Distribution des chunks (Horizontal Scaling) Reader sur les master Processor/Writer sur les slaves Partitioning a Step (Local + Remote) Découpe les données suivant une clé de partition

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 Bientôt 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,

Le code de la présentation Liens https://github.com/obazoud/spring-batch-sug Spring Batch 2.1.x http://static.springsource.org/spring-batch Spring Batch 2.2 coming soon 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-tobatch http://blog.octo.com/spring-batch-par-quel-bout-le-prendre/