Migration d'une application avec l'ETL Talend

L’obsolescence d’un certain nombre de produits et d’applications maintenant trop anciens ou ne répondant plus aux besoins actuels, conduit le plus souvent les entreprises à changer d’environnement.
Ghislain VASSOTMis à jour le 16 Mai 2013

Cet article fait part de la solution TalenD, de ses tenants et aboutissants lors d’une démarche de MigrationCela désigne le changement de la structure d'une donnée ou d'un environnement vers à un autre (différent du premier)..

L’obsolescence d’un certain nombre de produits et d’applications maintenant trop anciens ou ne répondant plus aux besoins actuels, conduit le plus souvent les entreprises à changer d’environnement.

De ce fait, lors de de la migration vers ce nouveau système, ou encore du passage vers une nouvelle version d’une application dans son ensemble ou d’une base de données, les données doivent être préservées dans leur intégralité.

De même, dans le cas d’une acquisition ou d’une fusion,  un bon nombre d’applications redondantes sont la majeure partie du temps, délaissés, mais les renseignements qu’elles contiennent doivent être conservés dans le système persistant.

Transférer les données existantes dans le nouvel environnement tout en n’altérant pas la qualité de celles-ci est le but de la migration de données. Celles-ci doivent être transformées (d’ou le "T" de l’acronyme ETL) sous un format approprié pour le nouveau système et ce, tout en préservant l’information et l’intégrité stockée dans l’ancien système. 

solution-migration-diagram_2.jpg

Difficulté : La diversité des données et leurs traitements associés

Dans les contextes de migration d’applications ou de systèmes, la migration des données est souvent perçue comme la partie la plus annexe et simpliste. Cependant, effectuer une migration de données sans encombre et sans conséquences négative à la fois pour l’administrateur et pour l’utilisateur peut révéler du véritable challenge, suivant les environnements rentrant en jeux. 

Voici plusieurs points essentiels à garder en tête lors du démarrage et de l’analyse d’un projet migration.

Réponse : Talend pour l’Intégration/la Migration de Données

La suite TalendTalend est un logiciel ETL permettant de faire de l'Extract, de la Transformation et du chargement (Load) de données. complète offre toute une gamme de logiciels permettant de répondre à de nombreuse problématique : ESB, Big Data, BPM, MDM, Qualité de données et Intégration de données. C’est ces deux dernières solutions qui montrent tout leur intérêt lors de la Migration d’applications. Talend Open Studio étant le nom générique donné pour la version gratuite et Talend Integration Suite pour la version full professionnelle (application intranet de suivi des flux, développement partagésetc.) 

talend_logo.jpg

Les solutions Open Source d’intégration de données de Talend sont donc parfaitement adaptées pour les migrations de données d’entreprise. Il se démarque de ces concurrents sur le nombreux points qui en fond de lui un des leader dans le domaine, autant du point de vue design que pour le développement et l’exécution de processus de migration de données :

Mise en situation du produit Talend for Data Integration

Sera utilisé ici Talend Open Studio for Data Integration (V5.2.1). 

il les jobs, contexte et métadonnées. Talend est ainsi capable d’extraire aussi bien les informations d’une base Oracle que d’un fichier Excel.

C’est dans cette partie Métadonnées que seront initialisées plus particulièrement les connections sources et cibles. 

talend_menu_repository.jpg

Bien qu’il soit théoriquement possible de s’en sortir avec le RepositoryC'est l'emplacement où Git va stocker toutes les informations permettant de gérer le versioning et l'historisation d'une application. seul,  il est toutefois rare en pratique d’avoir à migrer des informations dans deux bases/deux fichiers similaires sans procéder à des transformations, conditions, jointures

Talend dispose fort heureusement d’une très large palette permettant de sélectionner des composants de tous genres (types de bases de données, action sur des fichiers, regroupement de donnéesetc.) 

talend_menu_palette.jpg

Le job ci-dessous présente donc un transfert de données d’une table source vers une table cible.

Le mapping et la transformation des champs sont effectués grâce au composant tMap (un des plus utiles). 

talend_flux_test.jpg

S’il s’agit là d’un cas assez simpliste, il est bien évidement possible de décupler ces possibilités avec Talend en créant des jobs à l’échelle du système à migrer.

Le tout sera orchestré par des jobs pères/fils dispatchés en domaine.

Le scénario se déroulera alors de la sorte : 

  • Le job principal n’est composé que du lancement du job père global à la migration.
  • Le job père peut ensuite lancer une multitude de jobs fils (si nécessaire) en leur passant des paramètres
  • Les jobs fils peuvent à leur tour exécuter leurs propres fils et ainsi de suite.
  • Les informations des jobs sous-fils remontent a leur job père respectif (terminaison OK/KO, avertissement)Suivant les conditions reçus et la planification prévue, le flux suit sont cours jusqu’a qu’il ne trouve plus rien à lancer.
  • Si tel est le cas, une base/application d’erreurs peut être mise en place afin de visualiser/corriger les lignes qui ne sont pas passées.

C’est dans cette dernière optique qu’il est conseillé d’implémenter une gestion des erreurs. Talend peut lui même, à l’aide de composants à ajouter à chaque fin d’une étape sensible, retourner un code d’erreur ou même un mail si le cas se présente.

Ci dessous un exemple de ce que donnerais le job précédent avec une gestion d’erreur de base. 

talend_flux_test_error.jpg

Si une erreur survient sur un composant de l’étape,  un mail est envoyé à l’adresse spécifié. L’objet du mail et le corps sont bien sur personnalisables.

Un avertissement est mis en avant avec un code et un message là aussi spécifique à l’étape de l’erreur.

Cet avertissement est visible dans la console et dans les logs.

NB: Comme mentionné plus haut,  il est techniquement possible de procéder à une implémentation des erreurs plus poussées en récupérant les rejets, lors de l’alimentation de la table, et d’insérer ces rejets dans une base propre a la gestion des erreurs.