Logo DRUPAL

Logo DRUPAL

Voici ci-après quelques explications, certes un peu techniques, largement inspirées du site de Gauthier Delamarre et confirmées par l’équipe des développeurs de l’agence 2S3i, qui peut-être feront réagir certains internautes, au premier rang desquels les développeurs, les utilisateurs de DRUPAL et autres CMS1 (WordPress, Joomla, SPIP, etc.), et autres « professionnels du web » :

1. L’approche procédurale

Le fait est que DRUPAL tourne le dos à Php5 et reste dépendant de Php4 ! Or cette version de Php n’est plus maintenue à  ce jour. Elle est plus lente que la version 5 et de nombreux bugs de sécurités subsistes. Les normes de développement avec ce langage sont absentes, le typage de données est absent. En conséquence , tous les avantages en terme de développement offert par la programmation objet de haut niveau (offert par des langages comme Java, C++, Python, PHP5) sont absents. Dit plus schématiquement et de façon caricaturale, Php4, pousse à un développement brouillon, sans hiérarchie de fonctions, et ne permet en aucun cas la mise en place des bonnes pratiques de programmation reconnus et utilisés en milieu professionnel. Qui plus est, qui dit version non maintenue, dit version avec des bugs de sécurités non résolus. A l’heure où la communauté php à déclarer ne plus maintenir la branche 5.2 du langage, où la branche 5.3 apporte de nombreuse améliorations en terme de performance (gestion optimisée du « garbage collector » pour la mémoire), en terme de programmation orientée objet avec l’ajout des espaces de nom et des « closures », Drupal se contente toujours d’utiliser la branche dépréciée 4.x de php.

2. Modularité très discutable

Au niveau des utilisateurs voulant ajouter de nouvelles fonctionnalités via des modules externes : communauté non concise, tout le monde fait dans son coin sans se parler, résultat on se retrouve avec des milliers de modules sans savoir lequel choisir car la plupart sont incomplets ou plus maintenus. Vu que le développement de drupal est brouillon (cf. paragraphe ci-avant) , les développeurs de modules sont obligés de modifier le cœur même de drupal pour installer leur module donc :

  • une fois le cœur de DRUPAL modifié, il est possible que les autres modules ne fonctionnent plus
  • impossible de mettre à jour la version de drupal si un correctif suite à un bug de sécurité apparait

3. Un suivi de mise à jour complexe

Chaque nouvelle version majeure de Drupal apporte son lot de nouveauté mais aussi son lot de nouvelles incompatibilités. Ainsi un site développé sur la branche 5.x de Drupal, ne pourra pas être mise à jour vers la branche 6.x de Drupal sans devoir revoir l’ensemble des développements initiaux. De plus les versions antérieures ne sont rapidement plus maintenues par la communauté, les bugs de sécurités restants ne sont pas corrigé, ce qui oblige de prévoir le passage à la branche actuelle  pour maintenir un site viable en production. Qui plus est rien ne dit que les modules développés par la communautés seront migrés, donc le site peut perdre en fonctionnalité lors d’une migration. La maintenance est donc longue et couteuse en journée / homme. Sachant qu’une nouvelle version majeure de Drupal sort environ tous les 12 / 16 mois, il faut répéter cette phase de maintenance couteuse régulièrement.

4. Un emploi démesuré de la base de données

46 tables pour une installation classique de Drupal 6.x. L’ensemble des paramètres de configuration sont partagés entre des fichiers de configuration et la base de données ce qui rend le développement d’un site sous Drupal et sa phase de déploiement sur serveur hardue : sans protocole de système de déploiement avancé pour modifier les paramètres lors de l’installation, la mise en place d’un site sous Drupal sur un nouvel environnement devient vite un casse tête. De plus la base de données est utilisée à outrance sur chaque page générant parfois prêt de 500 requêtes seulement pour afficher une page de contenue. Donc sans système de cache avancé (reverse proxy, serveur memcache, varnish proxy), le site sera extrèmement goumand en ressource CPU et mémoire, et aura du mal à tenir la charge. Le cas « france.fr » en est le parfait exemple : un site développé sous Drupal sans stratégie de cache optimisé, installé sur 12 serveurs frontaux n’a pas pu tenir la charge suite à un pic de fréquention de 16 000 visites. Pour comparaison, un site développé à partir d’un framework optimisé pour les sites à fortes charges, peut tenir la charge sur des pics de 20 000 visites sur un seul frontaux avec un serveur HTTP léger tel que Nginx.

5. Un coût de développement prohibitif

Il est rare vouloir mettre en place un site se contentent uniquement des fonctionnalités de base proposé par un CMS. Un client à vite des besoins additionnelles, et il faut donc régulièrement casser le fonctionnement normal du CMS pour pouvoir étendre ces fonctionnalités. Avec un CMS il est donc de pratique courante de tout déconstruire pour pouvoir arriver à construire son projet. Cela provoque donc une perte de temps significative et des problèmes de maintenances du cœur du CMS. Un développement à partir d’un framework professionnel, permet quand à lui de partir sur une base vierge, et laisse toute latitude aux équipes techniques pour répondre aux besoins du client sans perdre de temps.

Conclusion : vous l’aurez compris, DRUPAL n’est pas la panacée. Mais alors, au final, faut-il faire le choix d’un autre CMS ? N’existe-il pas une solution alternative crédible… début de réponse !

1 Un système de gestion de contenu (ou Content Management System ou CMS) est une famille de logiciels destinés à la conception et à la mise à jour dynamique de site web ou d’application multimédia (source Wikipedia => http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_gestion_de_contenu)