Many things sound like great ideas. Not all of them are in practice.
As open source becomes more and more popular, we see organizations rolling out many sites across their organization. As they try to manage them, many of them turn to "multisite" networks.
In short, a "multisite" allows you to run many sites from a single codebase. The idea is that you can update the codebase once and automatically apply those changes to all your site. In theory, it's a great idea. In practice, it often causes more problems than it solves.
In this blog post, I'll explain why you should think very carefully before setting up a multisite network. No matter what software you use, there are often better alternatives.
This post was on my mind for a while, but I was inspired to write it after watching the video of Mika Epstein at WordCamp San Francisco.
Her presentation was entitled: "Don’t Use WordPress Multisite"
The title of Mika's presentation was tongue-in-cheek, but she gave a long list of reasons to think twice about using WordPress multisites:
User management is hard:
- Logged in users are logged in for all sites
- User profiles are the same for all sites
- Access control levels become inflexible
- MultiSite doesn’t let you let your users install themes and plugins
- Restricting plugins to certain sites is tough
Sharing isn't hard:
- Some features such as widgets don't work with multisites
- Some major plugins like BuddyPress don't work with multisites
- Changes to theme files are changed for all sites
Breaking up is hard to do:
- Once a site is in multisite network, it's not easy to extract
The best explanation of the problem with Drupal multisites was written by Pantheon. They outline several downsides including the fact that multisite networks use a single codebase and produce a single point of failure.
There's the problem of traffic:
"The most obvious problem of running a lot of sites on one codebase is that any one of them could face a traffic spike, and negatively impact all the others. If you're looking to serve a large volume of sites, the risk becomes non-trivial that one site's "best day ever" is the other 99's worst."
There's the problem of one mistake cascading across the sites:
"One syntax error, and all the sites go down."
And updating becomes painful also:
"It's never really safe to update the code "underneath" a Drupal site without running update.php, and it's also infeasible to run update.php simultaneously across a large number of sites. There's also the reality that some upgrades may not go smoothly. It's up to you to figure out how you want to deal with this, and the results are often... messy."
Because of these problems, the Drupal community has developed a more sophisticated alternative to default multisites called Aegir: http://www.aegirproject.org. Essentially, Aegir is a multisite management system built in Drupal for Drupal. It allows you to use multiple codebases and deploy across multiple servers. Aegir works well, but still can't avoid:
"the intrinsic limitations of multisite: platform fragmentation. If you have non-trivial divergence in code or in deep configuration between sites, you will inevitably encounter a situation where the upgrade path forks — most sites will work one way, but others have different requirements."
Joomla is the only one of these three CMSs that doesn't have multisites as a core feature.
It does have a fairly reliable extension called, logically, Multi Sites. It works in a similar manner to Aegir and WordPress multisites with a single master installation controlling slave sites.
Alternatives to Multisites?
Don't get me wrong, multisites is a viable option for some use cases. My point in this blog is that those use cases are far rarer than people realize.
What are the alternatives in Drupal? Larry Garfield at Palantir has a good breakdown of the available options:
"Drupal has several different options available for users looking to run a series of Drupal sites together, each with its own trade-offs"
All in all, he outlines 7 different ways that you can manage many Drupal sites. Larry didn't even mention the multisite tools provided by companies such as Acquia and Pantheon. In short, the default multisite option is just one of many possible paths.
In WordPress, there are some powerful tools for managing many sites. ManageWP, WPRemote, InfiniteWP. These allow you to control all of the sites from a single dashboard and to do so more effectively than with a default multisite setup. Rebecca Markowitz at WPGararge has a comparison between these three services.
Over to You
Have you used a multisite network? Was it worth the effort? Do you have any advice for others who need to manage many sites?