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.