Réussir son projet Drupal Par  @mtopolov , CTO de  @adyax
C’est 40 gros sites Drupal en 2011
Les principaux points  forts de  Drupal
Un fort niveau  d’abstraction donne...
…  un système modulaire qui permet de créer …
…  un beau CMS mais surtout un Framework, avec …
…  une API riche de nombreux « hooks » …
Grâce à la license GPL et drupal.org on a …
…  une communauté très active, qui …
MOI Drupal 10 ans  1 /2 et 7 versions
des sites sérieux…
pour les jeunes…
…  et les moins jeunes
Des sites roses…
…  bleus …
…  gris …
…  ou jaunes.
…  de gauche …
…  ou de droite …
Pour les riches…
…  et les moins riches, …
PLUS DE  7 MILLIONS DE SITES DANS LE MONDE
 
Drupal pour quel projet ? Plutôt difficile Projet idéal Corporate Ecommerce Communautaire Média statique Média interactif App statique App temps réel
Méthodes Agiles ou Classiques ? Les  deux  conviennent, Drupal se prête très bien aux méthodes Agiles (modulaire & évolutif). Estimation Conception Design Dev. Tuning Debug MEP Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5 Sprint 6
Petit dico Français/Drupal Nœud  (node) -> tout contenu Views  -> module Drupal pour créer, afficher et gérer des listes de contenus Panels  -> module Drupal pour créer en drag’n’drop des pages Taxonomies  -> manière de tagguer ou classer le contenu dans des rubriques.
Equipe projet Drupal ?
Estimer un projet Drupal Définissons trois types de projet ( S )imple : site de contenu simple, pas de zone utilisateur, pages simples ( M )oyen : site de contenus avec une zone utilisateur, pages de complexité moyenne ( C )omplexe : site communautaire, e-commerce ou très complexe, pages lourdes avec nombreux blocs & contextes.
Estimer un projet Drupal Mise en place de Drupal  = Création de types de contenus + Views + Panels de base + Modules principaux et leur configuration Si  S  = 2 – 3 jours Si  M  = 6 – 7 jours Si  C  = 15 jours ou plus
Estimer un projet Drupal Intégration HTML W3C, cross-browser, pixel-perfect + debug CSS/JS pendant le projet S  = 2 jours + 0,3 jours par page M  = 3 jours + 0,7 jours par page C  = 4 jours + 1,2 jour par page
Estimer un projet Drupal Theming Drupal = Montage pages Panels, création du thème, Création des blocs. S  = 0,5 jours par page M  = 1 jour par page C  = 1,5 jour page page
Estimer un projet Drupal Multilingue ?  +2-3  jours Vous gérez des sessions utilisateurs ?  +2-3  jours Moteur de recherche à tuner ?  +2  jours Et ainsi de suite pour  chaque  fonctionnalité !
Les  dangers  dans l’estimation  Règles de gestion complexes sur les blocs & contextes (tout ce qui sort du champs d’application de Views) WYSIWYG & « Améliorations » du back-office, mises en avant éditoriales complexes. Migration du contenu existant & synchronisation de bases  Alertes email, fort trafic / pics.
Fainéant, le développeur ne code que 1/3 de son temps… 35%  développement 30%  écriture et exécution des tests 10%  déploiements 10%  trad, perfs, sécurité, permissions… 5%  divers scripts 5%  documentation 5%  démos
Comment spécifier pour Drupal ? Types de contenus Structure du contenu Taxonomies Contextes Plan du site Rubriques Pages Blocs Allez voir la session « Spécifier pour Drupal » de Chris JOSEPH, à 14h ! Fonctionnalités
Comment spécifier pour Drupal ? Types de contenus  : Article, Produit, Brève, Fiche Auteur, Photo, Vidéo Structure du contenu  : Les champs composant les types de contenus.  Taxonomies  : Rubriques, Tags, Marques, … Contextes  : Quel bloc s’affiche où
 
 
Outils pour spécifier ? Evitez Axure, très à la mode, mais pas adapté à Drupal (très orienté Page -> Navigation -> Clicks et pas assez contenu) Un bon document Word     Des copies d’écrans annotées
Un « design » Drupal ?
Spécifications des taxonomies Taxonomies  : Tags, Rubriques, Type de recette, Marque de voiture Une taxonomie sert (ou servira!)  obligatoirement  dans plusieurs types de contenus, si non, utiliser un champ classique.
Blocs : Panels everywhere !
Contextes Contextes  c’est  plus  que des rubriques Vont vous servir à définir le triptyque : Titres des pages, métas URLs  Plan de taggage des stats  Permettent de placer les panes sur vos pages
7.000 modules c’est pas pour rien ! Avant  de spécifier une fonctionnalité à  votre manière , vérifiez s’il n’existe pas un  module Drupal  qui fait l’affaire.
…  et essayez de faire simple   Et ça sur 300 pages  
Environnement de développement GIT + Redmine (ou TRAC, ou autre chose) Dev / Test / Prod Attention à la manière de gérer les déploiements incrémentaux. Tests automatisés conseillées sur projets long terme (Selenium RC)
GIT : Comment gérer les branches
Problème du déploiement sur Drupal Contenu et configurations sont dans la base Utiliser le module  Features  + utiliser les fonctions  hook_update_X() Pensez à  Capistrano  pour vous aider Vos développeurs et admins doivent connaître  Drush
Dangers du hook_update_N() L’utilisateur  $user  est probablement l’admin ou NULL Drupal exécutera d’abord  toutes  les fonctions  _update  d’un module avant de passer à un autre Attention a bien refactorer votre code  .install  de temps à autre, pour éviter des centaines de  _update .
Architecture logicielle type Panels ,  Views  -> Moteur de rendu WS Sortants Services JSON SOAP XML-RPC WS Entrants Feeds SOAP, JSON XML Standard : RSS, CSV Flux spécifiques Module  Apache SOLR Moteur de recherche SOLR (TomCat) Module  Memcache Cache memoire Memcached Cache statique : VARNISH Newsletters SimpleNews ??? Temps Réel MongoDB Base NoSQL MongoDB Back Office amélioré : NodeQueue, Media, Scheduler, Rules, Actions, …
Les 10 commandements Drupal
I. Structurer ton contenu en premier lieu, tu devras (Entités, Champs, Taxonomies)
II. Aucune fonctionnalité dans les templates tu ne coderas
II bis. (pas de requêtes SQL non plus, hein !)
III. Le cœur de Drupal tu ne toucheras point (ni les modules contribs)
 
