Drupagora - Les clés de la réussite d'un projet Drupal

Preview:

DESCRIPTION

Présentation du CMS Drupal pour l'évènement Drupagora du 9 novembre 2012. Ce diaporama donne les clés d'un démarrage projet réussi, les bonnes pratiques de développement ainsi que les outils et méthodes pour maintenir dans la durée un projet Drupal.

Citation preview

Les clés de la réussite d’un projet DrupalMarine Soroko, Quentin Delance

2

Sommaire

partie 1 Pourquoi Drupal est particulier

partie 2 Les clés d’un démarrage projet réussi

partie 3 Les bonnes pratiques de développement

partie 4 Les outils et méthodes pour maintenir dans la durée un projet Drupal

3 titre de la présentation

Pourquoi Drupal est si particulier

4

Un outil très riche…

La force de la communauté et la richesse modulaire

Des besoins de base non couverts par le core

Un outil extensible avec un certain niveau d’abstraction

5

Des méthodes de développement particulières

Utilisation de l’API et de hooks

Potentiellement très peu de développement

Des contraintes structurelles fortes

6

Une multitude de projets possibles

Internet

Communautaires

Extranet

Métier

Ecommerce

7

A compléter

La diversité Drupal

8

La diversité Drupal

9

La diversité Drupal

10

La diversité Drupal

11

La diversité Drupal

12 titre de la présentation

Les clés d’un départ réussi

13

4 points clefs

1 Connaître Drupal

3 Penser l’architecture

2 Eviter l’usine à gaz

4 Utiliser la communauté

Les règles d’or de la conception Drupal

14

Entités

Types de contenu

Blocs

Vues

Utilisateurs

Menus

Taxonomies

Panels

Contextes

Vocabulaire et contraintes à connaître

15

Penser les spécifications avec les contraintes et limites des modules utilisés

Définir tous les types de contenu

Définir toutes les vues

Définir les méthodes de gestion d’arborescence

Préciser les adaptations BO

Adapter la gestion d’utilisateurs et workflows au fonctionnement Drupalien

Des spécifications made in Drupal

16

Axure or not ?

17

L’extensibilité permet d’utiliser Drupal comme CMF

Plus puissant que d’autres CMS

Pas un « vrai » framework au même titre que Zend ou Symfony

Nécessité de s’adapter à la conception et au fonctionnement de Drupal

Rester sur du standard

18

+ de 5 000 modules

Attention à la qualité

Redondance des fonctionnalités

Choix des modules 1/2

19

Popularité

Dernières mises à jour et leurs fréquences

Quantité des « issues »

Choix des modules 2/2

20

2 versions Drupal supportées à un instant t

API incompatibles entre versions majeures

Ne pas adopter trop tôt une nouvelle version Drupal

Choisir la bonne version de Drupal

21

Combien de gabarits

Combien de vues

Combien de panels / context

Quels modules particuliers

Quels développements spécifiques

Les indicateurs de la charge de développement

22

Une structuration particulière du HTML

Des vues contraintes

Des contextes particuliers

Une ergonomie FO pas toujours adaptée

Optimiser le BO ?

Les points de vigilance graphique et ergonomiques

23 titre de la présentation

Les bonnes pratiques de développement

24

… selon la complexité du projet

Développeurs Drupal

Thémeur

Profils fonctionnels pour les specs/tests d’intégration

Profil architecte sur sujets cache/perf/scripts/https

Attention à la courbe d’apprentissage Drupal !

La bonne composition d’une équipe

25

Ne pas toucher au core

Respecter les normes de codage Drupal

Requêtes et fonctionnalités hors du template

Distinguer le code custom des modules communautaires

Limiter les modification des modules communautaires

– Suivre les patchs créés ou appliqués– Soumettre les patchs créés à la communauté (« patch

management ») Utiliser les outils disponibles (Coder, Security Review,

Acquia Insight) pour s’améliorer

Les règles d’or du développement

26

Paramétrage & configuration

Intégration CSS

Tests

Et un peu de développement

Une répartition des tâches avec peu de développement

27

SVN / Git

Outil de développement bien configuré

Plateformes : Prod / Pré-prod / Test / Dév

Déploiement

Stratégie de test

Le bon environnement de développement

28

Outillage qualité et patch management

Tests unitaires avec SimpleTest ?

Tests d’intégration manuels ?

Jeu de données (BD + « files ») de référence

Les outils de tests avec Drupal ne sont pas simples à exploiter. Les tests avec Drupal sont un point de charge important

La méthodologie de tests

29

Activer les caches Drupal

Agréger les contenus statiques (CSS/JS) et toutes les autres bonnes patiques Web (sprites, tuner BD, …)

Ne pas logger en base de données

Déporter le search sur un composant externe Apache Solr

Mettre en place reverse proxy cache Varnish

Mettre en place APC

Faire des tests de performance(Jmeter)

Utiliser les nombreux outils disponibles (Yslow, Pagespeed, http://webpagetest.com) pour s’améliorer

Optimiser la sécurité et les performances

30

Architecture LAMP

A compléter avec Varnish voire Memcache (perf) ou Solr (recherche)

Intégrer la stratégie de cache à la conception

S’assurer l’hébergeur maîtrise le web et LAMP en particulier

Mettre en place le bon nombre de plateformes tôt dans le projet

Rapprocher l’environnement de développement sur celui de production

Mettre en place la bonne architecture

31

Les outils et méthodes pour maintenir dans la durée

32

Vérifier les logs

Mettre en place le monitoring de l’ensemble de l’architecture

Suivre les mises à jour des modules et alertes de sécurité

Disposer d’une procédure de livraison en urgence

S’assurer du bon fonctionnement

33

Drupal stocke dans une même base de données le contenu et la configuration

Complexifie les montées en version

BizTalkServer

Code Base de données « files »

Stockage des données Drupal

34

Impossible de restaurer la base de données d’un environnement à l’autre

Les montées en version doivent se faire sans livrer la base de données

Contenttest

Configv2

Content prod

Config v1

Dev

Prod

Contenttest

Configv2

Content prod

Config v2

Gérer les montées de version 1/2

35

Implémenter les modifications de configuration via code

Exporter les objets (Views, Panels etc) pour les réimporter via l’API Drupal

Activer les changements via hook_update lors du déploiement

Possibilité de packager des fonctionnalités via module Features

Processus délicat à valider avant d’arriver en production

titre de la présentation

Gérer les montées de version 2/2

36

Utiliser drush (Drupal Shell), l’outil en ligne de commande

Fournir script d’installation (appelant Drush…)

Valider les montées en version via le nombre de plateformes adéquat

Il faut être en capacité de relivrer vite de manière sécurisée

titre de la présentation

Industrialiser les livraisons

37

merci