Learn how to use Drupal distributions to build a multi-site platform. A technical session by Frank Febbraro and Chris Johnson of Phase2 Technology presented at OpenGovDC on June 14, 2011.
My name is Chris Johnson, I’m a senior developer for Phase2 Technology which is a company in Alexandria Virginia that specializes in solutions for government, advocacy and publishing organizations and we currently use Drupal as a very large portion of those solutions. Today I’m going to talk about using Drupal and using Drupal distributions to create a platform for your organization’s web sites\n
Get a feel for who is in the audience,\n\nhow many of you have heard of Drupal, know what a Drupal distribution is\n
Before talking about how to put a platform together it is important to consider the different groups that a platform exists to serve. Obviously the needs of the organization that the platform is serving are considered and these are the strategic level by management. \n\nThey exist to serve the needs of the site owners and those involved in the day to day tactical operation of the site. Some other groups that may have a say in what software is assembled to create a platform and how that software operates and exists within the organization’s technology infrastructure\n\nThe first step is to decide what a platform means for your organization and what functions it has to provide and it can be important to bring these groups together and determine what they are looking for from a platform\n
So, when looking at what each group is looking for from a platform, that brings us to thinking about what a platform is. At it’s most basic level, a platform is the foundation that you build on top of. So different groups have a different view of what the platform is.\n\nNetwork/Infrastructure Operations thinks in terms of the hardware and software a site runs on, the owner of the site probably thinks of the features offered by their site as a platform for content and functionality. The organization thinks about the platform in terms of the business functions it enables, engaging customers, improving efficiency.\n\nFrom this list you can see that what a platform is can be very broad or very restrictive. Today I’ll talk about Drupal and Drupal Distributions and how they serve as platforms for single or multiple sites as well as issues to consider when putting the pieces of your platform together\n
Why use a platform at all, what does a platform get you.\n\nOne option is to custom develop or source a tool for each individual site. That isn’t very efficient, however, as it costs time in evaluating systems, training staff on each system, getting infrastructure configured to meet the needs of the system, etc.\n\nFrom an operational standpoint, having X number of sites that do things in X number of ways is not very efficient. It can make it difficult to share physical resources (.NET versus Linux stack), support overhead is greater (have to know different ways of doing things), overhead for security is greater, etc.\n
Having a consistent platform allows efficiency gains through the ability to script/automate operational tasks (administration of a unix server is much different than that of a windows server)\n\nEnvironmental consistency means allows for consistency in configuration, automation of tasks, eases setup due to familiarity with systems. Less automation to create\n\nTraining is more efficient as there is less to train on\n
Scalability in this context means the ability to set up new sites quickly and efficiently, the ability to meet increasing resource demands through a variety of mechanisms (additional hardware, layers that improve the ability to serve more requests with the same hardware (addition of a caching layers for example).\n\nAs opposed to a CMS, Platforms are also designed to handle a wider range of sites in both sizes and functionality and generally develop to the point where they have a lot of features for scaling built into them, Drupal for example has integrations with several caching technologies (akamai, memcached and the concept of caching is built into the core of the application) \n
A platform allows for faster testing through familiarity with environment, automation in testing, less code that has to be tested, etc.\n\nFrom a compliance standpoint any additional functions that have to ensure tracking, auditing, etc. only has to be written and verified once if all sites share a common platform.\n
In the past, when thinking about a website you were typically confronted with picking a point on a continuum between flexibility and efficiency. A CMS generally worked in a particular way so you could do a few things. Have a lot of different CMS systems, or a the same system but installed lots of times with different configurations, or one big system and as you made those choices you affected your flexibility and efficiency from an operational standpoint.\n\n
Because Drupal itself is a platform and not just a CMS, you have a lot of room to make things more flexible without completely abandoning efficiency.\n\nNot sure what goes in the less efficient, less flexible quadrant, we’ll just call that bad software and none of us use that\n
Since Drupal itself is a platform, why not just use it as the basis for all of my sites\n\nDrupal core is small, though some may argue not small enough. But the reality is that you likely aren’t going to find that Drupal core meets the needs for all of the functionality you want in your site.\n\n
Graphic by Kent Bye from 2007, currently over 10,000 modules that offer additional functionality for Drupal\n\nDrupal allows for expanded functionality through the use of modules which allow Drupal to be used for everything from shopping carts to forums.\n\nThat means you will need to start working your way through the contributed modules to assemble the functionality necessary to create your site. Because there are thousands of modules, it can be pretty hard to figure out where to start. Distributions help solve this problem in a few ways.\n
Distributions offer a good starting point by:\nChoosing good contributed modules for you\nInstalling good configuration for those modules\nGiving you a jump start on a site’s features and functions\n\nWe produce a distribution targeted at serving the needs of Government sites, OpenPublic. Some of the features that it comes with are\n
A media room/press center with content types set up for press releases, press kits, media contacts\n
Staff profiles for communicating information about elected and appointed officials\n
Blogs\n
Services and resource directories\n
Built in support for apps, which are bundled pieces of functionality, certified to work with open public in a very easy to download and install format. This afternoon Frank will be talking more about apps and how they work, how to create them, etc.\n
There are a lot more features in open public, find out more and give it a try at openpublicapp.com\n
Drupal is a good choice when considering a platform because the extensibility is baked into the very core of Drupal through it’s module system, which I’ll talk a little more about later. The ability to host multiple sites on a single code base is also baked into the core of drupal as well and with options through contributed modules for alternate hosting structures. Due to the extensibility of Drupal it also can work well as a glue layer to tie a variety of third party services together.\n
Drupal offers flexibility for running multiple sites on a single code base in a variety of ways. The traditional method, called multisite has independent sites/configurations but a shared code base. For sites which may want to share user bases or have a tighter sharing of content contributed modules like domain or virtual sites offer the ability to have multiple sites run out of a single database so that the same content record appears in may sites.\n\nAdministrative and other user management can play a large part in the decision of how to organize multiple sites\n
The decisions you make about how to organize sites have an impact on the tools you might use to share content between sites, but those tools exist either through the content being natively available in domain/multisite or by setting up communication between sites using the feeds module and RSS\n\n
Using Drupal to pull together best of breed other functionality\n
The ability to extend Drupal is baked into the core of drupal through its module system. For newcomers, and even experienced Drupal users, making use of functionality provided by a module can be a bit overwhelming.\n
Modules generally provide the structure necessary for storing the data and configuration for a piece of functionality but it can require some research to figure out how to configure and make use of the functionality.\n
While modules generally correspond to structure, the configuration of a module for a specific task can often be captured and shared using the features module. It helps capture dependencies, etc.\n
Apps are intended to make enabling and installing a piece of functionality for your site as easy as installing a piece of functionality for your phone.\n
What are the issues that come up when you start thinking about a central platform instead of a set of disparate sites. Because a platform is a shared environment, you start thinking about what site owners can do, what vendors or in house development teams can do, what needs does it support.\n
Talk about what site owners are allowed or not allowed to do. Talk about having a test environment and the need to capture configuration changes done in staging to code so that they aren’t “fat fingered” on deployment to production.\n
Talk about how vendors typically act as agents of site owners but when working on a centralized platform you may need to keep one vendor out of another vendor’s sandbox\n\nVersion control organization of the repository (repositories)\n
\n
Talk about the best practice of deploying configuration through code (features, update hooks, etc)\n\nHow that allows things to be tied to a version control system\n\nHow that can allow for a continuous integration system like Jenkins to be used to automatically roll out and roll back changes (tagging, jobs, etc)\n
Install profiles for setting up site with initial modules, configuration, etc.\n\nDrush make for pinning versions of modules, manifest of what you use and don’t use on your site, tracking patches that are applied\n\n[Module selection, integration of generic functionality into site specific features, how to customize modules for your site]\n