keyboard_arrow_up

Drupal est-il adapté aux applications métiers ?

Rédigé par Sylvain Lavielle
Développeur web freelance expert Drupal sur Toulouse

Le 13/09/2019

Drupal est connu en tant que CMS web pour sa capacité à permettre la réalisation de sites internet complexes mais c'est également un outil très utilisé pour la réalisation d'applications web métiers.

En tant que développeur Drupal, j'ai déjà eu à nombreuses reprises l'occasion de collaborer à la réalisation d'applications métiers réalisées en Drupal, mais le phénomène s'est accéléré avec Drupal 8. Sur les 6 derniers projets Drupal 8 auxquels j'ai collaboré, 3 étaient des applications métiers. voici mon retour d'expérience sur ce sujet.

Qu'entend-on par application métier ?

Ce sont des applications qui ne sont pas destinées au public et dont la principale utilité est de permettre d'organiser certains aspects relatifs au métier d'une entreprise. C'est donc avant tout un outil utilisé par les collaborateurs de cette entreprise.

Type de projets

Les 3 applications métiers, auxquelles j'ai collaboré dernièrement, avaient un certain nombre de points communs à souligner :

  • Grands comptes : Les 3 projets ont été réalisés dans 3 secteurs bien distincts mais tous pour des grands comptes : Assurances, Aéronautique, et Cosmétique
  • Des problématiques marginales, mais complexes : Tous avaient pour objectif d'organiser le travail d'un groupe bien particulier de collaborateurs. Il ne s'agissait jamais de problématiques métiers principales, mais toujours d'une problématique assez spécifique impliquant un nombre relativement limité de collaborateurs (de quelques dizaines à quelques centaines), mais toujours avec une problématique métier très forte et des contraintes très spécifiques.
  • Accès au public : 2 des ces 3 applications disposaient d'un accès à des personnes externes à la société. La plus grosse partie de l'applicatif étant réservée aux collaborateurs, une partie publique était accessible auprès d'utilisateurs externes disposant d'un compte.
  • Budget limité : Les 3 projets disposaient d'un budget relativement limité.

Pourquoi choisir Drupal pour des applications métiers

Des fonctionnalités directement disponibles

Drupal dispose déjà des principales fonctionnalités nécessaires à la réalisation d'une application métier :

  • Structuration des entités et formulaires de saisie des entités (core drupal)
  • Système de gestion des droits (core drupal)
  • Création de rapports, de tableaux de bord et de listes (module views, core drupal)
  • Versionning des contenus (core drupal)
  • Système de gestion de workflow (core drupal)
  • Ouverture vers d'autres systèmes (Module REST - Core drupal)
  • Système de notifications (modules Message, Entity Activity)

Et ce n'est là qu'une liste sommaire liée aux principaux besoins que l'on rencontre généralement sur les applications métiers.

Un socle très évolutif

Drupal 8 est aussi très évolutif. C'est une des grandes forces de Drupal depuis toujours et la version 8 avec les apports de Symfony a introduit de nouveaux mécanises et beaucoup de rigueur au niveau des techniques de développement ce qui manquait cruellement à Drupal 7 : les routes, les services, l'utilisation de configuration en YAML, les templates TWIG, les annotations, les events, etc.

Avec Drupal 8, vous disposez donc d'un CMS avec des capacités de développement dignes d'un framework.

Gain de temps et gain de coût indéniable

Drupal 8 de par ses fonctionnalités natives est donc un socle par nature bien adapté, qui constituera un gain de temps et de coût conséquent pour la plupart des applications métiers.

Drupal pour toutes les applications métiers alors ?

Comme on l'a vu, le choix de Drupal mérite largement d'être considéré mais est-ce pour autant la panacée ? En fait non, tout va dépendre de ce que vous souhaitez faire.

Utiliser Drupal ... pour faire du Drupal

Drupal peut constituer un avantage énorme pour la réalisation d'une application métier, à condition que vous ne cherchiez pas à faire ce qu'il ne sait pas bien faire :

  • Vérifiez que son fonctionnement natif vous convient. Drupal est très flexible mais jusqu'à un certain point. Modifier certaines façons de faire liées au core Drupal peut s'avérer très coûteux et catastrophique en terme de maintenabilité.
  • Si vous voulez développer un outil métier basé massivement sur du Angular ou du React, Drupal ne sera pas forcément le meilleur choix : Drupal vous fera gagner du temps si vous utilisez ses formulaires d'édition de contenu pour vos entités métier mais si vous souhaitez passer par d'autres frameworks RIA, le gain va s'annuler et Drupal pourrait même s'avérer être un piètre choix.

Un modèle de données controversé

Certains experts en base de données feront sans doute valoir que le modèle de base de données Drupal n'est pas optimal en terme de performances et c'est ... tout à fait vrai ! aucun doute sur ce point : Le modèle de base de données de Drupal a été conçu avant tout pour permettre une modélisation flexible des entités et certains des choix qui ont été faits, rendent le modèle un peu moins performant qu'un modèle réalisé à façon (avec des entités Doctrine par exemple). Cependant ce modèle de données c'est aussi sur quoi repose la grande flexibilité de Drupal.

Par ailleurs, Drupal 8 dispose d'un système de cache (par tags et par contextes) intégré extrêmement performant qui limite largement les requêtes sur les entités. Ce mécanisme puissant - dont ne dispose pas de façon native les framework PHP - compense parfois largement le manque d'optimisation de son modèle de données.

Performance et scalabilité

Si vous avez de grosses contraintes dans ce domaine, le choix d'un framework pourrait également s'avérer être un choix plus judicieux.

Conclusion

Pour un bon nombre d'applications métiers, et si on met de côté les querelles de clochers dont les développeurs sont si friands, Drupal peut se révéler parfaitement adapté.

Certes, il ne conviendra pas à tous les cas mais ne pas considérer Drupal dans le cadre de la réalisation d'une application métier serait une erreur : C'est un choix qui vous fera gagner du temps par rapport à un framework et dans beaucoup de cas répondra tout aussi bien à votre besoin moyennant quelques compromis.

Sujets abordés dans cet article