-

Multisite, Domain Access, ou sans tête - comment gérer plusieurs domaines dans Drupal?

Gérer plusieurs domaines au sein d'un seul CMS est un défi auquel de nombreuses organisations sont confrontées. Choisir la bonne architecture dès le début d'un projet peut permettre d'économiser beaucoup de temps et d'argent. Drupal propose trois approches éprouvées : multisite, Domain Access et CMS sans tête. Dans cet article, je vais comparer leurs forces et leurs faiblesses, montrer des exemples d'implémentations dans le monde réel et vous aider à décider quelle approche fonctionne le mieux pour différents scénarios d'affaires. Je vous invite à lire l'article ou à regarder un épisode de la série Nowoczesny Drupal.


Dans cet article:


Pourquoi envisager de gérer plusieurs domaines dans un seul système ?

Avant de plonger dans les spécificités de chaque architecture, il est utile de se demander pourquoi la gestion de plusieurs domaines dans un seul CMS a du sens en premier lieu. La réponse se résume à plusieurs avantages clés qui ont un impact direct sur le temps et le budget de votre équipe.

Premièrement, vous avez une gestion centralisée du code et des modules. Vous mettez tout à jour une fois, et les changements deviennent immédiatement disponibles sur tous les sites. Deuxièmement, vous économisez des ressources serveur - une seule instance de Drupal est plus légère et moins coûteuse à entretenir que plusieurs installations séparées. Vous obtenez également une gestion plus facile des utilisateurs et des autorisations, la possibilité de partager du contenu, et la maintenance et le développement du système deviennent beaucoup plus efficaces.

Par exemple, lorsqu'une nouvelle version d'un module sort - disons un module IA pour Drupal avec de nouvelles fonctionnalités - ou qu'un correctif de sécurité est publié, vous le déployez une fois et n'avez pas besoin de mettre à jour chaque site séparément.

Trois approches pour gérer plusieurs domaines dans Drupal

Drupal propose trois principales approches pour gérer plusieurs domaines. La première est le multisite, où vous utilisez un seul code source mais chaque domaine a sa propre base de données séparée.

La deuxième approche est Domain Access - un module contribué qui permet de gérer plusieurs domaines avec un seul code source et une seule base de données partagée.

La troisième approche est le CMS sans tête, où Drupal agit comme backend, sert le contenu par le biais d'une API, et chaque domaine peut avoir sa propre interface utilisateur indépendante. Avec le CMS sans tête, les bases de données peuvent être séparées ou partagées, selon les décisions prises lors de la phase de planification du système.

Chacune de ces approches a ses points forts et ses points faibles. Ci-dessous, je les discute en détail avec des exemples d'entreprises qui les utilisent.

Multisite - un seul code source, des bases de données séparées

Drupal Multisite est une fonctionnalité intégrée dans le noyau de Drupal, donc elle ne nécessite pas l'installation de modules supplémentaires. En pratique, vous disposez d'un dossier contenant le code de Drupal, mais pour chaque site, vous créez une base de données séparée et un dossier séparé dans le répertoire sites.

Chaque site a ses propres paramètres, peut utiliser des modules partagés ou avoir ses propres modules installés, et les thèmes peuvent être partagés sur tous les domaines ou assignés à des sites individuels. Il en va de même pour les fichiers multimédias et les fichiers téléchargeables - chaque instance a son propre répertoire.

Exemple : le site web Droptica.com

Droptica utilise une architecture multisite pour desservir quatre domaines : droptica.com, droptica.pl, kariera.droptica.pl et szkolenia.droptica.pl. Ces quatre domaines fonctionnent sur un seul code source, ont quatre bases de données séparées, et sont hébergées sur un seul projet sur la plateforme Upsun (anciennement Platform.sh).

Le contenu sur les domaines individuels est séparé, mais la fonctionnalité - comme l'ajout de nouveaux modules ou de nouveaux paragraphes (Droptica utilise le système Droopler avec le module Paragraphs pour la création de contenu) - est partagée. Lorsqu'un nouveau paragraphe est ajouté, il est immédiatement disponible sur tous les domaines.

