SlideShare a Scribd company logo
1 of 19
Download to read offline
Importer du contenu avec Drupal
          Rodolfo Ripado
Qui suis-je ?
Rodolfo Ripado,
alias gaspaio


• Membre enthousiaste de la communauté Drupal
• Modules : Simple Subscription, Custom Tokens, Swftools
  Plugins(en cours de publication)
• Cuisine régulièrement des données à la sauce Drupal
• Lead développeur Drupal chez
Un accompagnement open source à 360°




Novembre 2011       Présentation d'Alter Way
Les imports de contenus
Quand avons-nous à faire à des imports ?


• Migrations : refontes de sites avec récupération des
  données
• Synchronisations : transferts de données entre
  différentes plateformes
• Agrégation de contenus (RSS, ...)

        Les imports : un problème récurent !
Est-ce compliqué ?
Souvent ...

• Un site Drupal moyen atteint facilement les 80 modules
  et les 150 tables, hétérogènes et interdépendantes
• Chaque import semble unique
• Solutions coûteuses et non réutilisables
• Difficile à estimer
• Beaucoup de complications inattendues
T.O.C.
• Concevoir un import de données vers Drupal
  • Les étapes - Les subtilités - La checklist


• Tous les chemins mènent à Drupal ... mais comment ?
  • Les outils disponibles - Choisir son outil
  • Feeds
  • Migrate


• Pour aller plus loin
Les étapes d’un import
 Extraire                             Transformer                    Enregistrer
                    Combiner            “Mapper”           Filtrer
                                                                               node_save()

                                                                               user_save()

                                                                      taxonomy_term_save()




• Extraire : récupérer et parser les données d’origine
• Combiner & mapper : re-arranger les données pour les faire
   correspondre à des objets Drupal
• Filter : néttoyer les données (trim(),             strip_tags(), ...)

• Enregistrer : utiliser l’API Drupal pour
            • Stocker les nouveaux contenus Drupal
            • Mettre à jour des contenus existants
Les subtilités des imports
• La “propreté” des données d’origine
  • sont les données conformes au format annoncé ?

• La quantité des données (500 ou 50.000 nodes) ?
• Les références et les données croisées
• Les médias
  • la localisation, la taille et le format des fichiers

• Les ressources de l’équipe
  • avons-nous de bons développeurs disponibles pour le projet ?

• La disponibilité du client pour répondre aux questions
La checklist de l’import
• Préférer les bases de données aux fichiers
• Bien définir les formats d’origine et déterminer
   des critères de validité des données
• Avoir une idée claire des relations entre les données d’origine
• Clarifier les transformations possibles des données
• Mettre en place des outils de communication développeurs-
   client rapides
• Selon la quantité de données, les outils/procédures ne seront
   pas les mêmes

                          La méthode est
                          aussi importante que la technique !
Comment choisir son outil ?
• Bonus habituels d’un bon module Drupal
  • Développeurs actifs et réactifs
  • Richesse de l’éco-système (plugins, patches, etc.)
  • Code de qualité, APIs claires
  • Documentation abondante

• Fonctionnalités secondaires importantes :
  • Rollback, mise à jour de contenus existants
  • Support de la Batch API, des imports via le Cron et/ou via Drush
  • Configuration via l’interface graphique
Les outils disponibles
• Quelques modules spécifiques
  • User import framework (CSV only, vise à la simplicité plutôt
    qu’à l’exaustivité)
  • User import (5-6.x only)
  • Node import (6.x only, semble semi-abandonné)

• Les frameworks génériques
  • Feeds : un moteur générique d’agrégation de contenus
  • Migrate : enfin un vrai ETL pour Drupal ?
Feeds
• Au début il y avait FeedAPI
  • Moteur d’agrégation de contenus RSS, ATOM, CSV, iCal
  • Développé rapidement pour les besoins de la distribution
    Managing News
  • Entièrement refait à neuf autour de 2009

• Feeds : framework d’import de contenu dans Drupal
  • Très flexible (une API simple et bien documentée)
  • Configuration via GUI
  • Intégration à Features
  • Nombreux goodies ...
  • Maintenu par des “Drupal Rock Stars” : @alex_b, @davereed
Feeds: architecture & goodies