IV. Views, Ctools & Panels tu utiliseras !
V. Les caches, dès le début du projet tu activeras (Varnish, Memcached, Boost, AuthCache)
VI. Du WYSIWYG tu n’abuseras point
VII. Les déploiements par le code et les scripts tu feras (Drush, Features, Deploy…)
VIII. Avant de coder une fonctionnalité, le module existant 10 fois tu chercheras
IX. Apache SOLR pour la recherche tu utiliseras !
X. Si faire soi-même tu ne sais pas, à un professionnel tu t’adresseras

Réussir son projet Drupal

  • 1.
    Réussir son projetDrupal Par @mtopolov , CTO de @adyax
  • 2.
    C’est 40 grossites Drupal en 2011
  • 3.
    Les principaux points forts de Drupal
  • 4.
    Un fort niveau d’abstraction donne...
  • 5.
    … unsystème modulaire qui permet de créer …
  • 6.
    … unbeau CMS mais surtout un Framework, avec …
  • 7.
    … uneAPI riche de nombreux « hooks » …
  • 8.
    Grâce à lalicense GPL et drupal.org on a …
  • 9.
    … unecommunauté très active, qui …
  • 10.
    MOI Drupal 10ans 1 /2 et 7 versions
  • 11.
  • 12.
  • 13.
    … etles moins jeunes
  • 14.
  • 15.
  • 16.
  • 17.
    … oujaunes.
  • 18.
    … degauche …
  • 19.
    … oude droite …
  • 20.
  • 21.
    … etles moins riches, …
  • 22.
    PLUS DE 7 MILLIONS DE SITES DANS LE MONDE
  • 23.
  • 24.
    Drupal pour quelprojet ? Plutôt difficile Projet idéal Corporate Ecommerce Communautaire Média statique Média interactif App statique App temps réel
  • 25.
    Méthodes Agiles ouClassiques ? Les deux conviennent, Drupal se prête très bien aux méthodes Agiles (modulaire & évolutif). Estimation Conception Design Dev. Tuning Debug MEP Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5 Sprint 6
  • 26.
    Petit dico Français/DrupalNœud (node) -> tout contenu Views -> module Drupal pour créer, afficher et gérer des listes de contenus Panels -> module Drupal pour créer en drag’n’drop des pages Taxonomies -> manière de tagguer ou classer le contenu dans des rubriques.
  • 27.
  • 28.
    Estimer un projetDrupal Définissons trois types de projet ( S )imple : site de contenu simple, pas de zone utilisateur, pages simples ( M )oyen : site de contenus avec une zone utilisateur, pages de complexité moyenne ( C )omplexe : site communautaire, e-commerce ou très complexe, pages lourdes avec nombreux blocs & contextes.
  • 29.
    Estimer un projetDrupal Mise en place de Drupal = Création de types de contenus + Views + Panels de base + Modules principaux et leur configuration Si S = 2 – 3 jours Si M = 6 – 7 jours Si C = 15 jours ou plus
  • 30.
    Estimer un projetDrupal Intégration HTML W3C, cross-browser, pixel-perfect + debug CSS/JS pendant le projet S = 2 jours + 0,3 jours par page M = 3 jours + 0,7 jours par page C = 4 jours + 1,2 jour par page
  • 31.
    Estimer un projetDrupal Theming Drupal = Montage pages Panels, création du thème, Création des blocs. S = 0,5 jours par page M = 1 jour par page C = 1,5 jour page page
  • 32.
    Estimer un projetDrupal Multilingue ? +2-3 jours Vous gérez des sessions utilisateurs ? +2-3 jours Moteur de recherche à tuner ? +2 jours Et ainsi de suite pour chaque fonctionnalité !
  • 33.
    Les dangers dans l’estimation Règles de gestion complexes sur les blocs & contextes (tout ce qui sort du champs d’application de Views) WYSIWYG & « Améliorations » du back-office, mises en avant éditoriales complexes. Migration du contenu existant & synchronisation de bases Alertes email, fort trafic / pics.
  • 34.
    Fainéant, le développeurne code que 1/3 de son temps… 35% développement 30% écriture et exécution des tests 10% déploiements 10% trad, perfs, sécurité, permissions… 5% divers scripts 5% documentation 5% démos
  • 35.
    Comment spécifier pourDrupal ? Types de contenus Structure du contenu Taxonomies Contextes Plan du site Rubriques Pages Blocs Allez voir la session « Spécifier pour Drupal » de Chris JOSEPH, à 14h ! Fonctionnalités
  • 36.
    Comment spécifier pourDrupal ? Types de contenus : Article, Produit, Brève, Fiche Auteur, Photo, Vidéo Structure du contenu : Les champs composant les types de contenus. Taxonomies : Rubriques, Tags, Marques, … Contextes : Quel bloc s’affiche où
  • 37.
  • 38.
  • 39.
    Outils pour spécifier? Evitez Axure, très à la mode, mais pas adapté à Drupal (très orienté Page -> Navigation -> Clicks et pas assez contenu) Un bon document Word  Des copies d’écrans annotées
  • 40.
  • 41.
    Spécifications des taxonomiesTaxonomies : Tags, Rubriques, Type de recette, Marque de voiture Une taxonomie sert (ou servira!) obligatoirement dans plusieurs types de contenus, si non, utiliser un champ classique.
  • 42.
    Blocs : Panelseverywhere !
  • 43.
    Contextes Contextes c’est plus que des rubriques Vont vous servir à définir le triptyque : Titres des pages, métas URLs Plan de taggage des stats Permettent de placer les panes sur vos pages
  • 44.
    7.000 modules c’estpas pour rien ! Avant de spécifier une fonctionnalité à votre manière , vérifiez s’il n’existe pas un module Drupal qui fait l’affaire.
  • 45.
    … etessayez de faire simple  Et ça sur 300 pages 
  • 46.
    Environnement de développementGIT + Redmine (ou TRAC, ou autre chose) Dev / Test / Prod Attention à la manière de gérer les déploiements incrémentaux. Tests automatisés conseillées sur projets long terme (Selenium RC)
  • 47.
    GIT : Commentgérer les branches
  • 48.
    Problème du déploiementsur Drupal Contenu et configurations sont dans la base Utiliser le module Features + utiliser les fonctions hook_update_X() Pensez à Capistrano pour vous aider Vos développeurs et admins doivent connaître Drush
  • 49.
    Dangers du hook_update_N()L’utilisateur $user est probablement l’admin ou NULL Drupal exécutera d’abord toutes les fonctions _update d’un module avant de passer à un autre Attention a bien refactorer votre code .install de temps à autre, pour éviter des centaines de _update .
  • 50.
    Architecture logicielle typePanels , Views -> Moteur de rendu WS Sortants Services JSON SOAP XML-RPC WS Entrants Feeds SOAP, JSON XML Standard : RSS, CSV Flux spécifiques Module Apache SOLR Moteur de recherche SOLR (TomCat) Module Memcache Cache memoire Memcached Cache statique : VARNISH Newsletters SimpleNews ??? Temps Réel MongoDB Base NoSQL MongoDB Back Office amélioré : NodeQueue, Media, Scheduler, Rules, Actions, …
  • 51.
  • 52.
    I. Structurer toncontenu en premier lieu, tu devras (Entités, Champs, Taxonomies)
  • 53.
    II. Aucune fonctionnalitédans les templates tu ne coderas
  • 54.
    II bis. (pasde requêtes SQL non plus, hein !)
  • 55.
    III. Le cœurde Drupal tu ne toucheras point (ni les modules contribs)
  • 56.
  • 57.
    IV. Views, Ctools& Panels tu utiliseras !
  • 58.
    V. Les caches,dès le début du projet tu activeras (Varnish, Memcached, Boost, AuthCache)
  • 59.
    VI. Du WYSIWYGtu n’abuseras point
  • 60.
    VII. Les déploiementspar le code et les scripts tu feras (Drush, Features, Deploy…)
  • 61.
    VIII. Avant decoder une fonctionnalité, le module existant 10 fois tu chercheras
  • 62.
    IX. Apache SOLRpour la recherche tu utiliseras !
  • 63.
    X. Si fairesoi-même tu ne sais pas, à un professionnel tu t’adresseras

Notes de l'éditeur

  • #3 Hi all, thank you for coming. My name is Maxime Topolov. I’m CTO and co-founder of Adyax, european leader on Drupal. I’ll try to introduce you Drupal.