Logo Spiria

Drupal, du costaud pour les gros projets

11 février 2016.
Un CMS/CMF de haut niveau

Un CMS/CMF de haut niveau

Modulaire, interfaçable, extensible et flexible, l’outil Drupal est composé d’un cœur (core) élémentaire sur lequel on vient greffer des modules fonctionnels. Outre un assortiment de modules fournis avec l’installation de base, le programmeur a accès à une bibliothèque assez touffue de modules partagés par les contributeurs de la communauté. La logique de Drupal est un peu celle d’un jeu de Lego™, vous empilez des briques (modules) sur une base (cœur) pour construire votre structure. Et s’il n’y a pas la brique qu’il vous faut dans la boîte du jeu, vous la fabriquez, soit en partant d’une préexistante, soit en partant de zéro, ce qui nécessite bien sûr des compétences de programmeur. Plus qu’un système de gestion de contenu standard, Drupal est considéré comme une plateforme de développement (framework) complète propre à satisfaire les besoins les plus variés. Nous noterons aussi que Drupal excelle dans le stockage et la manipulation de données ; c’est vraiment son point fort qui en fait une solution de choix pour les projets complexes. Les “taxonomies”, “vocabulaires” et “termes” autorisent d’élégantes classifications. De plus, la surcouche d’abstraction entre l’application et la base de données (DBAL) permet d’interfacer Drupal avec la plupart des bases.

De nombreux gouvernements, organisations, universités et entreprises ont fait le choix de Drupal. On peut citer les universités Harvard, Chicago, Stanford, Oxford, le MIT Media Lab, The White House, le gouvernement australien, l’État de New York, Tesla, Johnson & Johnson, Alcatel-Lucent, Cisco, Verizon, NBC, The Weather Channel, Al Jazeera, NBA, The World Economic Forum, Royal Mail, la mairie de Londres, la ville de Los Angeles, etc. Etc. Ici, c’est le choix de la plupart des universités canadiennes, de nombreuses organisations gouvernementales, mais aussi de la Société de transport de Montréal.

Pour les gros projets

Assurément, on peut tout faire avec Drupal, mais il ne serait pas très raisonnable de l’utiliser pour des petits sites, ou des sites plus importants mais fonctionnellement simples, lorsque des solutions plus légères sont disponibles comme WordPress, Concrete 5, Processwire, Expression Engine, etc. Ce logiciel est certes gratuit, mais nécessite une mobilisation technique (hébergement) et humaine (temps et programmeurs de qualité) qui induit un investissement jamais négligeable. Comme le dit le sage proverbe louisianais, ne sortons pas le bazooka pour tuer le maringouin.

Pas simple et élitiste

Rançon de sa polyvalence et de sa puissance, Drupal n’est pas simple, c’est un système complexe. Nous pouvons lire partout que sa courbe d’apprentissage est assez raide, et c’est le cas : il faut du temps (parlons de mois, plutôt que de jours ou de semaines…) et de la persévérance avant d’être vraiment efficace avec cette plateforme. Le premier obstacle, qui peut rebuter, est qu’il nécessite d’abord de comprendre la philosophie propre à l’application et le langage utilisé par les “drupaliens”. Nœuds, taxanonomies, modules… il y a de quoi très vite s’y perdre. Ensuite, c’est l’avalanche de possibilités, notamment au travers une API fouillée, qui peut effrayer. Enfin, ce n’est pas un outil pour tous car il exige un certain bagage technique. Si vous n’avez pas déjà l’expérience des systèmes UN*X, du shell et des scripts, le puissant outil d’administration drush (Drupal Shell) risque de vous laisser froid. Et le framework Symfony 2 ajouté au cœur de Drupal ne va certainement pas adoucir la pente… Drupal n’est pas immédiatement accessible au premier venu, contrairement à des solutions plus communes et grand public.

Une communauté active

L’un des bonheurs de Drupal est son active communauté composée de programmeurs souvent de haut niveau. Et connaissez-vous un SGC qui a son propre hymne musical, régulièrement repris sur scène à travers le monde ? Je ne pense pas. (La version proposée par les Tueurs de chatons n’est pas inintéressante.)

Un CMS en plein développement

Corollaire de son active communauté, Drupal avance et progresse, parfois à grands pas. Sa version 8, qui est une refonte en profondeur, est sortie en novembre dernier et inclut des composants de Symfony2, le framework PHP d’origine française, ce qui permet d’exploiter une programmation orientée objet moderne. On notera également l’abandon de PHPTemplate, propre à Drupal, pour un moteur de gabarits plus évolué et raffiné, Twig, et l’adoption de formats plus standardisés, par exemple YAML pour les fichiers de configuration.

Certains choix radicaux et novateurs à chaque version, comme ceux effectués pour la huitième, impliquent aussi des transitions d'une version Drupal à la suivante plus ardues qu’avec d'autres SGC plus conservateurs. Les nouvelles versions sont vraiment… nouvelles.

La “modulite”

La modulite est une affection courante pouvant toucher de nombreux projets Drupal. Elle consiste à empiler trop de modules pour répondre à des questions parfois simples qui auraient pu être résolues de façon plus économe. Pour revenir à l’image du jeu de construction, plus votre tour est haute, plus les risques d’effondrement sont grands. Le bon choix des modules est une étape capitale et stratégique dans le développement d’un projet.

Performance et montée en charge

Disons-le tout de suite, ce n’est pas là que Drupal, dans son installation de base, brille de tous ses feux. Avec une quarantaine de requêtes SQL pour une page simple où d’autres SGC n’en feront que dix, il y a vite de quoi mettre à genoux un trop modeste serveur de bases de données. Drupal réclame une infrastructure solide, une optimisation et de ne surtout pas ignorer la mise en cache (Varnish). La montée en charge sera gérée couramment au travers une répartition comme pour d’autres applications (CDN, Reverse proxy). En termes de performances et de granularité de la mise en cache (Entity cache), la version 8 montre de très nets progrès.