Réussir son projet Drupal

9,012 views

Published on

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....

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,012
On SlideShare
0
From Embeds
0
Number of Embeds
2,591
Actions
Shares
0
Downloads
163
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide
  • 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>

    ×