Drupal Downunder 2011
I had the privilege of attending Druapl Downunder 2011 with some of my colleagues (@geoffmallo and @duncm) from Real World Technology Solutions. It was a fantastic opportunity to meet with some fellow Drupal users, chat about doing business with Drupal and get some "pro tips" for making Drupal sites sing.
Probably the biggest thing I took away from the weekend was that performance is not only "not optional" it is also attainable. I think I had become lazy with how slow my sites performed - I had assumed that big performance goals were for sites with big dollars, several servers and multiple database backends. Recent experiences with Cloud based hosting environments have also not helped my view of these things.
While this is definitely true, there are plenty of big sites out there running on just two servers - a front end web server and a back end web server. And it turns out that it's not that hard to do. Tools like Pressflow have some out of the box optimisations for Drupal. Things like APC help with the performance of the PHP code on the site. But probably the biggest tool is caching.
Caching - the hidden weapon
I guess that I have had bad experiences with caching in the past. I don't think I've ever really found it to make a "huge" difference to my site. Sure, everyone knows that you need to turn on caching with Drupal to get the most out of your site. But it's never seemed to make a big difference.
But caching does make a difference. It can significantly reduce render times and significantly reduce database queries, all resulting in a much faster response time from your site. In some random tests I did, merely caching the output of a script on a page could improve the load time by as much as 25 seconds on a complex page. Of course, it's not all that easy. Not everything can be cached - and any page request that has to go back to the Drupal engine will still likely be slow.
Enter Varnish. It turns out that Varnish (and around 30 other tools that do a very similar thing) can, when tuned carefully offer a very significant boost to a sites performance. I haven't had a chance to play with this yet, but I can quite easily begin to see how Varnish could offer some very significant performance improvements to sites like www.stonebridgecomputing.com.au where most of the pages are static and rarely change.
MySQL optimisation
I've done a fair bit of work with MySQL in the past, and have spent a fair amount of time working to tune the performance of my database servers. Scripts like MySQLTuner.pl can offer a good set of tips for improving the base line configuration of your MySQL instance. But I don't think I've quite ever understood the relative performance implications of InnoDB over MyISAM. I also haven't been taking into account the fact that Linux uses free RAM as it's disk I/O buffer. As a result, I have at least two database servers running with MyISAM tables, tuned to use all the available RAM, to the point that the server probably has no working Disk I/O room.
As an aside, I also got introduced to MariaDB - a binary-compatible version of MySQL with a very very nice features. One of these is the OQGraph storage engine which makes tree like database structures fast and easy in SQL. This provides some really interesting possibilities, particularly with large scale hierarchical menu structures, or social networking sites - both of these are of particular interest to me for projects RWTS is working on at the moment.
Big sites... fast
I've often worked on large projects in a small amount of time, helping people push large projects out the door in relatively too little time. One of the exciting things about Drupal Downunder was seeing that in fact I'm not the only person who has pushed out some very large sites very quickly. Of particular note was seeing the sites that have been put together in support of the Queensland Floods - at least 3 separate sites were represented at #ddu2011. These were built realtime around the flood disaster, and provided support for thousands of people affected by the floods.
The "shoulders of Giants"
Probably the greatest highlight was the opportunity to spend some time learning from some real Giants of the Drupal industry. People like Dries Buytaert, Josh Koenig, Allie Micka and Josh Whali. These guys are legends in the Drupal Community and have contributed much of their time, energy and effort to the project - and learning from them, and seeing their passion for openness and growth of the Drupal platform - as well as a firm belief about what it can achieve was simply inspiring.
I'm looking forward to what the next 12 months are going to hold for my Drupal Development, and I hope to find opportunities to share, support and contribute back to the Drupal community as well.
Oh... and I should add that this is the first post I've made on my blog under Drupal 7 (well... in fact under Drupal at all!)
