
Drupal Multisite - Quand, Comment et Pourquoi. Le Guide Ultime pour Gérer Plusieurs Sites Web Drupal
Drupal peut être configuré pour desservir plusieurs sites web à partir d'une seule base de code. Une telle installation de Drupal est appelée un multisite. La capacité d'utiliser un seul Drupal pour gérer plusieurs sites web est excellente, mais nécessite aussi certaines considérations. Dans cet article, je discuterai en détail de Drupal multisite pour vous donner une compréhension approfondie et complète du fonctionnement du multisite, pourquoi il est utilisé, quand il est pertinent et quand il faut l'éviter.
Qu'est-ce qu'un Drupal multisite et comment fonctionne-t-il
Une installation Drupal multisite est une installation qui prend en charge plus d'un site web Drupal sur une seule base de code.
Un multisite est réalisé en créant un dossier distinct pour chaque site web dans le dossier /sites/ du système Drupal. Par exemple :
- /sites/website-one.com/
- /sites/website-two.com/
Chacun des dossiers de site web contient son propre fichier settings.php et se connecte à une base de données distincte. Il contient également ses propres fichiers binaires (images, téléchargements, etc.).
Lorsque une requête arrive sur le serveur, Drupal peut mapper la requête en fonction du domaine d'où elle provient à un dossier particulier et charger la base de données et la configuration appropriées (modules activés, thèmes, contenu, etc.), nous servant un site web complètement distinct.
En outre, nous pouvons contrôler quel site web peut utiliser quels modules et thèmes en les plaçant dans les dossiers corrects accessibles uniquement pour des sites particuliers.
Pour un article très détaillé sur toutes les subtilités techniques, veuillez vous référer à un article de blog sur comment Drupal fonctionne en arrière-plan.
C'est un concept relativement simple, qui nous donne un pouvoir énorme pour construire une plateforme robuste qui peut servir avec succès même des centaines de sites web à partir d'une seule base de code.
Drupal multisite vs drupal multidomaine (clarification)
Avant de discuter plus avant du Drupal multisite, nous devons d'abord clairement différencier deux approches différentes par lesquelles une installation Drupal peut servir plusieurs sites web : un multisite Drupal comparé à un multidomaine Drupal.
Dans l'approche multisite, décrite ci-dessus (et dans cet article), nous utilisons une base de code unique et créons des sites web distincts dessus. Chaque site web a sa propre base de données et contenu et en essence, tous les sites web sont complètement séparés. Ils pourraient même être hébergés sur des serveurs séparés.
Dans une approche multidomaine, nous n'utilisons pas la fonctionnalité multisite telle que décrite ci-dessus. Plutôt que cela, nous utilisons le module Domain Access pour introduire de la variabilité sur ce que fait notre site web, selon le domaine d'où provient la requête.
Dans une approche multidomaine, il n'y a qu'une base de données, mais il y a des paramètres supplémentaires en fonction du domaine. Nous pouvons contrôler de nombreuses choses, telles que :
- ce que le contenu peut être consulté,
- quels utilisateurs peuvent se connecter,
- quel thème est activé ou,
- quels blocs sont placés dans les régions.
- Nous pouvons également avoir des menus séparés et plusieurs autres choses.
Nous pouvons créer des sites web qui, pour l'utilisateur final, semblent complètement séparés, mais en multidomaine ils sont en essence un seul système qui est inséparable.
Je n'expliquerai pas ici en détail comment fonctionne le multidomaine et quels sont ses avantages et inconvénients. En règle générale :
- Si votre objectif est de réutiliser des fonctionnalités, standardiser le code et les fonctionnalités, réduire la maintenance de plusieurs sites web et lancer de nombreux sites rapidement (par exemple, par sites de marque, par sites pays, etc.) -> utilisez l'approche multisite
- Si vous souhaitez partager des utilisateurs, contenu, données, etc. entre quelques sites web, qui sont très similaires de par leur nature et d'une certaine manière liés les uns aux autres -> utilisez l'approche multidomaine
Quels sont les avantages d'une configuration multisite ?
Un Drupal multisite peut aider à construire un système standardisé qui facilitera le lancement et la gestion d'une flotte de sites web de manière efficace.
Le multisite permet de réutiliser le travail effectué pour un site web
Construisez une fonctionnalité une fois et déployez-la sur tous les sites web. C'est le saint graal du multisite. Vous réutilisez réellement du code.
Vous pourriez faire cela bien sûr sans un multisite, mais en pratique, si les sites web ne sont pas sur une seule plateforme, cela est vraiment difficile. Grâce à un multisite, une fonctionnalité construite pour un site web fonctionne avec les autres sites directement, sans modification.
Il ne s'agit pas seulement de réutilisation de fonctionnalités, cependant. Grâce à un multisite, vous pouvez capitaliser sur le mécanisme d'héritage de thèmes de Drupal. Vous pouvez construire un thème de base et ensuite créer des thèmes supplémentaires qui héritent des bases mais ajoutent des accents supplémentaires.
Cela permet d'économiser énormément de temps sur le travail frontal. Vous vous assurez que le thème de base fonctionne sur tous les appareils, et ensuite tous les thèmes enfants fonctionnent ainsi par défaut.
Le multisite réduit la quantité de code et de maintenance
Moins de code pose moins de problèmes. Si vous avez un seul système, vous avez beaucoup moins de code à gérer que si vous avez plusieurs systèmes. Cela facilite la gestion du code.
- Assurez-vous qu'il est à jour
- Examinez-le
- Maintenez un haut niveau
Si vous corrigez un bug qui affecte quelque chose (par exemple un problème de sécurité ou le fonctionnement d'un menu sur un appareil mobile), vous pouvez le déployer sur tous les sites web à la fois.
Un multisite (typiquement) réduit la dette technologique
La dette technique survient lorsque l'équipe de développement, pour livrer des résultats rapidement, fait des compromis, qui pourraient plus tard créer des problèmes en cas de mises à jour ou d'utilisation.
Travaillant dans une agence Drupal depuis plus de 10 ans, j'ai vu de nombreux sites web construits par diverses équipes travaillant dans de grandes et petites agences. Typiquement certains compromis sont faits pour respecter les délais stricts qu'un site web a généralement.
Dans l'ensemble la dette technique n'est pas une mauvaise chose, mais plutôt une décision d'affaires - livrer rapidement et refactoriser plus tard. Cela permet de faire le travail, mais il peut y avoir des effets en cascade plus tard.
Le problème de nombreux sites web est cependant que cette dette n'est jamais remboursée. Il n'y a pas de budgets pour revenir et refactoriser, réparer et améliorer une fois le site web en ligne. L'équipe passe au site web suivant, où les délais sont similaires, et ensuite au suivant. À chaque mission, une certaine dette est contractée. Finalement, l'entreprise a beaucoup de code (un code séparé pour chaque site web) et chaque code a une certaine dette.
Cette dette se manifeste alors lors des mises à jour ou des modifications du site (par exemple, un changement de marque, etc.). Soudain il s'avère que plus de temps doit être consacré aux mises à jour et modifications que prévu car le système n'est pas aussi flexible que nous le souhaiterions ou certaines choses ne fonctionnent pas comme elles le devraient. Et cela se produit un peu sur chaque site web et sur chacun d'eux sous une forme légèrement différente.
Une approche multisite supprime fréquemment ce problème.
D'abord, le fait que vous ayez moins de code réduit déjà votre dette technologique.
Deuxièmement, les systèmes multisites sont généralement livrés avec une qualité supérieure à celle des “nombreux sites web séparés”. Il y a plusieurs facteurs qui en sont la cause :
- L'entreprise peut prendre le temps de choisir le bon prestataire pour tous ses sites web alors que cela pourrait être un processus trop coûteux et complexe à réaliser sur une base pré-site web
- Les équipes de développement prennent plus de soin à créer. des solutions flexibles et durables si elles savent qu'elles ne seront pas juste pour un site web mais pour plusieurs et toute dette contractée reviendra les mordre assez rapidement.
- Il est également plus facile de vendre la nécessité d'une refactorisation à la direction si elle sera utilisée sur de nombreux sites web plutôt que sur un seul.
Pour en savoir plus sur le multisite et la dette technologique, veuillez vous référer à mon article de blog sur comment réduire la dette technologique en construisant un Drupal multisite.
Un multisite permet à l'entreprise de lancer des sites web rapidement
Ce que de nombreuses entreprises recherchent lorsqu'elles optent pour un multisite est la capacité de lancer des sites web plus rapidement et à moindre coût.
Un Drupal multisite avec un profil d'installation intégré peut permettre le lancement d'un nouveau modèle de site web en quelques heures (voire minutes), prêt à la saisie de contenu et avec un soutien limité de l'informatique.
Le profil d'installation de Drupal est un moyen de capturer beaucoup de fonctionnalités et de configurations qui ont été une fois construites dans un package installable qui peut ensuite être relancé encore et encore. Les entreprises qui nécessitent la création rapide de nombreux sites web peuvent tirer d'énormes bénéfices en utilisant l'approche multisite.
Pour en savoir plus sur les profils d'installation dans un multisite.
Un multisite réduit les coûts de maintenance
Si nous avons une seule base de code, il est moins cher de la maintenir. Dans l'article mentionné ci-dessus sur la réduction de la dette technologique j'ai fait un court calcul que si une entreprise a 50 sites web et que chacun nécessite 20 heures par mois, cela s'ajoute rapidement à 1000 heures par mois de travail juste pour la maintenance. Un multisite peut réduire cela de manière significative car de nombreuses opérations effectuées pour un site web sont automatiquement propagées à tous les autres.
Quels sont les inconvénients de l'approche multisite ?
Comme pour chaque solution, un multisite a aussi quelques éléments qui doivent être pris en compte.
C'est technologiquement plus avancé
Construire et maintenir une installation multisite réussie nécessite plus d'aptitude technique que de construire plusieurs sites Drupal complètement séparés. Il y a plus de choses qui doivent être prises en compte et plus de paramètres qui doivent être gérés. De manière générale, le système est plus complexe.
Une équipe insuffisamment expérimentée peut être ralentie par des problèmes et des soucis qui ralentiront le développement et les avantages d'un multisite pourraient ne jamais être obtenus. Choisir la bonne équipe de développement Drupal est essentiel au succès du projet. Il vaudrait mieux que l'entreprise ait une précédente expérience de Drupal multisite.
Plus de planification est nécessaire
Si vous construisez un seul site web, il est beaucoup plus facile d'itérer rapidement, de modifier et d'adapter. Si vous construisez un multisite, les demandes de modification pourraient nécessiter une plus grande refactorisation.
- Vous planifiez pour de nombreux sites web. Chaque fois que vous modifiez quelque chose, vous devez considérer comment cela aura un impact sur tous les autres sites web. Vous devez réfléchir à la façon dont vous voulez que tous les sites web fonctionnent globalement, plutôt qu'à la façon dont vous voulez que ce bandeau ou formulaire particulier fonctionne sur un site web.
- Les modifications dans un multisite nécessitent plus de refactorisation et sont plus coûteuses. Si vous avez besoin de quelque chose de nouveau ou d'un changement pour un site web, normalement vous pourriez devoir modifier le profil d'installation et écrire des mises à jour pour les sites déjà créés et en ligne. C'est un processus plus difficile que juste modifier un site web.
Les sites web devraient adhérer à une norme
Le multisite est excellent car il vous permet de réutiliser des composants construits précédemment. Cependant, c'est une arme à double tranchant. Ces composants fonctionnent comme ils le font. Pour pouvoir utiliser les composants déjà existants, vous devrez vous conformer à certaines normes que vous avez définies auparavant. Par exemple, si vous créez un workflow de publication, il serait idéal que tous les sites suivent ce workflow.
Heureusement dans Drupal, vous pouvez presque toujours modifier des choses à la base d'un site web, mais plus vous le faites, moins vous bénéficierez d'un multisite.
Quand utiliser un multisite
Nous savons maintenant comment fonctionne le multisite et quels en sont les avantages. Alors quand devriez-vous utiliser une approche multisite ?
Quand vous devez construire de nombreux sites similaires
Les organisations ont souvent besoin de construire de nombreux sites qui diffèrent principalement dans le contenu mais ont globalement les mêmes fonctionnalités et apparences ou très similaires : un site web par pays, par marque, le même type de site chaque année pour un événement ou un site par département d'université.
Quand il y a 2 sites web ou plus
Évidemment, vous ne pouvez pas avoir un multisite avec un seul site web. Ce que je veux dire cependant, c'est qu'il est logique de créer un multisite pour seulement 2 sites web. Et plus ils sont grands, plus cela a du sens de le faire.
S'ils ne sont pas sur un multisite, leurs codes différeront de plus en plus et il sera plus difficile pour une équipe de les maintenir.
Votre équipe se concentrera beaucoup mieux si elle a seulement une base de code à prendre en charge.
Quand ne pas utiliser un multisite
Un multisite est un excellent moyen de construire des systèmes de haute qualité qui peuvent ensuite contrôler de multiples sites web. Cela dit, ce n'est pas toujours une bonne idée de créer un multisite. La force d'un multisite est la réutilisabilité des choses - créer une fois, utiliser partout. C'est aussi la maintenance partagée - corriger un bug une fois - déployer sur tous les sites web. Si nous ne pouvons pas atteindre ces avantages, un multisite pourrait ne pas être la bonne approche.
Si les sites web doivent différer considérablement
Si vous devez construire des sites web qui n'ont aucun point commun, les construire sur un seul multisite ne vous apportera aucun avantage. Par exemple, si vous devez construire un site de commerce électronique, un site web marketing, un intranet et un site de réseau social qui fonctionnent et ressemblent tous différemment, vous feriez probablement mieux de les construire séparément.
Vous pourriez peut-être réutiliser certains composants mais probablement pas beaucoup et la complexité technique supplémentaire ne remboursera probablement pas.
Si des équipes séparées doivent construire les sites web
Un multisite nécessite une bonne planification et une coordination technique pour s'assurer que ce qui est construit fonctionnera sur tous les sites web. Cela est mieux réalisé s'il y a un chef technique qui peut valider les plans et accepter les livrables. Si des équipes séparées construisent des sites web en parallèle, il pourrait être difficile de coordonner pour obtenir un bon résultat.
Ceci dit, il est assez courant parmi les entreprises qui ont des centaines de sites web, de construire une plateforme multisite avec des profils d'installation et ensuite d'inviter des équipes séparées à adapter les sites web à diverses exigences (par exemple, marchés locaux).
L'équipe ne peut alors pas modifier le multisite lui-même. Elle peut seulement travailler dans un cadre limité - typiquement en ajoutant un sous-thème et des modules pour un site web particulier. Cette approche pourrait être un bon compromis si des insights locaux sont importants et si des centaines de sites web sont vraiment requis, et qu'une seule équipe ne serait pas capable de livrer dans un délai raisonnable.
Autres considérations multisite pour un multisite
Assurez-vous que votre hébergement le prend en charge
Parce qu'un multisite nécessite un mécanisme pour gérer plusieurs domaines pointant exactement où vous voulez qu'ils pointent et le mécanisme de déploiement de être exactement comme vous le souhaitez, vous devez vous assurer que votre fournisseur d'hébergement le permettra. La plupart des grands fournisseurs d'hébergement le font, mais pas tous, alors vérifiez avant de choisir.
Automatisez le déploiement
Si vous êtes sérieux au sujet de la construction d'un multisite robuste, vous devez vous assurer que vous avez de bons processus DevOps qui le soutiennent.
Parce que le déploiement de modifications sur un multisite signifie déployer des modifications sur de nombreux sites en même temps, automatiser le processus est une très bonne approche pour assurer la prévisibilité et éviter les erreurs.
Automatisez les tests
Parce que chaque changement que vous déploierez devra par défaut être déployé sur tous les sites web, vous devrez vous assurer que vous n'avez rien cassé sur aucun des sites web en ligne. S'il y a de nombreux sites web que vous gérez, le faire manuellement pourrait être très fastidieux et chronophage.
La meilleure façon de valider que les nouveaux changements ne perturbent pas la fonctionnalité d'aucun des sites web est de les tester automatiquement. De nombreux outils sont maintenant disponibles qui peuvent vous aider à tester les fonctionnalités et l'apparence des sites web même sur de nombreux navigateurs et appareils. L'automatisation garantira une haute qualité sur de longues périodes.
Résumé
Un Drupal multisite permet aux entreprises de construire de nombreux sites web sur la même base de code. C'est un excellent moyen de réduire la quantité de code et le temps nécessaire pour la maintenir. Cela peut aider les organisations à construire des sites plus rapidement et avec une qualité supérieure grâce aux profils d'installation et à la réutilisation des mêmes fonctionnalités sur de nombreux sites. Cela peut faire gagner du temps et de l'argent. D'un autre côté, cela nécessite une plus grande planification et plus de compétence technique de l'équipe d'implémentation.
Si vous devez construire et maintenir plusieurs sites web, vous devriez certainement envisager une approche multisite.