Les mises à jour de sécurité ne nécessitent pas non plus la mise à jour de quatre sites séparément. Une seule mise à jour suffit, ce qui se traduit par un gain de temps significatif lors de la maintenance de ces services.

Avantages de Multisite

Les principaux avantages de multisite incluent des mises à jour plus faciles - à la fois pour le noyau de Drupal et pour les modules. Tous les changements sont déployés simultanément sur chaque domaine. Vous économisez de l'espace disque car Drupal, ses modules, et tout le répertoire vendor (qui peut prendre beaucoup d'espace) n'existent qu'une seule fois sur le serveur, quel que soit le nombre de domaines. Chaque site peut avoir une configuration indépendante, et l'isolement complet de la base de données garantit la séparation du contenu entre les domaines.

Inconvénients de Multisite

Parmi les inconvénients, le partage de contenu est plus difficile. Comme chaque domaine a sa propre base de données, le contenu n'est pas automatiquement disponible sur les autres sites. Il existe une option pour partager certaines tables de la base de données via la configuration dans le fichier settings.php, ce qui permet de partager certaines données entre les instances dans une configuration multisite, mais cette configuration nécessite une grande prudence - c'est une approche risquée et généralement non recommandée.

Un autre inconvénient est que tous les sites doivent utiliser la même version de Drupal et des modules - vous ne pouvez pas mettre à jour un domaine sans mettre à jour les autres. Les problèmes avec un site peuvent affecter les autres domaines. La configuration du serveur pour le multisite est également un peu plus exigeante qu'une seule installation de Drupal.

Lire aussi : Comment fonctionne Drupal Multisite sous le capot

Domain Access - un seul code source et une seule base de données

Domain Access (actuellement simplement appelé le module Domain) est un module Drupal qui permet de gérer plusieurs domaines au sein d'une seule installation, en partageant à la fois le code et la base de données. C'est la différence clé par rapport à multisite, où chaque domaine avait sa propre base de données.

Le module ajoute un champ spécial à chaque type de contenu, de sorte que lors de la création de n'importe quel contenu, vous voyez toujours un champ supplémentaire sur le formulaire où vous marquez à quel domaine le contenu est assigné. Selon les paramètres, cela peut être une attribution à un domaine ou à plusieurs domaines à la fois.

Cas d'utilisation de Domain Access

Cette approche est particulièrement populaire dans l'industrie pharmaceutique et parmi les fabricants de produits physiques, où les entreprises créent souvent des sites web séparés pour chaque produit. Une grande partie du contenu - comme les informations sur l'entreprise, les coordonnées, ou les conditions d'utilisation - est partagée sur les domaines. Domain Access permet de gérer tous les sites à partir d'un seul endroit tout en personnalisant l'apparence pour un produit spécifique sur un domaine donné.

Avantages de Domain Access

Le plus grand avantage est le partage de contenu entre les domaines. Vous créez un contenu une fois et pouvez le publier sur plusieurs domaines simultanément. Le système offre une base partagée d'utilisateurs, de rôles et de permissions, qui simplifie la gestion des accès. Des permissions flexibles vous permettent de définir qui a accès à quel contenu et sur quel domaine - vous pouvez avoir des éditeurs globaux ou des éditeurs assignés exclusivement à un domaine spécifique. Vous pouvez également utiliser différents thèmes sur différents domaines tout en maintenant la cohérence des données en arrière-plan dans votre système CMS.

Inconvénients de Domain Access

Une base de données partagée signifie moins d'isolation des données. Les problèmes peuvent affecter tous les domaines à la fois. La configuration du système est plus complexe, et la maintenance avec un grand nombre de domaines (des dizaines ou des centaines) peut être un défi.

