réussir son projet drupal

Post on 14-Dec-2014

7.830 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Réussir son projet Drupal. Plusieurs clefs du succès par Maxime TOPOLOV (@mtopolov) CTO de @adyax, Leader Européen sur Drupal.Méthodes qui marchentEquipe projetOrganisationEstimation du projetChoses à faire et à pas faire....

TRANSCRIPT

Réussir son projet DrupalPar @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 …

MOIDrupal10 ans 1/2et 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 MILLIONSDE SITESDANS LE MONDE

Drupal pour quel projet ?

Plutôt difficileProjet idéal

CorporateCorporate

EcommerceEcommerce

CommunautaireCommunautaireMédia statiqueMédia statique

Média interactifMédia interactif App statiqueApp statique

App temps réelApp temps réel

Méthodes Agiles ou Classiques ?

Les deux conviennent, Drupal se prête très bien aux méthodes Agiles (modulaire & évolutif).

EstimationEstimation ConceptionConception DesignDesign Dev.Dev. TuningDebugTuningDebug MEPMEP

Sprint 1Sprint 1 Sprint 2Sprint 2 Sprint 3Sprint 3 Sprint 4Sprint 4 Sprint 5Sprint 5 Sprint 6Sprint 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

: Co

mm

ent g

érer

les

bran

ches

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 renduPanels, Views -> Moteur de rendu

WS SortantsServices

WS SortantsServices

JSONJSON

SOAPSOAPXML-RPCXML-RPC

WS EntrantsFeeds

WS EntrantsFeeds

SOAP, JSON XMLSOAP, JSON XML

Standard : RSS, CSVStandard : RSS, CSV

Flux spécifiquesFlux spécifiques

Module Apache SOLR

Module Apache SOLR

Moteur de rechercheSOLR (TomCat)

Moteur de rechercheSOLR (TomCat)

Module MemcacheModule

MemcacheCache memoire

MemcachedCache memoire

Memcached

Cache statique : VARNISHCache statique : VARNISH

NewslettersSimpleNewsNewslettersSimpleNews ??????

Temps RéelMongoDB

Temps RéelMongoDB

Base NoSQLMongoDB

Base NoSQLMongoDB

Back Office amélioré : NodeQueue, Media, Scheduler, Rules, Actions, …

Back Office amélioré : NodeQueue, Media, Scheduler, Rules, Actions, …

Les 10 commandementsDrupal

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

top related