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? Média interactif Projet idéal Média statique Corporate Ecommerce App statique Plutôt difficile Communautaire App temps réel
Méthodes Agiles ou Classiques? Estimation Conception Design Dev. Tuning Debug MEP Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5 Sprint 6 Les deux conviennent, Drupal se prête très bien aux méthodes Agiles (modulaire & évolutif).
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, ecommerce 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 backoffice, 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 Fonctionnalités Allez voir la session «Spécifier pour Drupal» de Chris JOSEPH, à 14h!
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 Cache Cache statique statique :: VARNISH VARNISH Panels, Panels, Views Views -> -> Moteur Moteur de de rendu rendu SOAP, SOAP,JSON JSONXML XML JSON JSON WS WS Entrants Entrants Feeds Feeds WS WS Sortants Sortants Services Services Moteur Moteur de de recherche recherche SOLR SOLR (TomCat) (TomCat) Module Module Apache Apache SOLR SOLR Newsletters Newsletters SimpleNews SimpleNews?????? Cache Cache memoire memoire Memcached Memcached Module Module Memcache Memcache Temps Temps Réel Réel MongoDB MongoDB Base Base NoSQL NoSQL MongoDB MongoDB Standard Standard::RSS, RSS,CSV CSV Flux Fluxspécifiques spécifiques Back Back Office Office amélioré amélioré :: NodeQueue, NodeQueue, Media, Media, Scheduler, Scheduler, Rules, Rules, Actions, Actions, SOAP SOAP XML-RPC XML-RPC
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 recherche tu utiliseras! la
X. Si faire soimême tu ne sais pas, à un professionnel tu t adresseras