• Un Feeds Importer est un objet avec 3 composantes :
  • Fetcher : extrait les données d’une source et les convertit en string
  • Parser : analyse la string et construit un tableau PHP
  • Processor : construit un objet Drupal et l’enregistre via l’API

• Les bonus
  • Intégration à la Batch API : import par étapes
  • Possibilité d’importer par le cron (via job_scheduler)
  • Feeds Tamper : interface graphique pour filter les données
Feeds : les + et les -
• Les + :
  • Facilement configurable, intégration facile des nouvelles classes à
    l’interface graphique
  • Ecosystème riche et actif : parsers et mappers à foison...
  • De nombreux addons pour affiner son import sans coder
  • Log de messages intégré

• Les - :
  • Le code est complexe, laborieux ...
  • Utilisation de la Batch API : peu performant lors de grands
    imports
  • Gestion des ressources très limitée
Migrate
• Développé par Cyrve, start-up américaine spécialisée
  dans les problématiques d’imports massifs (maintenant
  Acquia) :
  • The Examiner.com
  • The Economist

• Moshe Weitzman : Mr Drush.
• Migrate : un outil robuste pour dévelopeurs et chefs de
  projet.
Migrate : architecture

• Tout se passe dans les classes Migration :
  • Définition de l’équipe technique
  • Définition de la source et de la destination
  • Ajout des mappings des champs et des filtres

• Modèle de migrations successives et interdépendantes
• Gestion dynamique des ressources machine :
  • Intégration à la Batch API et surtout à Drush
  • Calcul des timeouts et des limites de mémoire à la volée !
Migrate : les + et les -
• Les + :
  • Prise en charge native de structures de données complexes
  • Très performant grâce à sa gestion des ressources à la volée
  • Intégration à Drush (migrations/mises à jour “scriptables”)
  • Interface graphique orientée reporting
  • De nombreux exemples disponibles, prise en main aisée pour le
    dévelopeur PHP moyen

