My DrupalCamp Ottawa 2014 talk.
Case Study:
Relaunching Grapevine.ca on Drupal
View the accompanying talk here: https://www.youtube.com/watch?v=nsPTp9USbt0
2. Grape Vine Case Study: DrupalCamp 2014
CASE STUDY
Relaunching Grapevine.ca on Drupal
3. Grape Vine Case Study: DrupalCamp 2014
THE OBLIGATORY “ABOUT ME” SLIDE
● I’m James King (Hi!)
● CTO Fenix Solutions Inc
● Since 2001
● Drupal since 2009
● Since 1990!
● One of Ottawa’s original Internet businesses
Dude, get on with it...
Fenix
Grape Vine
4. Grape Vine Case Study: DrupalCamp 2014
● Perl codebase. Over 10 years old
● Extremely limited administrative functions
● No CMS functions at all
● Extremely expensive media hosting
● Users could not self-manage their own listings
● Over 10,000 unique visitors a month in the busy
season
THE “BEFORE”
...back when the Spice Girls roamed the earth
5. Grape Vine Case Study: DrupalCamp 2014
● Time
● Budget
● Needed CMS
● Users/Permissions/Access to Content
● Versioning and Workflow
● Media Handling
WHY DRUPAL?
Or “why not [Insert Framework Here]?”
The Big Ones
The Other Big Ones
6. Grape Vine Case Study: DrupalCamp 2014
● How generic is your requirement?
● Does a contrib module do what you need it to
do… I mean, REALLY.
● Does the module have an module.api.inc file?
Was it meant to be extended?
● Is the module being maintained? If not, do you
have the time/inclination to step in?
● What about the UX?
CUSTOM vs CONTRIB
Cue the nerdy slap fights
7. Grape Vine Case Study: DrupalCamp 2014
● How business-specific are your requirements?
● Are you SURE there isn’t a contrib module that
does what you need?
● Have you figured out a caching strategy?
● Are you going to have to build an admin UI? Are
you going to have to integrate with Views?
● Are you prepared for the extra QA/QC?
CUSTOM vs CONTRIB
Not the face!
8. Grape Vine Case Study: DrupalCamp 2014
● Originally tried the print module
● 10 years of kruft and bizarre display logic to deal
with
● Complex multi-page layout with highly variable
content
● Converting HTML to PDF was far too limited
● Not a feature we had planned to spend so much
time on
PDF FEATURE SHEETS
Finally, some real-world examples!
9. Grape Vine Case Study: DrupalCamp 2014
● Workbench Moderation worked out really well…
until we implemented a multi-step sign-up
process (CTools Multistep Wizard)
● By design, WBM wants to create a new revision
on every node_save.
● Luckily WBM is implemented well. We were able
to set properties on node object before save so it
would save to current version.
MODERATED CONTENT
I should write a blog post about this one
10. Grape Vine Case Study: DrupalCamp 2014
● OpenLayers worked great… until we imported all
4000 listings
● Views caching made it worse. Too many unique
result sets, too many points.
● Reasonable performance limited map view to 30
points at a time
● Removed OpenLayers/Views entirely. Talked
directly to Google Maps API.
MAPPING
Yay OpenLayers! Booooo OpenLayers...
11. Grape Vine Case Study: DrupalCamp 2014
● Originally used the Statistics module
● Switched to GA API, pulls stats per listing
Sample Code: https://gist.github.com/jmk1ng/9442895
GOOGLE ANALYTICS
Something, something, NSA
12. Grape Vine Case Study: DrupalCamp 2014
● Realtors®
are very keen to mass-solicit Grape
Vine clients
● No generic solution to this very specific problem
● Can’t blindly block messages from agents as
many are legit and welcome
SPAM!
If only it were just penis pills...
13. Grape Vine Case Study: DrupalCamp 2014
● Couldn’t use Feeds or Migrate - data needed
massive cleansing
● Needed to limit downtime as much as possible
● 10 years of ad-hoc formatting to support/cleanse
Sample Code: https://gist.github.com/jmk1ng/9536525
CONTENT MIGRATION
Like a matted rescue puppy
14. Grape Vine Case Study: DrupalCamp 2014
● Single Linux VPS
● Dual core CPU
● 8GB of RAM
● APC, Memcache (97% hit rate)
● 50GB Disk
● Amazon S3 for Media, New Relic for Monitoring
HOSTING + PERFORMANCE
If at first you don’t succeed, add more RAM
15. Grape Vine Case Study: DrupalCamp 2014
✓ Workbench Moderation
✓ Geofield
✓ Geocoder
✓ Storage API
✓ Memcache
✓ Views
SUMMING IT UP
Less is often more
47 Contrib Modules
7 Custom Modules
● Grape Vine Forms
● Grape Vine Listings
● Grape Vine Alerts
● Grape Vine PDF
● Grape Vine Invoice
● Grape Vine Dashboard
● Grape Vine Data Export
× Panels
× Display Suite
× Context
× WYSIWYG
× Solr (yet)
16. Grape Vine Case Study: DrupalCamp 2014
● Multilingual listings!
● Mobile-first, responsive search experience
THE FUTURE
Faster, Better, Stronger
17. Grape Vine Case Study: DrupalCamp 2014
james@fenix-solutions.com
613-564-3344
@jmk1ng
QUESTIONS?
Before you ask: boxer-briefs