Une attention particulière doit être accordée lorsque vous souhaitez utiliser d'autres modules qui gèrent les permissions d'accès au contenu en utilisant le mécanisme intégré dans le noyau de Drupal appelé Node Access Grants. Le module Domain Access s'appuie sur cette fonctionnalité. Si plusieurs modules s'y raccrochent, des conflits peuvent survenir. En conséquence, le contenu peut se retrouver avec un accès trop restreint ou trop large. Parfois, il devient nécessaire d'écrire un module personnalisé qui réconcilie les paramètres de plusieurs modules utilisant Node Access.

Avec Domain Access, il est également important de planifier soigneusement votre structure de contenu et votre taxonomie afin que le système reste clair et pratique pour une utilisation quotidienne.

Drupal sans tête - API backend avec frontend indépendant

Dans le modèle sans tête, Drupal fonctionne uniquement comme un backend - il distribue du contenu, tandis que le frontend est construit en utilisant des technologie JavaScript telles que React, Angular ou Vue. La communication se fait par le biais d'une API, généralement l'API JSON ou GraphQL, en fonction de l'architecture backend prévue.

Exemple: sites web de l'Association polonaise de football

Un excellent exemple d'architecture sans tête en action est l'Association polonaise de football (PZPN). PZPN utilise un système just central Drupal comme source de contenu pour plusieurs sites web. Cette approche permet de créer des interfaces optimisées pour différents publics et différents domaines, tout en maintenant la cohérence du contenu et la structure des données sur l'ensemble de l'écosystème des services web de PZPN.

Avantages sans tête

Le concept du Headless vous donne une flexibilité totale pour construire des interfaces pour différents domaines. Chaque site peut avoir un aspect complètement différent et une fonctionnalité distincte. Vous pouvez optimiser chaque interface individuellement pour le SEO et les performances. L'intégration avec les applications mobiles devient naturelle - puisque l'API existe déjà, une application mobile se connecte aux mêmes points d'extrémité que les sites web. Les équipes de frontend et de backend peuvent travailler indépendamment, ce qui accélère souvent le rythme de développement de l'ensemble du projet.

Inconvénients sans tête

Le plus grand inconvénient est la complexité technique qui découle de la combinaison de plusieurs technologies. Sur le backend, vous avez Drupal, sur le frontend, différents cadres JavaScript, et parfois même différents cadres sur différents domaines. Les exigences de compétences de l'équipe sont plus élevées - vous avez besoin de spécialistes à la fois en Drupal et en technologies frontend.

La gestion de plusieurs dépôts de code (multiples bases de code) est nécessaire, ce qui augmente les coûts de maintenance. Les déploiements nécessitent une attention particulière. Les changements frontend doivent souvent être synchronisés avec les changements backend, et le déploiement de nouvelles versions des deux applications doit se faire dans le bon ordre, en tenant compte de la compatibilité.

Comparaison des trois approches - multisite, Domain Access et sans tête

La comparaison des paramètres clés aide à déterminer quelle approche convient à une situation spécifique. Ci-dessous, je compare multisite, Domain Access et sans tête sur cinq critères clés.

Graphique 02 Drupal plusieurs domaines


Facilité de mise en œuvre

Le multisite est le plus simple à mettre en place car il est intégré dans le noyau de Drupal. Domain Access nécessite un peu plus d'effort - installer et configurer un module supplémentaire, planifier la structure du contenu et les permissions. Sans tête nécessite le plus d'effort et la connaissance technique la plus large, car il combine plusieurs technologies différentes.

Partage de contenu

Domain Access mène clairement dans cette catégorie car elle opère sur une seule base de données - vous créez du contenu une fois et le publiez sur plusieurs domaines. Le multisite offre le moins de capacité ici en raison de bases de données séparées. Avec le modèle sans tête, cela dépend de l'architecture choisie - vous pouvez avoir une base de données partagée ou plusieurs bases de données séparées, en fonction des besoins du projet.

Isolation des données

La situation est inversée par rapport au partage de contenu. Multisite offre la meilleure séparation des données car chaque domaine a sa propre base de données. Domain Access offre la moins d'isolation, et sans tête - comme avec le partage - dépend de l'architecture choisie. L'isolation des données peut être importante pour des raisons de sécurité dans certaines industries et projets.

