Le monde du développement web est de plus en plus compliqué avec des nouvelles technologies qui sortent toutes les semaines quasiment. Ceci est un billet avant tout de réflexion, qui traite des notions de frontend et de backend, de Drupal, de webservices, de méthodes de travail. Comment est-ce qu'on pourrait faire mieux ? Est-ce qu'on peut coupler la facilité de Drupal et les performances, par exemple, d'AngularJS ?
Backend et Frontend
On va commencer par une petite explication préliminaire simplifiée sur les notions de frontend et de backend. Par backend, on entend le ou les systèmes permettant de traiter, de récupérer et de sauvegarder des informations dans une base de données. Il n'y a souvent pas d'interface prévue pour l'humain dans ce cas, mais la sortie est adaptée pour le frontend. Par frontend, on entend le fait d'afficher ces mêmes données à un utilisateur d'un site, mais aussi de lui permettre d'intéragir avec. Il est possible d'avoir un frontend pour ajouter du contenu. C'est le frontend qui va faire l'interface entre le backend et l'utilisateur.Backend et Frontend dans Drupal
Dans Drupal 7, on a tendance à parler de l'admin comme étant le backend : un autre thème, une autre interface, utilisée par les responsables du site pour administrer le site. Le frontend sera utile aux visiteurs du site, car c'est là qu'ils verront le thème “corporate”, les blocs de navigation, le contenu mis en forme et, par exemple, la possibilité d'ajouter des commentaires. Techniquement, Drupal est construit d'une manière à ne pas séparer complétement le backend et le frontend. Les nuances se situent dans le thème et dans les modules. Les templates (.tpl.php
) ainsi que les traditionnels fichiers CSS et JS font partie du frontend, et le backend se situerait dans le fichiers .module
- avec ses inclusions - ou dans le fichier template.php
dans le cas d'un thème. C'est pas très clair ? Voilà exactement où je veux en venir. Le développement frontend et le développement backend sont deux spécialisations différentes qui ne sont pas séparées complétement dans Drupal.
Ben et Lucie
Dans la suite, notre développeur frontend s'appelle Ben, et notre développeuse backend Lucie. Ben s'occupe de l'interface, il discute avec les designers pour faire une intégration graphique propre en ordre en utilisant Sass et Less s'il en a la possibilité. Il gére les tailles de fenêtres, et fait du responsive design car il connait les viewport sizes des périphériques mobiles. Il se spécialise dans des framework javascript et connait par coeur les spécifications des navigateurs. Il discute tous les jours avec Lucie pour obtenir les données dans un format qu'il pourra utiliser. Voici un super article (EN) qui met un peu à plat ce que représente Ben fait de nos jours. Lucie pour sa part aime les algorithmes, sait que MariaDB est un fork de MySQL, connait les avantages de PostgreSQL et est en train de se dire que CouchDB, c'est vachement bien en fait. Elle a étudié le Java et le PHP mais découvre le Javascript coté serveur. Elle utilise des systèmes d'abstraction pour faire des requêtes vers des bases de données, mais en fait pour certaines choses bien précises c'est peut-être mieux de faire sans. Elle déteste le CSS et dit que c'est un truc pour artiste, parce qu'elle, son résultat, elle aime le fournir en JSON dans un service REST (ça sera expliqué par la suite).La problématique Drupal
Un développeur Drupal est quelqu'un qu'on pourrait qualifier, dans un certain sens, de développeur Full Stack. C'est à dire qu'il fait à la fois du backend et du frontend. Les développeurs Full Stack ne sont parfois pas très bien vus dans la communauté des développeurs car selon certains, ils connaissent trop de choses pour être efficaces dans un domaine bien précis. Mais bon, ceci n'est point le débat. Il est certes possible de faire travailler Ben et Lucie dans le même projet: Ben code ses templates et dans le même dossier, Lucie va programmer la logique dans les fichiers.modules
et .inc
. C'est théoriquement possible, mais pas du tout efficace, le code de l'un est trop dépendant du code de l'autre, et les deux doivent connaitre Drupal.
Commentaires