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...
<ul><ul><li>…  un système modulaire qui permet de créer … </li></ul></ul>
<ul><ul><li>…  un beau CMS mais surtout un Framework, avec … </li></ul></ul>
<ul><ul><li>…  une API riche de nombreux « hooks » … </li></ul></ul>
<ul><ul><li>Grâce à la license GPL et drupal.org on a …  </li></ul></ul>
<ul><ul><li>…  une communauté très active, qui … </li></ul></ul>
MOI Drupal 10 ans  1 /2 et 7 versions
<ul><ul><li>des sites sérieux… </li></ul></ul>
<ul><ul><li>pour les jeunes… </li></ul></ul>
<ul><ul><li>…  et les moins jeunes </li></ul></ul>
<ul><ul><li>Des sites roses… </li></ul></ul>
<ul><ul><li>…  bleus … </li></ul></ul>
<ul><ul><li>…  gris … </li></ul></ul>
<ul><ul><li>…  ou jaunes. </li></ul></ul>
<ul><ul><li>…  de gauche … </li></ul></ul>
<ul><ul><li>…  ou de droite … </li></ul></ul>
<ul><ul><li>Pour les riches… </li></ul></ul>
<ul><ul><li>…  et les moins riches, … </li></ul></ul>
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 ...
Méthodes Agiles ou Classiques ? Les  deux  conviennent, Drupal se prête très bien aux méthodes Agiles (modulaire & évoluti...
Petit dico Français/Drupal <ul><li>Nœud  (node) -> tout contenu </li></ul><ul><li>Views  -> module Drupal pour créer, affi...
Equipe projet Drupal ?
Estimer un projet Drupal <ul><li>Définissons trois types de projet </li></ul><ul><ul><li>( S )imple : site de contenu simp...
Estimer un projet Drupal <ul><li>Mise en place de Drupal  = Création de types de contenus + Views + Panels de base + Modul...
Estimer un projet Drupal <ul><li>Intégration HTML W3C, cross-browser, pixel-perfect + debug CSS/JS pendant le projet </li>...
Estimer un projet Drupal <ul><li>Theming Drupal = Montage pages Panels, création du thème, Création des blocs. </li></ul><...
Estimer un projet Drupal <ul><li>Multilingue ?  +2-3  jours </li></ul><ul><li>Vous gérez des sessions utilisateurs ?  +2-3...
Les  dangers  dans l’estimation  <ul><li>Règles de gestion complexes sur les blocs & contextes (tout ce qui sort du champs...
Fainéant, le développeur ne code que 1/3 de son temps… <ul><li>35%  développement </li></ul><ul><li>30%  écriture et exécu...
Comment spécifier pour Drupal ? <ul><li>Types de contenus </li></ul><ul><li>Structure du contenu </li></ul><ul><li>Taxonom...
Comment spécifier pour Drupal ? <ul><li>Types de contenus  : Article, Produit, Brève, Fiche Auteur, Photo, Vidéo </li></ul...
 
 
Outils pour spécifier ? <ul><li>Evitez Axure, très à la mode, mais pas adapté à Drupal (très orienté Page -> Navigation ->...
Un « design » Drupal ?
Spécifications des taxonomies <ul><li>Taxonomies  : Tags, Rubriques, Type de recette, Marque de voiture </li></ul><ul><li>...
Blocs : Panels everywhere !
Contextes <ul><li>Contextes  c’est  plus  que des rubriques </li></ul><ul><li>Vont vous servir à définir le triptyque : </...
7.000 modules c’est pas pour rien ! Avant  de spécifier une fonctionnalité à  votre manière , vérifiez s’il n’existe pas u...
…  et essayez de faire simple   Et ça sur 300 pages  
Environnement de développement <ul><li>GIT + Redmine (ou TRAC, ou autre chose) </li></ul><ul><li>Dev / Test / Prod </li></...
GIT : Comment gérer les branches
Problème du déploiement sur Drupal <ul><li>Contenu et configurations sont dans la base </li></ul><ul><li>Utiliser le modul...
Dangers du hook_update_N() <ul><li>L’utilisateur  $user  est probablement l’admin ou NULL </li></ul><ul><li>Drupal exécute...
Architecture logicielle type Panels ,  Views  -> Moteur de rendu WS Sortants Services JSON SOAP XML-RPC WS Entrants Feeds ...
<ul><ul><li>Les 10 commandements </li></ul></ul><ul><ul><li>Drupal </li></ul></ul>
<ul><ul><li>I. Structurer ton contenu en premier lieu, tu devras (Entités, Champs, Taxonomies) </li></ul></ul>
<ul><ul><li>II. Aucune fonctionnalité dans les templates tu ne coderas </li></ul></ul>
<ul><ul><li>II bis. (pas de requêtes SQL non plus, hein !) </li></ul></ul>
<ul><ul><li>III. Le cœur de Drupal tu ne toucheras point (ni les modules contribs)  </li></ul></ul>
 
<ul><ul><li>IV. Views, Ctools & Panels tu utiliseras ! </li></ul></ul>
<ul><ul><li>V. Les caches, dès le début du projet tu activeras (Varnish, Memcached, Boost, AuthCache)  </li></ul></ul>
<ul><ul><li>VI. Du WYSIWYG tu n’abuseras point </li></ul></ul>
<ul><ul><li>VII. Les déploiements par le code et les scripts tu feras (Drush, Features, Deploy…)  </li></ul></ul>
<ul><ul><li>VIII. Avant de coder une fonctionnalité, le module existant 10 fois tu chercheras  </li></ul></ul>
<ul><ul><li>IX. Apache SOLR pour la recherche tu utiliseras ! </li></ul></ul>
<ul><ul><li>X. Si faire soi-même tu ne sais pas, à un professionnel tu t’adresseras </li></ul></ul>
Prochain SlideShare
Chargement dans…5
×

Réussir son projet Drupal

9 055 vues

Publié le

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 marchent
Equipe projet
Organisation
Estimation du projet
Choses à faire et à pas faire....

Publié dans : Technologie
0 commentaire
6 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
9 055
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2 593
Actions
Partages
0
Téléchargements
166
Commentaires
0
J’aime
6
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • 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.
  • Réussir son projet Drupal

    1. 1. Réussir son projet Drupal Par @mtopolov , CTO de @adyax
    2. 2. C’est 40 gros sites Drupal en 2011
    3. 3. Les principaux points forts de Drupal
    4. 4. Un fort niveau d’abstraction donne...
    5. 5. <ul><ul><li>… un système modulaire qui permet de créer … </li></ul></ul>
    6. 6. <ul><ul><li>… un beau CMS mais surtout un Framework, avec … </li></ul></ul>
    7. 7. <ul><ul><li>… une API riche de nombreux « hooks » … </li></ul></ul>
    8. 8. <ul><ul><li>Grâce à la license GPL et drupal.org on a … </li></ul></ul>
    9. 9. <ul><ul><li>… une communauté très active, qui … </li></ul></ul>
    10. 10. MOI Drupal 10 ans 1 /2 et 7 versions
    11. 11. <ul><ul><li>des sites sérieux… </li></ul></ul>
    12. 12. <ul><ul><li>pour les jeunes… </li></ul></ul>
    13. 13. <ul><ul><li>… et les moins jeunes </li></ul></ul>
    14. 14. <ul><ul><li>Des sites roses… </li></ul></ul>
    15. 15. <ul><ul><li>… bleus … </li></ul></ul>
    16. 16. <ul><ul><li>… gris … </li></ul></ul>
    17. 17. <ul><ul><li>… ou jaunes. </li></ul></ul>
    18. 18. <ul><ul><li>… de gauche … </li></ul></ul>
    19. 19. <ul><ul><li>… ou de droite … </li></ul></ul>
    20. 20. <ul><ul><li>Pour les riches… </li></ul></ul>
    21. 21. <ul><ul><li>… et les moins riches, … </li></ul></ul>
    22. 22. PLUS DE 7 MILLIONS DE SITES DANS LE MONDE
    23. 24. 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
    24. 25. 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
    25. 26. Petit dico Français/Drupal <ul><li>Nœud (node) -> tout contenu </li></ul><ul><li>Views -> module Drupal pour créer, afficher et gérer des listes de contenus </li></ul><ul><li>Panels -> module Drupal pour créer en drag’n’drop des pages </li></ul><ul><li>Taxonomies -> manière de tagguer ou classer le contenu dans des rubriques. </li></ul>
    26. 27. Equipe projet Drupal ?
    27. 28. Estimer un projet Drupal <ul><li>Définissons trois types de projet </li></ul><ul><ul><li>( S )imple : site de contenu simple, pas de zone utilisateur, pages simples </li></ul></ul><ul><ul><li>( M )oyen : site de contenus avec une zone utilisateur, pages de complexité moyenne </li></ul></ul><ul><ul><li>( C )omplexe : site communautaire, e-commerce ou très complexe, pages lourdes avec nombreux blocs & contextes. </li></ul></ul>
    28. 29. Estimer un projet Drupal <ul><li>Mise en place de Drupal = Création de types de contenus + Views + Panels de base + Modules principaux et leur configuration </li></ul><ul><ul><li>Si S = 2 – 3 jours </li></ul></ul><ul><ul><li>Si M = 6 – 7 jours </li></ul></ul><ul><ul><li>Si C = 15 jours ou plus </li></ul></ul>
    29. 30. Estimer un projet Drupal <ul><li>Intégration HTML W3C, cross-browser, pixel-perfect + debug CSS/JS pendant le projet </li></ul><ul><ul><li>S = 2 jours + 0,3 jours par page </li></ul></ul><ul><ul><li>M = 3 jours + 0,7 jours par page </li></ul></ul><ul><ul><li>C = 4 jours + 1,2 jour par page </li></ul></ul>
    30. 31. Estimer un projet Drupal <ul><li>Theming Drupal = Montage pages Panels, création du thème, Création des blocs. </li></ul><ul><ul><li>S = 0,5 jours par page </li></ul></ul><ul><ul><li>M = 1 jour par page </li></ul></ul><ul><ul><li>C = 1,5 jour page page </li></ul></ul>
    31. 32. Estimer un projet Drupal <ul><li>Multilingue ? +2-3 jours </li></ul><ul><li>Vous gérez des sessions utilisateurs ? +2-3 jours </li></ul><ul><li>Moteur de recherche à tuner ? +2 jours </li></ul><ul><li>Et ainsi de suite pour chaque fonctionnalité ! </li></ul>
    32. 33. Les dangers dans l’estimation <ul><li>Règles de gestion complexes sur les blocs & contextes (tout ce qui sort du champs d’application de Views) </li></ul><ul><li>WYSIWYG & « Améliorations » du back-office, mises en avant éditoriales complexes. </li></ul><ul><li>Migration du contenu existant & synchronisation de bases </li></ul><ul><li>Alertes email, fort trafic / pics. </li></ul>
    33. 34. Fainéant, le développeur ne code que 1/3 de son temps… <ul><li>35% développement </li></ul><ul><li>30% écriture et exécution des tests </li></ul><ul><li>10% déploiements </li></ul><ul><li>10% trad, perfs, sécurité, permissions… </li></ul><ul><li>5% divers scripts </li></ul><ul><li>5% documentation </li></ul><ul><li>5% démos </li></ul>
    34. 35. Comment spécifier pour Drupal ? <ul><li>Types de contenus </li></ul><ul><li>Structure du contenu </li></ul><ul><li>Taxonomies </li></ul><ul><li>Contextes </li></ul><ul><li>Plan du site </li></ul><ul><li>Rubriques </li></ul><ul><li>Pages </li></ul><ul><li>Blocs </li></ul>Allez voir la session « Spécifier pour Drupal » de Chris JOSEPH, à 14h ! <ul><li>Fonctionnalités </li></ul>
    35. 36. Comment spécifier pour Drupal ? <ul><li>Types de contenus : Article, Produit, Brève, Fiche Auteur, Photo, Vidéo </li></ul><ul><li>Structure du contenu : Les champs composant les types de contenus. </li></ul><ul><li>Taxonomies : Rubriques, Tags, Marques, … </li></ul><ul><li>Contextes : Quel bloc s’affiche où </li></ul>
    36. 39. Outils pour spécifier ? <ul><li>Evitez Axure, très à la mode, mais pas adapté à Drupal (très orienté Page -> Navigation -> Clicks et pas assez contenu) </li></ul><ul><li>Un bon document Word  </li></ul><ul><li>Des copies d’écrans annotées </li></ul>
    37. 40. Un « design » Drupal ?
    38. 41. Spécifications des taxonomies <ul><li>Taxonomies : Tags, Rubriques, Type de recette, Marque de voiture </li></ul><ul><li>Une taxonomie sert (ou servira!) obligatoirement dans plusieurs types de contenus, si non, utiliser un champ classique. </li></ul>
    39. 42. Blocs : Panels everywhere !
    40. 43. Contextes <ul><li>Contextes c’est plus que des rubriques </li></ul><ul><li>Vont vous servir à définir le triptyque : </li></ul><ul><ul><li>Titres des pages, métas </li></ul></ul><ul><ul><li>URLs </li></ul></ul><ul><ul><li>Plan de taggage des stats </li></ul></ul><ul><li>Permettent de placer les panes sur vos pages </li></ul>
    41. 44. 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.
    42. 45. … et essayez de faire simple  Et ça sur 300 pages 
    43. 46. Environnement de développement <ul><li>GIT + Redmine (ou TRAC, ou autre chose) </li></ul><ul><li>Dev / Test / Prod </li></ul><ul><li>Attention à la manière de gérer les déploiements incrémentaux. </li></ul><ul><li>Tests automatisés conseillées sur projets long terme (Selenium RC) </li></ul>
    44. 47. GIT : Comment gérer les branches
    45. 48. Problème du déploiement sur Drupal <ul><li>Contenu et configurations sont dans la base </li></ul><ul><li>Utiliser le module Features + utiliser les fonctions hook_update_X() </li></ul><ul><li>Pensez à Capistrano pour vous aider </li></ul><ul><li>Vos développeurs et admins doivent connaître Drush </li></ul>
    46. 49. Dangers du hook_update_N() <ul><li>L’utilisateur $user est probablement l’admin ou NULL </li></ul><ul><li>Drupal exécutera d’abord toutes les fonctions _update d’un module avant de passer à un autre </li></ul><ul><li>Attention a bien refactorer votre code .install de temps à autre, pour éviter des centaines de _update . </li></ul>
    47. 50. 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, …
    48. 51. <ul><ul><li>Les 10 commandements </li></ul></ul><ul><ul><li>Drupal </li></ul></ul>
    49. 52. <ul><ul><li>I. Structurer ton contenu en premier lieu, tu devras (Entités, Champs, Taxonomies) </li></ul></ul>
    50. 53. <ul><ul><li>II. Aucune fonctionnalité dans les templates tu ne coderas </li></ul></ul>
    51. 54. <ul><ul><li>II bis. (pas de requêtes SQL non plus, hein !) </li></ul></ul>
    52. 55. <ul><ul><li>III. Le cœur de Drupal tu ne toucheras point (ni les modules contribs) </li></ul></ul>
    53. 57. <ul><ul><li>IV. Views, Ctools & Panels tu utiliseras ! </li></ul></ul>
    54. 58. <ul><ul><li>V. Les caches, dès le début du projet tu activeras (Varnish, Memcached, Boost, AuthCache) </li></ul></ul>
    55. 59. <ul><ul><li>VI. Du WYSIWYG tu n’abuseras point </li></ul></ul>
    56. 60. <ul><ul><li>VII. Les déploiements par le code et les scripts tu feras (Drush, Features, Deploy…) </li></ul></ul>
    57. 61. <ul><ul><li>VIII. Avant de coder une fonctionnalité, le module existant 10 fois tu chercheras </li></ul></ul>
    58. 62. <ul><ul><li>IX. Apache SOLR pour la recherche tu utiliseras ! </li></ul></ul>
    59. 63. <ul><ul><li>X. Si faire soi-même tu ne sais pas, à un professionnel tu t’adresseras </li></ul></ul>

    ×