• Les - :
  • Il faut coder ...
  • Relativement jeune, donc écosystème un peu limité
    •   cf. migrate_extras (http://drupal.org/project/migrate_extras)
Pour aller plus loin
• Drupal.org évidemment ...
  • http://drupal.org/project/feeds
  • http://drupal.org/project/migrate
  • Migrating to Drupal : http://drupal.org/documentation/migrate

• Les présentations de Moshe Weitzman :
  • http://london2011.drupal.org/conference/sessions/data-migration-
    drupal
  • http://www.acquia.com/resources/acquia-tv/conference/migrating-
    social-content-drupal-1
                              Ou moi, dans 5 minutes
                                  autour d’un café(!)
Où me joindre
Si vous n’avez pas le temps pour un café(!) ...

• Sur le stand d’
• rodolfo.ripado@alterway.fr
• ggaspaio@gmail.com
• Drupal.org / Twitter : Gaspaio

                               Des
                               questions ?

More Related Content

What's hot

Global Training Day Paris - Drupal 8
Global Training Day Paris - Drupal 8Global Training Day Paris - Drupal 8
Global Training Day Paris - Drupal 8Romain Jarraud
 
Hadoop et son écosystème - v2
Hadoop et son écosystème - v2Hadoop et son écosystème - v2
Hadoop et son écosystème - v2Khanh Maudoux
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & SparkAlexia Audevart
 
Utiliser Hadoop en perl avec HadoopStreaming
Utiliser Hadoop en perl avec HadoopStreamingUtiliser Hadoop en perl avec HadoopStreaming
Utiliser Hadoop en perl avec HadoopStreamingDavid Morel
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudTugdual Grall
 
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...MongoDB
 
Présentation de Drupal
Présentation de DrupalPrésentation de Drupal
Présentation de DrupalAdyax
 
Drupal meetup paris nov 2012
Drupal meetup paris nov 2012Drupal meetup paris nov 2012
Drupal meetup paris nov 2012Romain Jarraud
 
Étude de cas : migration MySQL Latin 1 vers UTF-8
Étude de cas : migration MySQL Latin 1 vers UTF-8Étude de cas : migration MySQL Latin 1 vers UTF-8
Étude de cas : migration MySQL Latin 1 vers UTF-8Olivier DASINI
 

What's hot (13)

Global Training Day Paris - Drupal 8
Global Training Day Paris - Drupal 8Global Training Day Paris - Drupal 8
Global Training Day Paris - Drupal 8
 
Hadoop et son écosystème - v2
Hadoop et son écosystème - v2Hadoop et son écosystème - v2
Hadoop et son écosystème - v2
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
Utiliser Hadoop en perl avec HadoopStreaming
Utiliser Hadoop en perl avec HadoopStreamingUtiliser Hadoop en perl avec HadoopStreaming
Utiliser Hadoop en perl avec HadoopStreaming
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 
Hadoop unit
Hadoop unitHadoop unit
Hadoop unit
 
Hadoop unit
Hadoop unitHadoop unit
Hadoop unit
 
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
Morning with MongoDB Paris 2012 - Cas d'usages courant en entreprise. Présent...
 
Présentation de Drupal
Présentation de DrupalPrésentation de Drupal
Présentation de Drupal
 
Drupal 8
Drupal 8Drupal 8
Drupal 8
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
 
Drupal meetup paris nov 2012
Drupal meetup paris nov 2012Drupal meetup paris nov 2012
Drupal meetup paris nov 2012
 
Étude de cas : migration MySQL Latin 1 vers UTF-8
Étude de cas : migration MySQL Latin 1 vers UTF-8Étude de cas : migration MySQL Latin 1 vers UTF-8
Étude de cas : migration MySQL Latin 1 vers UTF-8
 

Viewers also liked

DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush
DrupalCamp Lyon 2012 - Industrialiser Drupal avec DrushDrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush
DrupalCamp Lyon 2012 - Industrialiser Drupal avec DrushRodolfo Ripado
 
Drupagora 2012 - Gérer la sécurité de son site Drupal
Drupagora 2012 - Gérer la sécurité de son site DrupalDrupagora 2012 - Gérer la sécurité de son site Drupal
Drupagora 2012 - Gérer la sécurité de son site DrupalRodolfo Ripado
 
Drush avancé : un cas d'usage
Drush avancé : un cas d'usageDrush avancé : un cas d'usage
Drush avancé : un cas d'usageRodolfo Ripado
 
Drupagora 2012 - Drupal : Quelles distributions pour quels usages
Drupagora 2012 - Drupal : Quelles distributions pour quels usagesDrupagora 2012 - Drupal : Quelles distributions pour quels usages
Drupagora 2012 - Drupal : Quelles distributions pour quels usagesRodolfo Ripado
 
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012Rodolfo Ripado
 
Massive Open Online Courses - Pizza Party @Alterway 27 -09-2013
Massive Open Online Courses - Pizza Party @Alterway 27 -09-2013Massive Open Online Courses - Pizza Party @Alterway 27 -09-2013
Massive Open Online Courses - Pizza Party @Alterway 27 -09-2013Rodolfo Ripado
 

Viewers also liked (6)

DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush
DrupalCamp Lyon 2012 - Industrialiser Drupal avec DrushDrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush
DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush
 
Drupagora 2012 - Gérer la sécurité de son site Drupal
Drupagora 2012 - Gérer la sécurité de son site DrupalDrupagora 2012 - Gérer la sécurité de son site Drupal
Drupagora 2012 - Gérer la sécurité de son site Drupal
 
Drush avancé : un cas d'usage
Drush avancé : un cas d'usageDrush avancé : un cas d'usage
Drush avancé : un cas d'usage
 
Drupagora 2012 - Drupal : Quelles distributions pour quels usages
Drupagora 2012 - Drupal : Quelles distributions pour quels usagesDrupagora 2012 - Drupal : Quelles distributions pour quels usages
Drupagora 2012 - Drupal : Quelles distributions pour quels usages
 
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012
 
Massive Open Online Courses - Pizza Party @Alterway 27 -09-2013
Massive Open Online Courses - Pizza Party @Alterway 27 -09-2013Massive Open Online Courses - Pizza Party @Alterway 27 -09-2013
Massive Open Online Courses - Pizza Party @Alterway 27 -09-2013
 

Similar to Drupagora 2011 - Importer du contenu avec Drupal

Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Hidora
 
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...Core-Techs
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)LaNetscouade
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFBoubker ABERWAG
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informationsneuros
 
