Réussir un projet Drupal
Transcription
Réussir un projet Drupal
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