Archive

Articles taggués ‘batch’

Introduction à Spring-Batch

Contexte

Dans le cadre de la refonte d’une application extranet chez un client, j’ai été plus particulièrement chargé du développement des batchs. Les batchs à développer devaient tous réaliser des tâches similaires :

  • transferts FTP de fichiers (upload et download)
  • traitements sur les fichiers ainsi obtenus (redimensionnement d’images JPEG, parsing de fichiers XML)
  • enregistrement des méta-données sur les fichiers ainsi manipulés en base de données.

Dans l’ancienne version de l’application, les batchs étaient développés grâce à un framework interne (vieillissant). J’ai donc recherché des frameworks de batch permettant de remplacer l’ancienne architecture tout en s’intégrant avec les composants utilisés dans la partie web de l’application (développée en Spring et Struts 1).

Choix du framework

Dans un souci de facilitation de la maintenance, le choix de Spring-batch s’est rapidement imposé. En effet, la plupart des composants (DAOs, services) nécessaires pour réaliser les tâches ci-dessus avaient déjà été développés sous la forme beans Spring utilisés par l’application web ; la principale tâche restant à accomplir étant le câblage de ces différents composants. Il était donc plus efficace et plus maintenable de réutiliser les composants existants et de les injecter dans les batchs via IOC.

Le développement a donc consisté à créer les classes composant la partie « front » des batchs et à gérer leur enchaînement.

Le but de cet article n’est pas de décrire de manière détaillée le fonctionnement de Spring-batch. Il s’agit plutôt de réaliser par étapes un petit tutoriel, la documentation officielle de Spring étant très complète mais peu adaptée à une prise en main rapide : http://static.springsource.org/spring-batch/reference/html-single/index.html

Ce tutoriel traitera surtout du développement de tâches pour lesquels un composant de Spring-batch n’existe pas déjà. En effet, ce framework propose des classes permettant de mettre en place rapidement (et généralement en ne manipulant que les fichiers de configuration Spring) des tâches récurrentes dans le domaine des batchs :

  • parsing de fichiers XML pour insertion dans une base de données ;
  • export de données d’une base vers un fichier plat ;

Des exemples fonctionnels pour ces tâches sont disponibles sur le web, notamment dans la documentation officielle ; en revanche, il n’existe que très peu d’exemples de la mise en place de tâches “spécifiques” : dans le cas qui nous intéresse, ces tâches étaient par exemple l’upload/download de fichiers via FTP et de manipulation sur des fichiers images (en tant que fichiers, et donc sans lire leur contenu comme c’est le cas avec des fichiers CSV ou XML plus fréquemment manipulés par les batchs).

Lire la suite…

Share
Categories: Frameworks Tags: , ,

Rundeck

Bonjour à tous !

Dans cet article, nous allons nous pencher sur le cas d’un outil fort intéressant: “Rundeck” !

Qu’est ce que Rundeck ?

Rundeck est un outil d’automatisation de processus idéal pour administrer un ou plusieurs serveurs. Rundeck est ainsi une sorte de chef d’orchestre permettant d’exécuter des commandes sur des machines distantes ou locales.

L’outil est accompagné d’une interface dite ”web” simplifiant l’accès aux scripts et autres jobs mais également d’une interface “ligne de commande” : une collection d’outils est en effet fournie afin d’utiliser toutes les fonctionnalités offertes par le logiciel.

Cet article se décompose en trois parties. Dans la première, nous verrons comment installer Rundeck sur une machine. La seconde partie traitera de la configuration de l’outil : comment créer des tâches dont les commandes s’exécuteront sur des machines distantes. Enfin, la troisième et dernière partie permettra d’en savoir plus quant à  l’utilisation concrète de Rundeck au sein d’un projet.

Lire la suite…

Share