Multi-site versus Multi-installation

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Je suis parfaitement consient de l'intérêt du multi-site qui permet de partager les thèmes et modules entre plusieurs sites, mais outre ces aspect d'optimisation de code, y a-t-il une réelle différence de performance, ou de consommation de ressources machine, entre une installation unique de Drupal utilisant la fonctionnalité de multi-site, et plusieurs installations de Drupal ?

Si certains d'entre vous ont des expériences sur ce sujet, je suis preneur.

Merci beaucoup.
Jeff

Version de Drupal : 

Pour te donner le background de ma réponse, j'ai fait pendant des années tourner une dizaine drupaux en multi-site, et j'ai récemment tout migré en multi-installation.

Pour répondre à ta question, le seul gain théorique du multi-site tient au partage de la base de code et va donc de paire avec l'utilisation d'un optimisateur PHP comme APC. Si l'on n'utilise pas un tel optimisateur, ce gain passe de théoriquement intéressant à clairement nul. Je dis théoriquement car depuis que j'ai migré en multi-installation, je n'ai pas noté d'explosion notable d'occupation mémoire. En somme, si tu mutualises 100 mutli-sites, il y a des chances que ce gain soit visible, à 10, il est anecdotique.

Sinon, en terme de performance il n'y a aucune raison qui puisse impliquer de meilleures résultats en multi-site qu'en multi-installation. Chaque site disposant de son propre espace de cache et de sa propre base de donnée, le gain en ce domaine est donc nul.

Maintenant d'un point de vue pratique, sauf si les sites sont de véritables clones, la mutualisation se révère plus néfaste (à mon goût) qu'autre chose. En effet, s'il peut semble sympa de pouvoir faire évoluer de concert plusieurs sites en une seule opération, j'y ai trouvé trois contreparties majeures :

1/ Mise à part une base réellement commune de modules (CCK & co), chaque site dispose de ses spécificités qui impliquent de se taper 1000 modules dont 80% non utiles pour site donné dans une admin déjà pas très lisible et ergonomique.En multi-installation il y a certes de la redondance de mise à jour (qui se gère très bien avec une production rationnalisée de patchs) mais chaque site ne voit que ses modules. Il y a bien sur la possibilité de mettre des modules dans les dossiers site/XXX/modules mais là, se reporter au point 3 :-) Sachant en plus qu'il est parfaitement possible de placer une série de modules "vitaux" dans un gestionnaire de version et de les déployer sur plusieurs multi-installations.

2/ Lorsque l'on fait évoluer un module, il faut systématiquement tester les impactes sur tous les multi-sites, et ce même si on ne le change que pour 1 site. Donc ce qui semblait un gain de temps à l'origine, se révèle être en réalité une perte. Sachant que ce genre de chose se passe évidement dans l'urgence, on oublie généralement de tester tous les sites, et ceux sur lesquelles on travaille le moins se retrouvent en carafe par effet de bord.

3/ Le paramétrage statiques (settings.php) en multisite est un petit enfer à gérer dés lors que l'on as des joyeusetés du genre plusieurs noms de domaines pour un multi-sites donné. Ce point a été largement amélioré en Drupal 7 avec les alias de sites, mais en D6, c'est un vrai problème.

Voilà en tout cas ce je peux donner comme retour d'expérience.

Merci beaucoup Yoran,

ton retour d'expérience confirme la théorie que je me faisais de la chose.

De plus, je cherchais depuis quelques temps un tutoriel sur comment créer proprement un module et j'ai été très content de trouver ton lien en bas de message.

Déjà précisons un peu le vocabulaire. J'imagine que lorsque tu dis "base de données", tu entends "système de gestion de bases de données", c'est à dire mysql, postgresql, etc... Chacun de ces services pouvant gérer plusieurs "bases de données".

