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

Documents pareils

Présentation de Drupal

Présentation de Drupal « Content Management Framework » ?

Plus en détail