Usine à sites Drupal : que gagne-t-on à en adopter une ?
Une usine à sites est un dispositif permettant la mise en place de nombreux sites de manière automatisée. C’est ce qu’un nombre croissant de clients et prospects, qui sollicitent une agence pour des projets web d’envergure, souhaitent : une usine à sites performante et souple à déployer. Quels en sont les avantages ? Et comment créer un tel dispositif avec Drupal ?
Comment se caractérise le besoin d’une usine à sites ?
Une usine à sites permet de déployer rapidement une nouvelle instance d’une application Drupal personnalisée.
Par exemple, ce principe efficace intéresse autant un grand groupe qui a pour objectif d’adresser l’intégralité de ses marques lors d’une refonte ou d’un lancement, qu’une institution ayant différentes présences régionales indépendantes et qui souhaite unifier et redonner de la cohérence à son image. Dans le cas d’un grand groupe ayant différentes marques ou filiales, l’usine à sites permettra la distinction de chacune d’entre elles, tout en gardant une base similaire en termes de fonctionnalités. De ce fait, il est important d'identifier les fonctionnalités et les éléments de thème mutualisables pour le donneur d’ordre afin de le mettre en place dès la conception, comme un élément à part entière de l’usine. Chaque élément, en fonction du besoin, doit pouvoir évoluer indépendamment sur son utilisation.
Par exemple, nous pouvons imaginer que si une marque n’a pas besoin de la fonctionnalité Store Locator, alors cette dernière doit pouvoir être désactivée proprement. Les éléments front liés à la fonctionnalité désactivée, telle qu’une barre de recherche dans le header, doivent disparaître sans pour autant engendrer une régression visuelle. Ce comportement est vrai aussi dans le sens de l’activation d’une fonctionnalité.
Concrètement, comment ça marche ?
Une ferme à sites (groupement de sites générés par l’usine à sites) partage un socle commun lors de son initialisation puis tout au long de la vie du projet. Prenons l’exemple d’une usine à sites « multi-install », c’est à dire l’utilisation d’un même socle Drupal pour générer chaque instance. Les bases de données de chaque filiale sont indépendantes. Les sources, quant à elles, peuvent être partagées. Il faut noter l’importance d’avoir des bases de données distinctes, afin de s’assurer de la segmentation des actions utilisateurs, des contenus, des évolutions ou traduction de besoins de manière asynchrone. Un site appartenant à la ferme de sites peut ainsi évoluer en toute autonomie.
Comment mettre en place son socle ?
Sur une usine à sites « multi-install », le développement doit s’orienter rapidement sur le maintien de son profil d’installation afin qu’il reste fonctionnel (même si ce dernier utilise les configurations de Drupal 8). Lors des tests, il ne faut pas hésiter à relancer, à chaque phase, le profil d’installation afin de valider son bon fonctionnement, le profil d’installation étant la base d’une usine à sites stable. Cette pratique permettra de déployer une nouvelle instance du site vierge, avec un socle de fonctionnalités et de thèmes prêt à être personnalisé.
Par ailleurs, le développement se doit d’être réellement modulaire. Les modules de type « Custom » (développés pour le client), doivent au maximum éviter l’interdépendance afin de garder un choix libre d’activation ou de désactivation des fonctionnalités. La filiale X doit avoir seulement ce dont elle a besoin, afin de ne pas complexifier son back-office et ne pas altérer ses éléments front-end de manière involontaire.
Par la suite, on peut avoir plusieurs approches au niveau de l’implémentation du thème :
- Il peut être créé à la demande ; un thème unique par marque pour le client si la distinction de marque est forte.
- Dans le cas le plus courant, un thèmeparentunique sera développé, qui ensuite pourra hériter de modifications par le thème enfant pour la marque.
A l’initialisation, il n’est pas obligatoire que le socle comporte toutes les fonctionnalités dès le début. Il est évolutif dans le temps, les nouveautés pouvant être mises à disposition des autres instances via les modules ou des mises à jour. Ceci permet une mise en œuvre rapide de l’usine à sites à des coûts réduits. Enfin, il est possible de partager à tous les sites des ressources ayant été développées à la base pour un site en particulier (modules, thèmes, contenus), dans l’optique d’optimiser les coûts.
Comment gérer son usine à sites ?
L’hébergement, la mutualisation de l’infogérance et le déploiement de nouvelles instances doivent faire partie à part entière du projet et du processus d’administration. Pour cela, il existe au moins trois visions différentes :
- Gérer son usine à sites de manière « artisanale », avec différents vhosts pointant sur chaque nouvel environnement déployé, mais ce n’est clairement pas la pratique la plus optimisée pour gérer ses instances et son temps.
- Afin d’automatiser certaines tâches, il est préférable de faire appel à un outil tiers, tel que Aegir, que l’on peut auto-héberger sur son infrastructure. Cela permet de déployer les projets liés à son ou ses usines à sites, afin de rester maître de la solution proposée aux clients.
- Ou pour finir, certains prestataires tels que Pantheon, Acquia ou Platform.sh, permettent la gestion externalisée de vos déploiements.
Les avantages d’une usine à sites pour le client
Du point de vue de l’organisation opérationnelle et financière du client, le développement du socle peut être porté comme le lancement d’un nouveau projet. Lorsque le socle est développé, le premier site créé avec l’usine peut être déployé à moindre coût. Les instances suivantes peuvent alors suivre rapidement, une fois que la première a été éprouvée (fonctionnalités testées, recette graphique effectuée, tests multi-devices joués…).
Lorsqu’un nouveau besoin apparaît, les gestionnaires d’une instance pour une marque peuvent faire la demande d’une fonctionnalité spécifique. A ce moment, si d’autres gestionnaires d’un site de la même usine sont intéressés, les coûts peuvent être partagés entre ces différents bénéficiaires. Pour ce « groupement de clients », la fonctionnalité aura été achetée une seule fois, contrairement à un parc d’applications/sites qui aurait probablement été géré par différents prestataires, sans coordination. Les coûts se retrouvent ainsi réduits à l’unité et non au nombre de sites. La maintenance corrective, les mises à jour fonctionnelles et de sécurité seront effectives une fois pour l’ensemble du parc. Le coût réduit de mise en place d’une usine à sites passe également par l’implication de l’agence qui accompagne et développe le projet, dans la mesure où les temps de coordination sont mutualisés sur l’usine et non sur une multitude de sites distincts.
Si on prend l’exemple d’un groupe multi-marques, nous retrouvons souvent autant de décisionnaires que de marques pour leurs projets. Avec une usine à sites, un acteur pilote peut donc être défini pour devenir le coordinateur interne et ainsi maîtriser les moyens de mise en œuvre. Au-delà de la mutualisation des coûts et de la gouvernance, une usine à sites présente des avantages techniques. Elle permet de réduire les délais de production d’un nouveau site, le déploiement instantané de correctifs de sécurité et de mutualiser les process.
Enfin, la mise en place d’une usine à sites « multi-install » se justifie rapidement lorsque le coût de réalisation de plusieurs sites indépendants est supérieur à celui d’une usine à sites dont les composants sont mutualisés et le coût unitaire de réalisation d’une instance est défini. Tout cela est possible grâce à la capitalisation des coûts sur divers aspects projets, ainsi qu’à l’intégration facilitée et automatisée de nouveaux sites dans l’application.
Franck Fernandez - Expert technique Drupal - Digital Solutions & Vincent Lachambre - Chef de projet web - Digital Solutions