Drupal Factory kézako ?
Drupal Factory kézako ?Drupal Factory kézako ?
Drupal Factory kézako ?slybud
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Découvrir Drupal, le CMS Open Source de référence
Découvrir Drupal, le CMS Open Source de référenceDécouvrir Drupal, le CMS Open Source de référence
Découvrir Drupal, le CMS Open Source de référenceLINAGORA
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?ekino
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet DrupalAdyax
 
Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Cyril Reinhard
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBContent Square
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1fayway
 
Sahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStackSahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStackALTIC Altic
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystèmeKhanh Maudoux
 
Drupal & responsive
Drupal & responsiveDrupal & responsive
Drupal & responsiveRezonova
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapresLaurent Tardif
 

Similar to Drupagora 2011 - Importer du contenu avec Drupal (20)

Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks
 
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informations
 
Drupal Factory kézako ?
Drupal Factory kézako ?Drupal Factory kézako ?
Drupal Factory kézako ?
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Découvrir Drupal, le CMS Open Source de référence
Découvrir Drupal, le CMS Open Source de référenceDécouvrir Drupal, le CMS Open Source de référence
Découvrir Drupal, le CMS Open Source de référence
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet Drupal
 
Drupagora linagora-20111110
Drupagora linagora-20111110Drupagora linagora-20111110
Drupagora linagora-20111110
 
Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013Acquia et Arte : Drupal Camp Paris 2013
Acquia et Arte : Drupal Camp Paris 2013
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1
 
Sahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStackSahara : Hadoop as Service avec OpenStack
Sahara : Hadoop as Service avec OpenStack
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
 
Drupal & responsive
Drupal & responsiveDrupal & responsive
Drupal & responsive
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
 