Flexibilité frontale

Sans tête est sans égal ici et offre des possibilités pratiquement illimitées.

Facilité de maintenance

Domain Access offre la plus grande facilité de maintenance car vous avez une seule base de code et une seule base de données, avec tout géré de manière centralisée.

Quand choisir multisite, Domain Access, ou sans tête?

Le choix de la bonne architecture doit être basé sur une analyse des besoins spécifiques de votre organisation. Voici les scénarios dans lesquels chacune des trois approches fonctionne le mieux.

Quand choisir multisite?

Multisite est le meilleur choix lorsque vous avez besoin de sites indépendants avec une structure similaire mais un contenu différent. Un bon exemple est le site Web corporatif de Droptica - le système Droopler, où la structure des données est la même sur tous les domaines mais le contenu est différent et séparé. Cette approche fonctionne bien lorsque vous voulez des mises à jour faciles sur tous les sites en même temps, mais que vous n'avez pas besoin de partage avancé de contenu entre les domaines.

Quand choisir Domain Access?

Domain Access est le bon choix lorsque vous avez besoin d'un partage intensif de contenu entre les domaines et que vous voulez une base d'utilisateurs partagée. Avec un grand nombre de sites similaires, Domain Access peut s'avérer être l'approche la plus efficace.

Quand choisir sans tête?

Sans tête fonctionne bien lorsque vous avez besoin d'interfaces et de frontends très différents pour les domaines individuels, ou lorsque vous prévoyez des applications mobiles ou d'autres canaux de distribution de contenu. Il est judicieux d'envisager cette approche lorsque votre équipe a de l'expérience en technologies frontend et que vous voulez exploiter ces compétences pour construire des interfaces optimisées.

Facteurs influençant la décision

Il est utile de prendre en compte plusieurs facteurs supplémentaires qui peuvent influencer votre choix d'architecture. Le budget et les ressources disponibles en sont un - sans tête nécessite le plus grand investissement en termes de temps et d'expertise. Vous gagnez en flexibilité frontend mais vous passez plus de temps à construire et à maintenir le système car vous avez plusieurs bases de code et plusieurs technologies à maintenir.

Le nombre et la diversité des domaines sont un autre facteur. Les besoins de partage de contenu, les plans de développement futurs et les exigences de performance sont tous des éléments qui doivent également être pris en compte lors de la prise de décision.

Il vaut la peine d'analyser soigneusement ces facteurs au cas par cas, car changer d'approche plus tard peut être coûteux et prendre beaucoup de temps.

Comment gérer plusieurs domaines dans Drupal - résumé

Chacune des approches discutées a ses avantages et ses inconvénients, et le choix dépend des besoins spécifiques de votre entreprise ou organisation. Multisite offre simplicité et séparation des données. Domain Access excelle dans le partage de contenu. Sans tête offre une énorme flexibilité en matière de frontend.

En pratique, les configurations hybrides sont courantes - combiner différentes approches. Par exemple, vous pouvez utiliser Domain Access pour le groupe principal de sites corporatifs liés et multisite pour des services plus indépendants. Une autre variante consiste à utiliser Domain Access pour les principaux sites corporatifs et sans tête pour les sites de produits - des services simples composés de quelques pages où le contenu est livré à partir d'un système central et le frontend est construit séparément.

Il est utile de planifier soigneusement votre architecture et de réfléchir à votre choix d'approche. Même si la décision initiale ne s'avère pas être optimale, vous pouvez la changer plus tard - passer d'une approche à une autre ou créer un hybride. Cependant, si vous pensez à l'architecture dès le début, vous économiserez du temps et de l'argent.

Besoin d'aide pour concevoir une architecture multi-domaines pour votre cas? Notre agence Drupal vous aidera à choisir et à mettre en œuvre l'approche qui correspond le mieux à vos objectifs de projet.

-