C’est indéniable le web bouge et c’est certainement l’une des industries ou les outils évoluent aussi vite et sont aussi éphémères, ce qui est à la mode aujourd’hui ne le sera potentiellement plus demain. Le monde des CMS/CMF n’est pas épargné et subit son lot d’évolutions. Le problème n’est plus de savoir si telle ou telle fonctionnalité existe mais bel est bien de savoir si l’outil est capable de communiquer et de s’intégrer avec d’autres applications. Cette mutation du web a permis l’apparition de nouveaux usages tels que les SPA (single Page Application) ou MBaaS (Mobile Backend as a Service) dont le but est d’afficher des données dans un front web désolidarisé du backend.

Dans les articles précédents sur l’évolution des sites web et sur pourquoi Drupal 8 a subit une telle évolution Frédéric G. Marand et moi avons évoqué les applications orientées composants ou services. Par le passé, Drupal a prouvé qu’il était un excellent système de stockage de données et qu’il était capable d’exposer ces informations. Drupal 8 ira plus loin en intégrant cette capacité à s’associer de façon transparente avec d’autres applications externes à son coeur.

Drupal 8, l’impact sur les applications futures

L’application monolithique est un grand classique pour les projets réalisés avec Drupal, pour autant ce n’est pas parce qu’on peut tout faire avec que c’est une forcément une bonne idée. Est-ce que si votre boulanger se mettait à vendre des voitures et des outils de bricolage dans sa boutique vous ne trouveriez pas ça étrange ?

Comme l’a dit Frédéric, l’heure de gloire de la publication simple est derrière nous, aujourd’hui les attentes du marketing portent sur la personnalisation de l’expérience utilisateur en fonction des données acquises. Cela implique que les utilisateurs soient connectés et aient une identité persistante multisupport. On parle alors de session multi-device qui permet de reprendre la navigation ou encore vos achats là où vous en étiez et ce quel que soit le support.

Or lorsque Drupal fabrique ses pages pour un utilisateur connecté (pages générées à la volée et non chargées depuis le cache) cela consomme beaucoup de ressources. Il est rare de voir des pages de front web fabriquées avec moins de 50 requêtes SQL et autant de chargements de cache. Drupal est un outil performant pour la gestion de contenus néanmoins il n’est pas réputé pour ses performances d’affichage (cas pour un Drupal de base sans optimisation).

Ainsi la partie affichage à l’utilisateur final est susceptible d’être déplacé hors de Drupal en tant qu’application distincte basée sur des Javascript tels que AngularJs ou React afin de servir à la fois du web et du mobile qui ne cesse de grandir. C’est ce que l’on appelle le « headless Drupal ». Laissons à Drupal ce qu’il sait très bien faire, stocker et manipuler les données et déportons le front vers des technologies plus souple et plus rapide à mettre en place. Pour vous donner un exemple d’utilisation, on pourrait créer un B.O. unifié pour vos utilisateurs qui centraliserait vos contenus et vos produits puis différents sites web ayant chacun une thématique particulière qui viendraient consommer un webservice de façon à proposer des contenus ou produits à l’utilisateur.

Ainsi il faudra repenser Drupal comme un service de backend utilisé par des applications tiers qui consommeront des webservices pour servir l’expérience utilisateur, tout en gardant des temps de réponses performant grâce à la paralellisation.

Cette séparation entre le front et le back de l’application va nous offrir l’opportunité de raccourcir les cycles de développement et augmenter son efficacité tout en utilisant les dernières technologies et methodologies. La mutation de Drupal en API de contenus va permettre de réduire les problématiques multi-devices que l’on rencontre couramment.

Drupal 8 est à un point important de son évolution, ça passe où ça casse. Cette métamorphose à venir est de loin la plus grosse refonte qui ait été faite. Et vous, comment voyez-vous le futur des applications Drupal ? Comment comptez-vous vous y prendre ?