TRY 2012: Drupal for Libraries at UTL

Just a warning that some of this gets fairly technical, especially with hardware setup, and without the related diagrams, it may be difficult to understand, but the basics are there.

Presenters

  • Marc Lalond
  • Andrew McAlorum
  • Graham Stewart

Evolution of the UTL Website

  • recognized need for CMS back in 2003
  • 2005 – used Plone
  • 2008 – had to move frontpage out of CMS, which meant more maintenance
  • 2010 – took another look at new CMS since current CMS needed a lot of Python knowledge and decided on Drupal
  • 2011 – launched new site in Drupal

Drupal

  • little coding work
  • modules (much like WordPress plugins) that are available
  • steep learning curve, but coding not necessary

Drupal Related Additions

  • Drupal Commons – community distribution, pre-configured package
  • Islandora – digital asset management, Fedora database backend
  • Solr – well integrated into Drupal, especially for faceted searching

Implementation

  • multi-site drupal allows multiple instances
  • especially useful for simpler sites with little custom code and modules that are updated
  • built custom Drupal distribution for UTL with all modules, theme, settings
  • theme built on LayoutStudio starter theme
  • next: responsive version

Training

  • regularly schedule training, about once a month
  • covers setup and config, users, content, etc.

Performance

  • 2000 visits per hour
  • single page load = 279 MySQL queries
  • initial loads for 2000 page loads = 558,000 MySQL queries
  • Drupal on one box: User <-> Apache Web Services <-> PHP <-> MySQL
  • problem occurs when there is a bottle neck with a single point of failure
  • Solution: horizontal scaling with multiple servers with Drupal functions split into smaller boxes
    • very flexible
    • less expensive
    • more adaptive
    • fully redundant

Setup

  • individual servers are virtual machines, buil using KVM virtualization with Ubuntu Linux
  • High availability with Keepalived
  • Load balancing with HAProxy
  • Caching using Varnish and XCache
  • Storage on shared high performance disk
  • MySQL query caching with Memcached and Keepalived
  • MySQL master/slave replication + Keepalived

Results

  • 5 minute downtime (planned and unplanned) between Sept 2011 and April 2012
  • load time = < 2s on campus, 4.1 on simulated DSL in Virginia
  • 100% Open Source

As I posted on twitter, I’m quite glad we don’t take care of our own hardware, especially since we just don’t have the people and resources (including not having any server admin), but I was quite impressed with the setup of the UTL Drupal setup. Quite interesting to hear what they’re doing.