Sachant cela, il n'y a juste aucune différence entre un multi-site qui comprends deux drupaux utilisant chacun leur base, et deux drupaux-mono-site qui eux aussi utilisent chacun leur base. Dans les deux cas, le volume de requêtes à gérer par le service de base de données sera le même. A la limite on peut imaginer une différence si on utilise la même base de donnée pour deux site (via les préfixes) mais cette technique étant utilisable tant en mono qu'en multi-site, à configuration équivalent, là aussi la différence de performance ne devrait pas exister.

Merci pour ta réponse. J'ai posé ma question un peu la tête dans le guidon sans en effet prendre soin d'utiliser le bon vocabulaire.

Je suis débutant sur Drupal et je commence avec une installation multi-sites pour pouvoir gérer des sites identiques dans leurs modules et fonctions. Je suis en train de tester mon installation multi-sites en utilisant la même base de données et en préfixant les tables de chaque nouveau site. Je suis parti sur cette base en suivant bêtement le tuto sans penser que je n'avais qu'à définir une autre base au moment de l'installation d'un site.

Bref, du coup je me posais la question de la performance de ce genre d'installation (une base de données contenant toutes les tables de tous les sites) comparé à une installation (toujours multi-sites) dans laquelle, par contre, chaque site a sa base de données.

En terme de performance il n'y a pas de différence, ou alors si c'est le cas, faut changer de gestionnaire de bases ;-) En revanche, en terme de maintenance je te déconseille très fortement les préfixes, car ce sera beaucoup moins simple si tu désires à un moment ou à un autre de passer un ou tous les sites en mode mono. A ma connaissance le seul cas où les préfixes sont utilises, c'est lorsque tu es contraints par ton hébergeur à une et une seule base de données.

Bonjour Yoran,
Merci pour avoir partagé vos expériences.
Je m'informe depuis quelques jours sur le forum pour mettre en œuvre la gestion de deux sites. Et je ne suis pas très convaincue sur la bonne méthode à utiliser. J'ai bien testé le "multisite", cela semble bien fonctionner, cependant j'ai certaines raisons d'avoir des craintes pour la maintenance future... Je partage d'ailleurs votre avis sur les 3 points négatifs que vous avez soulevés.
Concernant la "multi installation" (qui me paraît plus propre et plus simple), pouvez-vous s'il vous plait me conseiller pour sa mise en œuvre (au regard de la configuration de wamp et de phpMyAdmin) ou me diriger sur un tuto.
Merci beaucoup pour votre aide.
Bien cordialement

Bonjour,

je souhaite réaliser une plateforme web qui regroupe 3 sites identiques qui ont les même module et fonctionnalités bien entendu il n'y a que le contenu qui change , je voulais savoir si je peut utiliser la même base de donnée pour les 3 sites avec des tableau différentes préfixé pour chacun ?
aussi pour la table utilisateur je veux bien avoir la même pour ces différents site car la personne qui est inscrite dans un site ne peut pas s'inscrire dans un autre.

je souhaite savoir si ceci est bien réalisable avec drupal.

Merci de votre réponses.

Bonjour,
ton argument m’interpelle car je m’apprêtais à créer un Multi sites
Par contre pourrais tu m'expliquer comment faire multi-installation
je suis sur Windows 7 et j'utilise wamp (c:/wamp/www)
dois-je utiliser plusieurs installation de wamp ou peut-on créer
www1,www2 etc.. en y installant plusieurs moteur drupal ?
Merci d'avance
palmer

J'ai la même configuration et je fais du Multi-utilisateur
il suffit de créer dans le répertoire www tes sites
ex : www.mon-premier-site.com
www.mon-second-site.fr
etc...
copier les fichier drupal dans chaqu'un de ces sites
créer avec phpmyadmin (tapez : "localhost/phpmyadmin" dans le navigateur )
une base de donnée pour chaque site
puis lancer l'installation à partir de chaque site en choisissant bien sûr
la base correspondante :
(localhost/www.mon-premier-site.com)
etc...
Vive Drupal 7.2