Drupagora 2011 - Importer du contenu avec Drupal

  • 1. Importer du contenu avec Drupal Rodolfo Ripado
  • 2. Qui suis-je ? Rodolfo Ripado, alias gaspaio • Membre enthousiaste de la communauté Drupal • Modules : Simple Subscription, Custom Tokens, Swftools Plugins(en cours de publication) • Cuisine régulièrement des données à la sauce Drupal • Lead développeur Drupal chez
  • 3. Un accompagnement open source à 360° Novembre 2011 Présentation d'Alter Way
  • 4. Les imports de contenus Quand avons-nous à faire à des imports ? • Migrations : refontes de sites avec récupération des données • Synchronisations : transferts de données entre différentes plateformes • Agrégation de contenus (RSS, ...) Les imports : un problème récurent !
  • 5. Est-ce compliqué ? Souvent ... • Un site Drupal moyen atteint facilement les 80 modules et les 150 tables, hétérogènes et interdépendantes • Chaque import semble unique • Solutions coûteuses et non réutilisables • Difficile à estimer • Beaucoup de complications inattendues
  • 6. T.O.C. • Concevoir un import de données vers Drupal • Les étapes - Les subtilités - La checklist • Tous les chemins mènent à Drupal ... mais comment ? • Les outils disponibles - Choisir son outil • Feeds • Migrate • Pour aller plus loin
  • 7. Les étapes d’un import Extraire Transformer Enregistrer Combiner “Mapper” Filtrer node_save() user_save() taxonomy_term_save() • Extraire : récupérer et parser les données d’origine • Combiner & mapper : re-arranger les données pour les faire correspondre à des objets Drupal • Filter : néttoyer les données (trim(), strip_tags(), ...) • Enregistrer : utiliser l’API Drupal pour • Stocker les nouveaux contenus Drupal • Mettre à jour des contenus existants
  • 8. Les subtilités des imports • La “propreté” des données d’origine • sont les données conformes au format annoncé ? • La quantité des données (500 ou 50.000 nodes) ? • Les références et les données croisées • Les médias • la localisation, la taille et le format des fichiers • Les ressources de l’équipe • avons-nous de bons développeurs disponibles pour le projet ? • La disponibilité du client pour répondre aux questions
  • 9. La checklist de l’import • Préférer les bases de données aux fichiers • Bien définir les formats d’origine et déterminer des critères de validité des données • Avoir une idée claire des relations entre les données d’origine • Clarifier les transformations possibles des données • Mettre en place des outils de communication développeurs- client rapides • Selon la quantité de données, les outils/procédures ne seront pas les mêmes La méthode est aussi importante que la technique !
  • 10. Comment choisir son outil ? • Bonus habituels d’un bon module Drupal • Développeurs actifs et réactifs • Richesse de l’éco-système (plugins, patches, etc.) • Code de qualité, APIs claires • Documentation abondante • Fonctionnalités secondaires importantes : • Rollback, mise à jour de contenus existants • Support de la Batch API, des imports via le Cron et/ou via Drush • Configuration via l’interface graphique
  • 11. Les outils disponibles • Quelques modules spécifiques • User import framework (CSV only, vise à la simplicité plutôt qu’à l’exaustivité) • User import (5-6.x only) • Node import (6.x only, semble semi-abandonné) • Les frameworks génériques • Feeds : un moteur générique d’agrégation de contenus • Migrate : enfin un vrai ETL pour Drupal ?
  • 12. Feeds • Au début il y avait FeedAPI • Moteur d’agrégation de contenus RSS, ATOM, CSV, iCal • Développé rapidement pour les besoins de la distribution Managing News • Entièrement refait à neuf autour de 2009 • Feeds : framework d’import de contenu dans Drupal • Très flexible (une API simple et bien documentée) • Configuration via GUI • Intégration à Features • Nombreux goodies ... • Maintenu par des “Drupal Rock Stars” : @alex_b, @davereed
  • 13. Feeds: architecture & goodies • Un Feeds Importer est un objet avec 3 composantes : • Fetcher : extrait les données d’une source et les convertit en string • Parser : analyse la string et construit un tableau PHP • Processor : construit un objet Drupal et l’enregistre via l’API • Les bonus • Intégration à la Batch API : import par étapes • Possibilité d’importer par le cron (via job_scheduler) • Feeds Tamper : interface graphique pour filter les données
  • 14. Feeds : les + et les - • Les + : • Facilement configurable, intégration facile des nouvelles classes à l’interface graphique • Ecosystème riche et actif : parsers et mappers à foison... • De nombreux addons pour affiner son import sans coder • Log de messages intégré • Les - : • Le code est complexe, laborieux ... • Utilisation de la Batch API : peu performant lors de grands imports • Gestion des ressources très limitée
  • 15. Migrate • Développé par Cyrve, start-up américaine spécialisée dans les problématiques d’imports massifs (maintenant Acquia) : • The Examiner.com • The Economist • Moshe Weitzman : Mr Drush. • Migrate : un outil robuste pour dévelopeurs et chefs de projet.
  • 16. Migrate : architecture • Tout se passe dans les classes Migration : • Définition de l’équipe technique • Définition de la source et de la destination • Ajout des mappings des champs et des filtres • Modèle de migrations successives et interdépendantes • Gestion dynamique des ressources machine : • Intégration à la Batch API et surtout à Drush • Calcul des timeouts et des limites de mémoire à la volée !
  • 17. Migrate : les + et les - • Les + : • Prise en charge native de structures de données complexes • Très performant grâce à sa gestion des ressources à la volée • Intégration à Drush (migrations/mises à jour “scriptables”) • Interface graphique orientée reporting • De nombreux exemples disponibles, prise en main aisée pour le dévelopeur PHP moyen • Les - : • Il faut coder ... • Relativement jeune, donc écosystème un peu limité • cf. migrate_extras (http://drupal.org/project/migrate_extras)
  • 18. Pour aller plus loin • Drupal.org évidemment ... • http://drupal.org/project/feeds • http://drupal.org/project/migrate • Migrating to Drupal : http://drupal.org/documentation/migrate • Les présentations de Moshe Weitzman : • http://london2011.drupal.org/conference/sessions/data-migration- drupal • http://www.acquia.com/resources/acquia-tv/conference/migrating- social-content-drupal-1 Ou moi, dans 5 minutes autour d’un café(!)
  • 19. Où me joindre Si vous n’avez pas le temps pour un café(!) ... • Sur le stand d’ • rodolfo.ripado@alterway.fr • ggaspaio@gmail.com • Drupal.org / Twitter : Gaspaio Des questions ?